{ "openapi": "3.1.0", "info": { "title": "FMU Settings API", "version": "0.1.0" }, "paths": { "/api/v1/project/": { "get": { "tags": [ "project" ], "summary": "Returns the paths and configuration of the nearest project .fmu directory", "description": "If a project is not already attached to the session id it will be\nattached after a call to this route. If one is already attached this\nroute will return data for the project .fmu directory again.", "operationId": "project-get_project", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FMUProject" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } }, "post": { "tags": [ "project" ], "summary": "Returns the path and configuration of the project .fmu directory at 'path'", "description": "Used for when a user selects a project .fmu directory in a directory not\nfound above the user's current working directory. Will overwrite the\nproject .fmu directory attached to a session if one exists. If not, it is\nadded to the session.", "operationId": "project-post_project", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FMUDirPath" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FMUProject" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "409": { "description": "\nA project .fmu directory already exist at a given location, or may\npossibly not be a directory, i.e. it may be a .fmu file.\n", "content": { "application/json": { "example": { "examples": [ { "detail": ".fmu exists at {path} but is not a directory" }, { "detail": ".fmu already exists at {path}" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } }, "delete": { "tags": [ "project" ], "summary": "Removes a project .fmu directory from a session", "description": "This route simply removes (closes) a project .fmu directory from a session.\nThis has no other side effects on the session.", "operationId": "project-delete_project_session", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/global_config_status": { "get": { "tags": [ "project" ], "summary": "Checks if a valid global config exists at the default location.", "description": "Checks the global config at the default project location. If the global config\ndoes not validate, or is not found, a failed status code is returned.", "operationId": "project-get_global_config_status", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ok" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "404": { "description": "\nThe global config file was not found at a given location.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No file exists at path {global_config_path}." } ] } } } }, "409": { "description": "\nThe project .fmu config already contains masterdata.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "A config file with masterdata already exists in .fmu at {fmu_dir.config.path}." } ] } } } }, "422": { "description": "\nThe global config file did not validate against the\nGlobalConfiguration Pydantic model.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "{A dict with 'message' and 'validation_errors'" } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/init": { "post": { "tags": [ "project" ], "summary": "Initializes a project .fmu directory at 'path' and returns its paths and configuration", "description": "If a project .fmu directory is already attached to the session, this will\nswitch to use the newly created .fmu directory.", "operationId": "project-post_init_project", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FMUDirPath" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FMUProject" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "409": { "description": "\nA project .fmu directory already exist at a given location, or may\npossibly not be a directory, i.e. it may be a .fmu file.\n", "content": { "application/json": { "example": { "examples": [ { "detail": ".fmu exists at {path} but is not a directory" }, { "detail": ".fmu already exists at {path}" } ] } } } }, "422": { "description": "The requested path exists but is not a valid FMU project root.", "content": { "application/json": { "example": { "examples": [ { "detail": "Failed initializing .fmu directory. Initialize it from a project root containing 'ert'. Did not find: {missing_project_dirs}." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/global_config": { "post": { "tags": [ "project" ], "summary": "Loads the global config into the project masterdata.", "description": "Loads the global config into the project masterdata. If the global config does\nnot validate, or is not found, a failed status code is returned. The endpoint\ntakes an optional parameter, `path` as input: This should be given as a relative\npath, relative to the project root. If provided, the global config is searched\nfor at this path. If not, the default project path will be used.", "operationId": "project-post_global_config", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/GlobalConfigPath" }, { "type": "null" } ], "title": "Path" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "404": { "description": "\nThe global config file was not found at a given location.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No file exists at path {global_config_path}." } ] } } } }, "409": { "description": "\nThe project .fmu config already contains masterdata.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "A config file with masterdata already exists in .fmu at {fmu_dir.config.path}." } ] } } } }, "422": { "description": "\nThe global config file did not validate against the\nGlobalConfiguration Pydantic model.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "{A dict with 'message' and 'validation_errors'" } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/lock_acquire": { "post": { "tags": [ "project" ], "summary": "Attempts to acquire the project lock for editing", "description": "Tries to upgrade the project session from read-only to editable by acquiring\nthe project lock. If the lock cannot be acquired the project remains read-only\nand the last lock acquire error is recorded in the session.", "operationId": "project-post_lock_acquire", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/lock_release": { "post": { "tags": [ "project" ], "summary": "Attempts to release the project lock", "description": "Tries to release the project lock for the current session.\nIf the lock is not currently held, the route returns an informational message.", "operationId": "project-post_lock_release", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/lock_refresh": { "post": { "tags": [ "project" ], "summary": "Refreshes the project lock timeout", "description": "Explicitly refreshes the project lock timeout if the current session\nholds the lock. This should be called when the user actively indicates they\nwant to continue editing (e.g., pressing an 'Edit' button in the GUI).\n\nReturns a message indicating whether the lock was successfully refreshed.", "operationId": "project-post_lock_refresh", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/lock_status": { "get": { "tags": [ "project" ], "summary": "Returns the lock status and lock file contents", "description": "Returns information about the project lock including whether the current\nsession holds the lock and the contents of the lock file if it exists.\nThis is useful for debugging lock conflicts and showing users who has\nthe project locked.", "operationId": "project-get_lock_status", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LockStatus" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/masterdata": { "patch": { "tags": [ "project" ], "summary": "Saves SMDA masterdata to the project .fmu directory", "description": "Saves masterdata from SMDA to the project .fmu directory.\nIf existing masterdata is present, it will be updated with the new masterdata.", "operationId": "project-patch_masterdata", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Smda" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/associated_fields": { "patch": { "tags": [ "project" ], "summary": "Saves associated SMDA fields to the project .fmu directory", "description": "Saves associated SMDA fields to the project .fmu directory.\nAssociated fields are used to find SMDA wellbores. They are not part\nof the project masterdata. Existing associated fields are replaced.", "operationId": "project-patch_associated_fields", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FieldItem" }, "title": "Associated Fields" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/validate/masterdata/smda": { "post": { "tags": [ "project" ], "summary": "Validates project masterdata against SMDA", "description": "Validates the saved project SMDA masterdata against current SMDA data.\nIf validation succeeds, validation metadata is updated in the project\nconfig. If validation fails, no validation metadata is written.", "operationId": "project-post_validate_masterdata_smda", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Project masterdata is missing or does not match SMDA", "content": { "application/json": { "example": { "examples": [ { "detail": "Project masterdata must be set before validating against SMDA." }, { "detail": { "message": "Project masterdata does not match SMDA", "mismatches": [ { "key": "masterdata.smda.field", "saved_value": [ { "identifier": "OLD_FIELD", "uuid": "15ce3b84-766f-4c93-9050-b154861f9100" } ], "source_value": [ { "identifier": "NEW_FIELD", "uuid": "15ce3b84-766f-4c93-9050-b154861f9100" } ], "message": "Project config masterdata 'field' is not present in current SMDA data" } ] } } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "SMDA returns a malformed response", "content": { "application/json": { "example": { "examples": [ { "detail": "Malformed response from SMDA: {error}" } ] } } } }, "503": { "description": "An API call to SMDA times out or fails", "content": { "application/json": { "example": { "examples": [ { "detail": "SMDA API request timed out. Please try again." }, { "detail": "SMDA error requesting {url}" } ] } } } } } } }, "/api/v1/project/model": { "patch": { "tags": [ "project" ], "summary": "Saves model data to the project .fmu directory", "description": "Saves model data to the project .fmu directory.\nIf existing model data is present, it will be replaced by the new\nmodel data.", "operationId": "project-patch_model", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Model" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/access": { "patch": { "tags": [ "project" ], "summary": "Saves access data to the project .fmu directory", "description": "Saves access data to the project .fmu directory.\nIf existing access data is present, it will be replaced by the new\naccess data.", "operationId": "project-patch_access", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Access" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/cache_max_revisions": { "patch": { "tags": [ "project" ], "summary": "Saves cache max revisions to the project .fmu directory", "description": "Saves the maximum number of cache revisions to keep per resource in the\nproject .fmu configuration.", "operationId": "project-patch_cache_max_revisions", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CacheRetention" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/rms_projects": { "get": { "tags": [ "project" ], "summary": "Gets the paths of RMS projects in this project directory", "description": "Returns a list of paths to RMS projects found in the current project directory.", "operationId": "project-get_rms_projects", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RmsProjectPathsResult" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/rms": { "patch": { "tags": [ "project" ], "summary": "Saves the RMS project path and version in the project .fmu directory", "description": "Saves the RMS project path and version to the project .fmu directory.\nThe RMS version is set automatically based on the provided RMS project path.\nIf existing RMS project path and version are present, they will be\nreplaced by the new RMS project path and version.", "operationId": "project-patch_rms", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RmsProjectPath" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "400": { "description": "The RMS version in the project is not supported", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS version error for project at '{path}': {error}" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/rms/coordinate_system": { "patch": { "tags": [ "project" ], "summary": "Saves the RMS coordinate system in the project .fmu directory", "description": "Saves the RMS coordinate system to the project .fmu directory.\nRequires that the RMS project path has been set first via PATCH /project/rms.\nIf an existing coordinate system is present, it will be replaced.", "operationId": "project-patch_rms_coordinate_system", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RmsCoordinateSystem" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "\nRMS project path must be set before updating RMS fields.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path must be set before updating RMS fields. Use PATCH /project/rms first." } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/rms/stratigraphic_framework": { "patch": { "tags": [ "project" ], "summary": "Saves the RMS stratigraphic framework in the project .fmu directory", "description": "Saves the RMS stratigraphic framework (zones and horizons) to the project\n.fmu directory. Requires that the RMS project path has been set first via\nPATCH /project/rms. If existing zones or horizons are present, they will\nbe replaced.", "operationId": "project-patch_rms_stratigraphic_framework", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RmsStratigraphicFramework" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "\nThe RMS stratigraphic framework did not validate.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Validation error: RMS zones reference horizons not present in request: {horizon_names}" } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/rms/wells": { "patch": { "tags": [ "project" ], "summary": "Saves the RMS wells in the project .fmu directory", "description": "Saves the RMS wells to the project .fmu directory.\nRequires that the RMS project path has been set first via PATCH /project/rms.\nIf existing wells are present, they will be replaced.", "operationId": "project-patch_rms_wells", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RmsWell" }, "title": "Wells" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "\nRMS project path must be set before updating RMS fields.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path must be set before updating RMS fields. Use PATCH /project/rms first." } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/cache": { "get": { "tags": [ "project" ], "summary": "List cache revisions", "description": "Returns a list of revision filenames for the resource specified by the\n`resource` query parameter. The filenames are used with\nGET /cache/{revision_id}.", "operationId": "project-get_cache", "parameters": [ { "name": "resource", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/CacheResource" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CacheList" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/cache/{revision_id}": { "get": { "tags": [ "project" ], "summary": "Get cache revision content", "description": "Retrieve the content of a specific cache revision.\n\nThe revision_id should be a filename from the list returned by GET /cache\n(e.g., 20260112T143045.123456Z-a1b2c3d4.json).\n\nThe `resource` query parameter selects which resource cache to read.\n\nReturns the parsed JSON content from the cached file in the `data` field.", "operationId": "project-get_cache_revision", "parameters": [ { "name": "revision_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Revision Id" } }, { "name": "resource", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/CacheResource" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CacheContent" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "Cache revision not found for the specified resource", "content": { "application/json": { "example": { "examples": [ { "detail": "Cache revision {revision_id} not found for resource {resource}" } ] } } } }, "422": { "description": "Cache revision failed validation or not supported for the specified resource", "content": { "application/json": { "example": { "examples": [ { "detail": "Resource {relative_path} is not supported for cache operations" }, { "detail": "Invalid cached content for {resource}: {error}" } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/cache/diff/{revision_id}": { "get": { "tags": [ "project" ], "summary": "Get diff between current resource and cache revision", "description": "Compare a resource file in the current project with a cached revision.\n\nThe `resource` query parameter selects which resource to diff.\nThe response is a list of changes keyed by `field_path`.", "operationId": "project-get_cache_diff", "parameters": [ { "name": "revision_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Revision Id" } }, { "name": "resource", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/CacheResource" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "anyOf": [ { "$ref": "#/components/schemas/ScalarFieldDiff" }, { "$ref": "#/components/schemas/ListFieldDiff" } ] }, "title": "Response Project-Get Cache Diff" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "Cache revision not found for the specified resource", "content": { "application/json": { "example": { "examples": [ { "detail": "Cache revision {revision_id} not found for resource {resource}" } ] } } } }, "422": { "description": "Cache revision failed validation or not supported for the specified resource", "content": { "application/json": { "example": { "examples": [ { "detail": "Resource {relative_path} is not supported for cache operations" }, { "detail": "Invalid cached content for {resource}: {error}" } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/cache/restore/{revision_id}": { "post": { "tags": [ "project" ], "summary": "Restore a resource from a cache revision", "description": "Restore a resource from a cache revision (overwrites current resource).\n\nThe current resource state is cached before overwriting (when present).\n\nThe `resource` query parameter selects which resource to restore.\n\n**Example flow:**\n\n1. Current resource is in state A\n2. Call restore with a revision from state B\n3. Your current state A is cached (when present)\n4. Resource is now in state B\n5. To undo: restore from the newly created cache entry (your state A backup)", "operationId": "project-post_cache_restore", "parameters": [ { "name": "revision_id", "in": "path", "required": true, "schema": { "type": "string", "title": "Revision Id" } }, { "name": "resource", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/CacheResource" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "Cache revision not found for the specified resource", "content": { "application/json": { "example": { "examples": [ { "detail": "Cache revision {revision_id} not found for resource {resource}" } ] } } } }, "422": { "description": "Cache revision failed validation or not supported for the specified resource", "content": { "application/json": { "example": { "examples": [ { "detail": "Resource {relative_path} is not supported for cache operations" }, { "detail": "Invalid cached content for {resource}: {error}" } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/restore/check": { "get": { "tags": [ "project" ], "summary": "Checks which missing project .fmu resources can be restored", "description": "Lists recoverable missing project .fmu content from in-memory state.", "operationId": "project-get_restore_check", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestorableFilesResponse" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/restore": { "post": { "tags": [ "project" ], "summary": "Restores missing project .fmu resources for the current session", "description": "Attempts to recover missing project .fmu content from in-memory state.", "operationId": "project-post_restore", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestorableFilesResponse" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/mappings/{mapping_type}/{source_system}": { "get": { "tags": [ "project" ], "summary": "Returns internal mappings for a specific mapping type and source system.", "description": "Retrieves internal mappings for the specified mapping_type and source_system\nfrom the project's .fmu directory.\n\nExample: GET /project/mappings/stratigraphy/rms returns the\ninternal stratigraphy mappings whose source system is RMS.", "operationId": "project-get_mappings", "parameters": [ { "name": "mapping_type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/MappingType" } }, { "name": "source_system", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/DataSystem" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Mappings for the requested mapping type.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalMappings" }, "example": { "stratigraphy": [ { "source_system": "rms", "target_system": "rms", "mapping_type": "stratigraphy", "relation_type": "primary", "source_id": "TopVolantis", "target_id": "TopVolantis" }, { "source_system": "rms", "target_system": "rms", "mapping_type": "stratigraphy", "relation_type": "alias", "source_id": "TOP_VOLANTIS", "target_id": "TopVolantis" }, { "source_system": "rms", "target_system": "smda", "mapping_type": "stratigraphy", "relation_type": "primary", "source_id": "TopVolantis", "target_id": "VOLANTIS GP. Top", "target_uuid": "3fa85f64-5717-4562-b3fc-2c963f66af10" } ], "wellbore": [] } } } }, "400": { "description": "Invalid mapping data or unsupported mapping type", "content": { "application/json": { "example": { "examples": [ { "detail": "Mapping type '{mapping_type}' is not yet supported" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No .fmu directory found from {path}" }, { "detail": "No .fmu directory found at {path}" }, { "detail": "Path {path} does not exist" }, { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "\nMappings resource contains invalid content or corrupted JSON.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Invalid mappings in existing file: {error_message}" }, { "detail": "Mappings could not be loaded because the project contains invalid saved mappings." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } }, "put": { "tags": [ "project" ], "summary": "Updates internal mappings for a specific mapping type and source system", "description": "Replaces internal mappings for the specified mapping_type and source system in\nthe project's .fmu directory.\n\nThe request body should contain the internal mappings collection for the\nspecified source system.\n\nExample: PUT /project/mappings/stratigraphy/rms replaces the stored\ninternal stratigraphy mappings whose source system is RMS.", "operationId": "project-put_mappings", "parameters": [ { "name": "mapping_type", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/MappingType" } }, { "name": "source_system", "in": "path", "required": true, "schema": { "$ref": "#/components/schemas/DataSystem" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "400": { "description": "Invalid mapping data or unsupported mapping type", "content": { "application/json": { "example": { "examples": [ { "detail": "Mapping type '{mapping_type}' is not yet supported" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "Project mappings could not be updated because the project path was missing", "content": { "application/json": { "example": { "examples": [ { "detail": "Project .fmu directory not found. It may have been deleted." } ] } } } }, "422": { "description": "\nMappings resource contains invalid content or corrupted JSON.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Invalid mappings in existing file: {error_message}" }, { "detail": "Mappings were not updated because the project contains invalid saved mappings." }, { "detail": "Invalid mappings: {error_message}" } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } }, "requestBody": { "required": true, "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/InternalStratigraphyMappings" }, { "$ref": "#/components/schemas/InternalWellboreMappings" } ] } } } } } }, "/api/v1/project/mappings/import/rms_eclipse_csv": { "post": { "tags": [ "project" ], "summary": "Imports RMS-to-simulator wellbore mappings from rms_eclipse.csv.", "description": "Reads an rms_eclipse.csv-format file from the project and returns the\nimported RMS-to-simulator mappings in the internal wellbore mapping format.\nThe path is relative to the project root. If no path is provided, the default\npath relative to the project root is\nrms/input/well_modelling/well_info/rms_eclipse.csv.", "operationId": "project-post_mappings_import_rms_eclipse_csv", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/RmsSimulatorMappingImportRequest" }, { "type": "null" } ], "title": "Import Request" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InternalMappings" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The RMS-to-simulator wellbore mapping file could not be read", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied accessing .fmu at {path}" } ] } } } }, "404": { "description": "The RMS-to-simulator wellbore mapping file could not be found", "content": { "application/json": { "example": { "examples": [ { "detail": "CSV file not found: '{path}'" } ] } } } }, "422": { "description": "The RMS-to-simulator wellbore mapping file contains invalid content", "content": { "application/json": { "example": { "examples": [ { "detail": "CSV file is missing required columns: {column_names}" }, { "detail": "CSV row has missing well mapping values at line {line_number}" }, { "detail": "Invalid mappings: {error_message}" } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/mappings/export/rms_simulator_renaming_table": { "post": { "tags": [ "project" ], "summary": "Exports RMS-to-simulator wellbore mappings to a renaming table.", "description": "Reads RMS-to-simulator wellbore mappings from mappings.json and writes them\nto an rms_simulator renaming-table file. The path is relative to the project\nroot. If no path is provided, the default path relative to the project root is\nrms/input/well_modelling/well_info/rms_simulator.renaming_table.", "operationId": "project-post_mappings_export_rms_simulator_renaming_table", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/RmsSimulatorMappingExportRequest" }, { "type": "null" } ], "title": "Export Request" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The RMS-to-simulator wellbore mapping file could not be written", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied while trying to export the mappings." } ] } } } }, "404": { "description": "The saved project mappings could not be found", "content": { "application/json": { "example": { "examples": [ { "detail": "Mappings file not found" } ] } } } }, "409": { "description": "The export file already exists and overwrite was not authorized", "content": { "application/json": { "example": { "examples": [ { "detail": "Export file already exists: '{path}'" } ] } } } }, "422": { "description": "\nThe export path or saved mappings are invalid, or no mappings can\nbe exported.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Cannot export mappings to a directory. Select a file path: '{path}'" }, { "detail": "Cannot export mappings because part of the folder path is a file. Select a valid file path: '{path}'" }, { "detail": "Invalid mappings in existing file: {error_message}" }, { "detail": "Mappings were not exported because the project contains invalid saved mappings." }, { "detail": "No rms-to-simulator primary wellbore mappings available to export as rms_simulator.renaming_table" } ] } } } }, "423": { "description": "\nThe project is locked by another process and cannot be modified.\nThe project can still be read but write operations are blocked.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Project lock conflict: {error_message}" }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/project/changelog": { "get": { "tags": [ "project" ], "summary": "Returns changelog for the project.", "description": "Retrieves changelog from the project's .fmu directory.", "operationId": "project-get_changelog", "parameters": [ { "name": "change_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/ChangeType" }, { "type": "null" } ], "title": "Change Type" } }, { "name": "max_entries", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "integer", "minimum": 1 }, { "type": "null" } ], "title": "Max Entries" } }, { "name": "field_name", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Field Name" } }, { "name": "filter_value", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Filter Value" } }, { "name": "filter_type", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/FilterType" }, { "type": "null" } ], "title": "Filter Type" } }, { "name": "operator", "in": "query", "required": false, "schema": { "anyOf": [ { "enum": [ ">", ">=", "<", "<=", "==", "!=" ], "type": "string" }, { "type": "null" } ], "title": "Operator" } }, { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Log_ChangeInfo_" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied locating .fmu" }, { "detail": "Permission denied accessing .fmu at {path}" }, { "detail": "Permission denied creating .fmu at {path}" } ] } } } }, "404": { "description": "Changelog file not found", "content": { "application/json": { "example": { "examples": [ { "detail": "No changelog file found at {path}" } ] } } } }, "422": { "description": "Invalid changelog data or query parameters", "content": { "application/json": { "example": { "examples": [ { "detail": "Invalid changelog format or data at {path}: {error}" }, { "detail": "Invalid or corrupt JSON at {path}: {error}" }, { "detail": "Changelog filtering requires all of the generic log filtering fields: field_name, filter_value, filter_type, operator." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/user/": { "get": { "tags": [ "user" ], "summary": "Returns the user .fmu configuration", "description": "The user configuration can store API subscription keys or tokens. These are\nobfuscated as '**********' when returned.", "operationId": "user-get_user", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserConfig" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied loading user .fmu config at {config.path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "User .fmu config at {config.path} does not exist" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/user/api_key": { "patch": { "tags": [ "user" ], "summary": "Saves an API key/token to the user .fmu configuration", "description": "Currently only known API's can be saved to the user .fmu configuration.\nArbitrary API key-value pairs cannot be saved. The currently known APIs are:\n\nsmda_subscription", "operationId": "user-patch_api_key", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/APIKeyWritable" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "400": { "description": "\nOccurs when trying to save a key to an unknown API. An API is unknown\nif it is not a predefined field in the fmu-settings UserAPIKeys model.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "API id {api_key.id} is not known or supported" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The OS returned a permissions error while locating or creating .fmu", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied loading user .fmu config at {config.path}" } ] } } } }, "404": { "description": "\nThe .fmu directory was unable to be found at or above a given path, or\nthe requested path to create a project .fmu directory at does not exist.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "User .fmu config at {config.path} does not exist" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/session/": { "post": { "tags": [ "session" ], "summary": "Creates a new user session.", "description": "When creating a session the application will ensure that the user\n.fmu directory exists by creating it if it does not.\n\nIf a valid session already exists when POSTing to this route, the\nexisting session will be renewed with a new expiry date and a new\nsession cookie value.\n\nAfter creating the session, the application will attempt to find the\nnearest project .fmu directory above the current working directory and\nadd it to the session if found. If not found, no project will be\nassociated. Renewing an existing session keeps its current state.\n\nThe session cookie set by this route is required for all other\nroutes. Sessions are not persisted when the API is shut down.", "operationId": "session-post_session", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionResponse" } } } }, "401": { "description": "\nOccurs when no token or an invalid token is or is not provided\nwith the x-fmu-settings-api header.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Not authenticated" }, { "detail": "Not authorized" } ] } } } }, "403": { "description": "\nWill occur if the operating system claims the user does not have\npermission to create $HOME/.fmu. If returned something very wrong\nis happening.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied creating user .fmu" } ] } } } }, "409": { "description": "\nOccurs when trying to create a user .fmu directory, but it already\nexists. Typically means that .fmu exists as a file.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "User .fmu already exists but is invalid (i.e. is not a directory)" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "{string content of exception}" } ] } } } } } }, "get": { "tags": [ "session" ], "summary": "Fetches the current session state", "description": "Retrieves the latest session metadata.", "operationId": "session-get_session", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SessionResponse" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/session/access_token": { "patch": { "tags": [ "session" ], "summary": "Adds a known access token to the session", "description": "This route should be used to add a scoped access token to the current\nsession. The token applied via this route is typically a dependency for\nother routes.", "operationId": "session-patch_access_token", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessTokenWritable" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "400": { "description": "\nOccurs when trying to save a key to an unknown access scope. An\naccess scope/token is unknown if it is not a predefined field in the\nthe session manager's 'AccessTokens' model.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Access token id {access_token.id} is not known or supported" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/session/restore/check": { "get": { "tags": [ "session" ], "summary": "Checks which missing user .fmu resources can be restored", "description": "Lists recoverable missing user .fmu content from in-memory state.", "operationId": "session-get_restore_check", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestorableFilesResponse" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/session/restore": { "post": { "tags": [ "session" ], "summary": "Restores missing user .fmu resources for the current session", "description": "Attempts to recover missing user .fmu content from in-memory state.", "operationId": "session-post_restore", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RestorableFilesResponse" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "Permission denied while restoring a .fmu directory", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied recovering .fmu resources" } ] } } } }, "409": { "description": "A .fmu path exists but is not a directory", "content": { "application/json": { "example": { "examples": [ { "detail": ".fmu exists at {path} but is not a directory" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/rms/": { "post": { "tags": [ "rms" ], "summary": "Open an RMS project and store it in the session", "description": "Open an RMS project and store it in the session.\n\nThe RMS project path must be configured in the project's .fmu config file.\nOnce opened, the project remains open in the session until explicitly closed\nor the session expires. This allows for efficient repeated access without\nreopening the project each time.\n\nThe endpoint takes an optional parameter, `rms_version`, as input. This can be\nused to specify which version of RMS API that should be used when opening\nthe RMS project.", "operationId": "rms-post_rms_project", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/RmsVersion" }, { "type": "null" } ], "title": "Rms Version" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "400": { "description": "RMS project path is not configured in the project config file.", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path is not set in the project config file." } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "404": { "description": "RMS project was not found or its version could not be determined.", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project does not exist at the configured path: {rms_project_path}." }, { "detail": "RMS version cannot be determined because the RMS project .master file is not found at {rms_project_path}." } ] } } } }, "422": { "description": "Failed to open RMS project {rms_project_path}.", "content": { "application/json": { "example": { "examples": [ { "detail": "Could not open project using RMS version {version}." }, { "detail": "Unable to check out required license." }, { "detail": "Failed setting up RMS API proxy: The requested RMS version {version} is not supported. Try specifying another RMS version or upgrade the RMS project." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } }, "504": { "description": "Opening the RMS project timed out.", "content": { "application/json": { "example": { "examples": [ { "detail": "Opening the RMS project timed out. Please try again." } ] } } } } } }, "delete": { "tags": [ "rms" ], "summary": "Close the RMS project in the session", "description": "Close the RMS project that is currently open in the session.\n\nThis removes the RMS project reference from the session. The project\nshould be closed when it is no longer needed to free up resources.", "operationId": "rms-delete_rms_project", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/rms/validate": { "post": { "tags": [ "rms" ], "summary": "Validate saved RMS settings against the open RMS project", "description": "Compare the RMS settings saved in the FMU project with the open RMS\nproject.\n\nThe operation does not modify saved RMS settings. When validation\nsucceeds, it updates RMS validation metadata in project config.", "operationId": "rms-post_validate_rms_project", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Message" } } } }, "400": { "description": "\nRMS project path is not configured in the project config file,\nor no RMS project is currently open in the session.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path is not set in the project config file." }, { "detail": "No RMS project is currently open. Please open an RMS project first." } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "403": { "description": "The project configuration cannot be accessed for writing.", "content": { "application/json": { "example": { "examples": [ { "detail": "Permission denied accessing .fmu at {project_fmu_directory_path}" } ] } } } }, "404": { "description": "\nThe RMS project saved in the FMU project or its .master file could not\nbe accessed while determining its version.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project not found at '{rms_project_path}'." }, { "detail": "RMS version cannot be determined because the RMS project .master file is not found at {rms_project_path}." } ] } } } }, "422": { "description": "\nThe FMU project has no saved RMS settings, the saved settings do not\nmatch the open RMS project, or the RMS version cannot be used.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No RMS settings are saved in the FMU project." }, { "detail": { "message": "Saved RMS settings do not match the open RMS project.", "mismatches": [ { "key": "rms.horizons.Top", "saved_value": { "name": "Top", "type": "interpreted" }, "source_value": { "name": "Top", "type": "calculated" }, "message": "RMS horizon 'Top' has different settings in the FMU project and the open RMS project." }, { "key": "rms.wells.A-1", "saved_value": { "name": "A-1", "planned": false }, "message": "RMS well 'A-1' is saved in the FMU project but is not present in the open RMS project." } ] } }, { "detail": "RMS version error for project at '{rms_project_path}'" }, { "detail": "Failed to validate the open RMS project: {error_message}" } ] } } } }, "423": { "description": "The project is not locked for writing by the current session.", "content": { "application/json": { "example": { "examples": [ { "detail": "Project is not locked. Acquire the lock before writing." }, { "detail": "Project lock file is missing. Project is treated as read-only." }, { "detail": "Project is read-only. Cannot write to project that is locked by another process." } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/rms/zones": { "get": { "tags": [ "rms" ], "summary": "Get the zones from the open RMS project", "description": "Retrieve the zones from the currently open RMS project.\n\nThis endpoint requires an RMS project to be open in the session.\nUse the POST / endpoint first to open an RMS project.", "operationId": "rms-get_zones", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RmsStratigraphicZone" }, "title": "Response Rms-Get Zones" } } } }, "400": { "description": "\nRMS project path is not configured in the project config file,\nor no RMS project is currently open in the session.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path is not set in the project config file." }, { "detail": "No RMS project is currently open. Please open an RMS project first." } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/rms/horizons": { "get": { "tags": [ "rms" ], "summary": "Get all horizons from the open RMS project", "description": "Retrieve all horizons from the currently open RMS project.\n\nThis endpoint requires an RMS project to be open in the session.\nUse the POST / endpoint first to open an RMS project.", "operationId": "rms-get_horizons", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RmsHorizon" }, "title": "Response Rms-Get Horizons" } } } }, "400": { "description": "\nRMS project path is not configured in the project config file,\nor no RMS project is currently open in the session.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path is not set in the project config file." }, { "detail": "No RMS project is currently open. Please open an RMS project first." } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/rms/wells": { "get": { "tags": [ "rms" ], "summary": "Get all wells from the open RMS project", "description": "Retrieve all wells from the currently open RMS project.\n\nThis endpoint requires an RMS project to be open in the session.\nUse the POST / endpoint first to open an RMS project.", "operationId": "rms-get_wells", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/RmsWell" }, "title": "Response Rms-Get Wells" } } } }, "400": { "description": "\nRMS project path is not configured in the project config file,\nor no RMS project is currently open in the session.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path is not set in the project config file." }, { "detail": "No RMS project is currently open. Please open an RMS project first." } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/rms/coordinate_system": { "get": { "tags": [ "rms" ], "summary": "Get the project coordinate system from the open RMS project", "description": "Retrieve the project coordinate system from the currently open RMS project.\n\nThis endpoint requires an RMS project to be open in the session.\nUse the POST / endpoint first to open an RMS project.", "operationId": "rms-get_coordinate_system", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RmsCoordinateSystem" } } } }, "400": { "description": "\nRMS project path is not configured in the project config file,\nor no RMS project is currently open in the session.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "RMS project path is not set in the project config file." }, { "detail": "No RMS project is currently open. Please open an RMS project first." } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/api/v1/sumo/assets": { "get": { "tags": [ "sumo" ], "summary": "Returns Sumo assets with user write access.", "description": "Returns assets to which the current user has write access.", "operationId": "sumo-get_assets", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SumoAsset" }, "title": "Response Sumo-Get Assets" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "424": { "description": "Sumo login required", "content": { "application/json": { "example": { "examples": [ { "detail": "Sumo login is required" } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } }, "502": { "description": "Invalid response from Sumo", "content": { "application/json": { "example": { "examples": [ { "detail": "Sumo returned an invalid asset response" } ] } } } }, "503": { "description": "Sumo unavailable", "content": { "application/json": { "example": { "examples": [ { "detail": "Unable to get assets from Sumo" } ] } } } } } } }, "/api/v1/sumo/login": { "post": { "tags": [ "sumo" ], "summary": "Logs in to Sumo.", "description": "Starts an interactive Sumo login if no cached token is available.", "operationId": "sumo-post_login", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ok" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "424": { "description": "Sumo login not completed", "content": { "application/json": { "example": { "examples": [ { "detail": "Sumo login was not completed" } ] } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } }, "503": { "description": "Sumo unavailable", "content": { "application/json": { "example": { "examples": [ { "detail": "Unable to connect to Sumo" } ] } } } } } } }, "/api/v1/smda/health": { "get": { "tags": [ "smda" ], "summary": "Checks whether or not the current session is capable of querying SMDA", "description": "A route to check whether the client is capable of querying SMDA APIs\nwith their current session. The requirements for querying the SMDA API via\nthis API are:\n\n1. A valid session\n2. An SMDA subscription key in the user's .fmu API key configuration\n3. A valid SMDA access token scoped to SMDA's user_impersonation scope\n\nA successful response from this route indicates that all other routes on the\nSMDA router can be used.", "operationId": "smda-get_health", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ok" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } }, "503": { "description": "SMDA API is unreachable or returns an error", "content": { "application/json": { "example": { "examples": [ { "detail": "SMDA API request timed out. Please try again later." }, { "detail": "Could not connect to SMDA. There may be a network or proxy problem. Please try again later." }, { "detail": "SMDA error requesting {url}" } ] } } } } } } }, "/api/v1/smda/field": { "post": { "tags": [ "smda" ], "summary": "Searches for a field identifier in SMDA", "description": "A route to search SMDA for a field (asset) by its named identifier.\n\nThis endpoint applies a projection to the SMDA query so that only the relevant\ndata is returned: an identifier known by SMDA, its corresponding UUID, and the\nmain country the field belongs to, not a list of countries where the field\nexists. The UUID should be used by other endpoints required the collection of\ndata by a field, i.e. this route is a dependency for most other routes.\n\nThe number of results (hits) and number of pages those results span over is also\nreturned in the result. This endpoint does not implement pagination. The\ncurrent expectation is that a user would refine their search rather than page\nthrough different results.", "operationId": "smda-post_field", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaField" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaFieldSearchResult" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "SMDA returns a malformed response", "content": { "application/json": { "example": { "examples": [ { "detail": "Malformed response from SMDA: no 'data' field present" } ] } } } }, "503": { "description": "An API call to SMDA times out or fails", "content": { "application/json": { "example": { "examples": [ { "detail": "SMDA API request timed out. Please try again." }, { "detail": "SMDA error requesting {url}" } ] } } } } } } }, "/api/v1/smda/masterdata": { "post": { "tags": [ "smda" ], "summary": "Retrieves masterdata for fields to be confirmed in the GUI", "description": "A route to gather prospective SMDA masterdata relevant to FMU.\n\nThis route receives a list of valid field names and returns masterdata that\npertains to them. The field names should be valid as returned from the\n`smda/field` route. Callers may also provide a field UUID to disambiguate\nfields that share the same identifier. If the first field does not include\na UUID, the endpoint searches for all provided field identifiers. If the\nfirst field includes a UUID, the endpoint looks up only that field, even if\nmore fields are included in the request.\n\nThe data returned from this endpoint is meant to be confirmed by the user who\nmay need to do some additional selection or pruning based upon the model they\nare working from.\n\nOne example of this is changing the coordinate system. A model may use a\ncoordinate system different from the one set as the field's default coordinate\nsystem in SMDA. To match the way this works on SMDA, every coordinate system\nknown to SMDA is returned.\n\nThis endpoint does multiple calls to the SMDA API, any of which may possibly\nfail. In any of these calls fails incomplete data will _not_ be returned; that\nis, a successful code with partial data will not be returned.", "operationId": "smda-post_masterdata", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/SmdaSelectedField" }, "title": "Smda Fields" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaMasterdataResult" } } } }, "400": { "description": "Invalid parameters are provided to SMDA API", "content": { "application/json": { "example": { "examples": [ { "detail": "At least one SMDA field must be provided" }, { "detail": "A stratigraphic column identifier must be provided" }, { "detail": "A field identifier must be provided" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "404": { "description": "A requested resource is not found in SMDA", "content": { "application/json": { "example": { "examples": [ { "detail": "Field '{field_name}' not found in SMDA" }, { "detail": "No fields found for identifiers: {identifiers}" } ] } } } }, "422": { "description": "\nSMDA returns valid data but it doesn't meet expected criteria,\nor no results are found for a valid query.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No fields found for identifiers: {identifiers}" }, { "detail": "No stratigraphic units found for column: {identifier}" }, { "detail": "No well headers found for field identifier: {identifier}" }, { "detail": "No well headers found for field UUID: {uuid}" } ] } } } }, "500": { "description": "\nSMDA returns a malformed response that doesn't match\nthe expected structure.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Malformed response from SMDA: no 'data' field present" }, { "detail": "Malformed response from SMDA: {error_details}" } ] } } } }, "503": { "description": "\nAn API call to SMDA times out or the service is unavailable.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "SMDA API request timed out. Please try again." }, { "detail": "SMDA error requesting {url}" } ] } } } } } } }, "/api/v1/smda/strat_units": { "post": { "tags": [ "smda" ], "summary": "Retrieves stratigraphic units for a stratigraphic column", "description": "A route to gather stratigraphic units from SMDA for a specified\nstratigraphic column.\n\nThis route receives a valid stratigraphic column identifier\nand returns stratigraphic units associated with it. The identifier\nshould be obtained from the `stratigraphic_columns` field in the\n`smda/masterdata` response.", "operationId": "smda-post_strat_units", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaStratColumn" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaStratigraphicUnitsResult" } } } }, "400": { "description": "Invalid parameters are provided to SMDA API", "content": { "application/json": { "example": { "examples": [ { "detail": "At least one SMDA field must be provided" }, { "detail": "A stratigraphic column identifier must be provided" }, { "detail": "A field identifier must be provided" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "404": { "description": "A requested resource is not found in SMDA", "content": { "application/json": { "example": { "examples": [ { "detail": "Field '{field_name}' not found in SMDA" }, { "detail": "No fields found for identifiers: {identifiers}" } ] } } } }, "422": { "description": "\nSMDA returns valid data but it doesn't meet expected criteria,\nor no results are found for a valid query.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No fields found for identifiers: {identifiers}" }, { "detail": "No stratigraphic units found for column: {identifier}" }, { "detail": "No well headers found for field identifier: {identifier}" }, { "detail": "No well headers found for field UUID: {uuid}" } ] } } } }, "500": { "description": "\nSMDA returns a malformed response that doesn't match\nthe expected structure.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Malformed response from SMDA: no 'data' field present" }, { "detail": "Malformed response from SMDA: {error_details}" } ] } } } }, "503": { "description": "\nAn API call to SMDA times out or the service is unavailable.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "SMDA API request timed out. Please try again." }, { "detail": "SMDA error requesting {url}" } ] } } } } } } }, "/api/v1/smda/well_headers": { "post": { "tags": [ "smda" ], "summary": "Retrieves well headers for a field", "description": "A route to gather well header data from SMDA for a specified field.\n\nThis route receives a selected SMDA field and returns the well header\nattributes needed to identify and map SMDA wellbores against model well\nnames. When provided, the field UUID is used to find well headers for the\nselected SMDA field. If no field UUID is provided, the field identifier is\nused instead.", "operationId": "smda-post_well_headers", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaSelectedField" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SmdaWellHeadersResult" } } } }, "400": { "description": "Invalid parameters are provided to SMDA API", "content": { "application/json": { "example": { "examples": [ { "detail": "At least one SMDA field must be provided" }, { "detail": "A stratigraphic column identifier must be provided" }, { "detail": "A field identifier must be provided" } ] } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "404": { "description": "A requested resource is not found in SMDA", "content": { "application/json": { "example": { "examples": [ { "detail": "Field '{field_name}' not found in SMDA" }, { "detail": "No fields found for identifiers: {identifiers}" } ] } } } }, "422": { "description": "\nSMDA returns valid data but it doesn't meet expected criteria,\nor no results are found for a valid query.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "No fields found for identifiers: {identifiers}" }, { "detail": "No stratigraphic units found for column: {identifier}" }, { "detail": "No well headers found for field identifier: {identifier}" }, { "detail": "No well headers found for field UUID: {uuid}" } ] } } } }, "500": { "description": "\nSMDA returns a malformed response that doesn't match\nthe expected structure.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "Malformed response from SMDA: no 'data' field present" }, { "detail": "Malformed response from SMDA: {error_details}" } ] } } } }, "503": { "description": "\nAn API call to SMDA times out or the service is unavailable.\n", "content": { "application/json": { "example": { "examples": [ { "detail": "SMDA API request timed out. Please try again." }, { "detail": "SMDA error requesting {url}" } ] } } } } } } }, "/api/v1/match": { "post": { "tags": [ "match" ], "summary": "Match source names to target names", "description": "Match source names to target names using strict name similarity.\n\nThe endpoint is a pure matching utility. Callers provide both the\nsource names and target names, and can optionally provide string\nreplacement rules and prefix removal options to apply before matching.\n\nNames are normalized before matching by lowercasing, replacing\nunderscores, dots, dashes, and slashes with spaces, collapsing\nwhitespace, and applying optional replacement rules. Replacement\nrules match whole normalized token sequences only, so a rule like\n`Fm -> Formation` changes `Tarbert Fm` to `Tarbert Formation`,\nwhile `Top -> \"\"` leaves `Stop Viking` unchanged.\n\nCallers can provide a list of individual prefixes to remove. Prefixes\nare removed only from the text before the first digit and match\nnormalized tokens. Prefix removal changes only the values used for\ncomparison. The original names remain in the response.\n\nThe response contains one result per source. Each result contains up\nto three target matches, ordered from highest to lowest score.\n\nConfidence levels:\n- 'high': score > 80\n- 'medium': score 50-80\n- 'low': score < 50", "operationId": "match-post_match", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MatchRequest" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/MatchResult" }, "type": "array", "title": "Response Match-Post Match" } } } }, "422": { "description": "The request body is missing required match input or contains invalid data.", "content": { "application/json": { "example": { "examples": [ { "detail": "Field required" }, { "detail": "Input should be a valid list" } ] } } } } } } }, "/api/v1/health": { "get": { "tags": [ "health" ], "summary": "A health check on the /v1 routes.", "description": "This route requires a valid session to return 200 OK. it can used to check if the user has a valid session.", "operationId": "health-v1_health_check", "parameters": [ { "name": "fmu_settings_session", "in": "cookie", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Fmu Settings Session" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ok" } } } }, "401": { "description": "No active or valid session was found", "content": { "application/json": { "example": { "examples": [ { "detail": "No active session found" }, { "detail": "Invalid or expired session" }, { "detail": "No FMU project directory open" } ] } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } }, "500": { "description": "Something unexpected has happened", "content": { "application/json": { "example": { "examples": [ { "detail": "Session error: {string content of exception}" }, { "detail": "{string content of exception}" } ] } } } } } } }, "/health": { "get": { "tags": [ "health" ], "summary": "A health check on the application", "description": "This route requires no form of authentication or authorization. It can be used to check if the application is running and responsive.", "operationId": "health-health_check", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Ok" } } } } } } } }, "components": { "schemas": { "APIKey": { "properties": { "id": { "type": "string", "title": "Id" } }, "type": "object", "required": [ "id" ], "title": "APIKey", "description": "A key-value pair for a known and supported API." }, "Access": { "properties": { "asset": { "$ref": "#/components/schemas/Asset" }, "classification": { "anyOf": [ { "$ref": "#/components/schemas/Classification" }, { "type": "null" } ] } }, "type": "object", "required": [ "asset" ], "title": "Access", "description": "The ``access`` block contains information related to access control for\nthis data object." }, "AccessToken": { "properties": { "id": { "type": "string", "title": "Id" } }, "type": "object", "required": [ "id" ], "title": "AccessToken", "description": "A key-value pair for a known and supported access scope." }, "Asset": { "properties": { "name": { "type": "string", "title": "Name", "examples": [ "Drogon" ] } }, "type": "object", "required": [ "name" ], "title": "Asset", "description": "The ``access.asset`` block contains information about the owner asset of\nthese data." }, "CacheContent": { "properties": { "data": { "additionalProperties": true, "type": "object", "title": "Data", "description": "Parsed JSON object for the cached resource." } }, "type": "object", "required": [ "data" ], "title": "CacheContent", "description": "Content of a cache revision." }, "CacheList": { "properties": { "revisions": { "items": { "type": "string" }, "type": "array", "title": "Revisions", "description": "Cache revision filenames, sorted oldest to newest." } }, "type": "object", "required": [ "revisions" ], "title": "CacheList", "description": "List of cache revision filenames." }, "CacheResource": { "type": "string", "enum": [ "config.json", "mappings.json" ], "title": "CacheResource", "description": "Resources that can be cached and restored." }, "CacheRetention": { "properties": { "cache_max_revisions": { "type": "integer", "minimum": 5, "title": "Cache Max Revisions", "description": "Maximum number of cache revisions to keep per resource.", "default": 5 } }, "type": "object", "title": "CacheRetention", "description": "Cache retention setting for project resources." }, "ChangeInfo": { "properties": { "timestamp": { "type": "string", "format": "date-time", "title": "Timestamp" }, "change_type": { "$ref": "#/components/schemas/ChangeType" }, "user": { "type": "string", "title": "User" }, "path": { "type": "string", "format": "path", "title": "Path" }, "change": { "type": "string", "title": "Change" }, "hostname": { "type": "string", "title": "Hostname" }, "file": { "type": "string", "title": "File" }, "key": { "type": "string", "title": "Key" } }, "type": "object", "required": [ "change_type", "user", "path", "change", "hostname", "file", "key" ], "title": "ChangeInfo", "description": "Represents a change in the changelog file." }, "ChangeType": { "type": "string", "enum": [ "init", "update", "remove", "add", "reset", "restore", "merge", "copy" ], "title": "ChangeType", "description": "The types of change that can be made on a file." }, "Classification": { "type": "string", "enum": [ "asset", "internal", "restricted" ], "title": "Classification", "description": "The security classification for a given data object." }, "CoordinateSystem": { "properties": { "identifier": { "type": "string", "title": "Identifier", "examples": [ "ST_WGS84_UTM37N_P32637" ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "examples": [ "15ce3b84-766f-4c93-9050-b154861f9100" ] } }, "type": "object", "required": [ "identifier", "uuid" ], "title": "CoordinateSystem", "description": "The ``masterdata.smda.coordinate_system`` block contains the coordinate\nsystem known to SMDA." }, "CountryItem": { "properties": { "identifier": { "type": "string", "title": "Identifier", "examples": [ "Norway" ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "examples": [ "15ce3b84-766f-4c93-9050-b154861f9100" ] } }, "type": "object", "required": [ "identifier", "uuid" ], "title": "CountryItem", "description": "A single country in the ``smda.masterdata.country`` list of countries\nknown to SMDA." }, "DataSystem": { "type": "string", "enum": [ "rms", "smda", "simulator", "pdm" ], "title": "DataSystem", "description": "The system or application data is being mapping to or from." }, "DiscoveryItem": { "properties": { "short_identifier": { "type": "string", "title": "Short Identifier", "examples": [ "SomeDiscovery" ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "examples": [ "15ce3b84-766f-4c93-9050-b154861f9100" ] } }, "type": "object", "required": [ "short_identifier", "uuid" ], "title": "DiscoveryItem", "description": "A single discovery in the ``masterdata.smda.discovery`` list of discoveries\nknown to SMDA." }, "FMUDirPath": { "properties": { "path": { "type": "string", "format": "path", "title": "Path", "description": "Absolute path to the directory which maybe contains a .fmu directory.", "examples": [ "/path/to/project.2038.02.02" ] } }, "type": "object", "required": [ "path" ], "title": "FMUDirPath", "description": "Path where a .fmu directory may exist." }, "FMUProject": { "properties": { "path": { "type": "string", "format": "path", "title": "Path", "description": "Absolute path to the directory which maybe contains a .fmu directory.", "examples": [ "/path/to/project.2038.02.02" ] }, "project_dir_name": { "type": "string", "title": "Project Dir Name", "description": "The directory name, not the path, that contains the .fmu directory.", "examples": [ "project.2038.02.02" ] }, "config": { "$ref": "#/components/schemas/ProjectConfig", "description": "The configuration of an FMU project's .fmu directory." } }, "type": "object", "required": [ "path", "project_dir_name", "config" ], "title": "FMUProject", "description": "Information returned when 'opening' an FMU Directory." }, "FieldItem": { "properties": { "identifier": { "type": "string", "title": "Identifier", "examples": [ "OseFax" ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "examples": [ "15ce3b84-766f-4c93-9050-b154861f9100" ] } }, "type": "object", "required": [ "identifier", "uuid" ], "title": "FieldItem", "description": "A single field in the ``masterdata.smda.field`` list of fields\nknown to SMDA." }, "FilterType": { "type": "string", "enum": [ "date", "number", "text" ], "title": "FilterType", "description": "The supported types to filter on." }, "GlobalConfigPath": { "properties": { "relative_path": { "type": "string", "format": "path", "title": "Relative Path", "description": "Relative path in the project to a global config file.", "examples": [ "relative_path/to/global_config_file" ] } }, "type": "object", "required": [ "relative_path" ], "title": "GlobalConfigPath", "description": "A relative path to a global config file, relative to the project root." }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "InternalMappings": { "properties": { "schema_version": { "type": "integer", "const": 1, "title": "Schema Version", "default": 1 }, "stratigraphy": { "$ref": "#/components/schemas/InternalStratigraphyMappings" }, "wellbore": { "$ref": "#/components/schemas/InternalWellboreMappings" } }, "type": "object", "title": "InternalMappings", "description": "Represents the .fmu/mappings.json storage schema." }, "InternalRelationType": { "type": "string", "enum": [ "primary", "alias", "unmappable" ], "title": "InternalRelationType", "description": "The kind of relation this internal .fmu mapping represents." }, "InternalStratigraphyIdentifierMapping": { "properties": { "source_system": { "$ref": "#/components/schemas/DataSystem" }, "target_system": { "$ref": "#/components/schemas/DataSystem" }, "mapping_type": { "type": "string", "const": "stratigraphy", "title": "Mapping Type", "default": "stratigraphy" }, "relation_type": { "$ref": "#/components/schemas/InternalRelationType" }, "source_id": { "type": "string", "title": "Source Id" }, "source_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Source Uuid" }, "target_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Id" }, "target_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Target Uuid" } }, "type": "object", "required": [ "source_system", "target_system", "relation_type", "source_id" ], "title": "InternalStratigraphyIdentifierMapping", "description": "Stratigraphy identifier mapping stored in .fmu/mappings.json.\n\nUse ``to_stratigraphy_mappings()`` on the collection model when consumers\nneed the fmu-datamodels mapping schema." }, "InternalStratigraphyMappings": { "items": { "$ref": "#/components/schemas/InternalStratigraphyIdentifierMapping" }, "type": "array", "title": "InternalStratigraphyMappings", "description": "Collection of stratigraphy mappings stored in .fmu/mappings.json.\n\nThis internal model can keep same-system alias information and unmappable\nrelation. Converting to fmu-datamodels drops unmappable entries and expands\nsame-system aliases onto matching cross-system primary mappings." }, "InternalWellboreIdentifierMapping": { "properties": { "source_system": { "$ref": "#/components/schemas/DataSystem" }, "target_system": { "$ref": "#/components/schemas/DataSystem" }, "mapping_type": { "type": "string", "const": "wellbore", "title": "Mapping Type", "default": "wellbore" }, "relation_type": { "$ref": "#/components/schemas/InternalRelationType" }, "source_id": { "type": "string", "title": "Source Id" }, "source_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Source Uuid" }, "target_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Id" }, "target_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Target Uuid" } }, "type": "object", "required": [ "source_system", "target_system", "relation_type", "source_id" ], "title": "InternalWellboreIdentifierMapping", "description": "Wellbore identifier mapping stored in .fmu/mappings.json.\n\nUse ``to_wellbore_mappings()`` on the collection model when consumers need\nthe fmu-datamodels mapping schema." }, "InternalWellboreMappings": { "items": { "$ref": "#/components/schemas/InternalWellboreIdentifierMapping" }, "type": "array", "title": "InternalWellboreMappings", "description": "Collection of wellbore mappings stored in .fmu/mappings.json.\n\nThis internal model can keep same-system alias information and unmappable\nrelation. Converting to fmu-datamodels drops unmappable entries and expands\nsame-system aliases onto matching cross-system primary mappings." }, "ListFieldDiff": { "properties": { "field_path": { "type": "string", "title": "Field Path" }, "added": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Added" }, "removed": { "items": { "additionalProperties": true, "type": "object" }, "type": "array", "title": "Removed" }, "updated": { "items": { "$ref": "#/components/schemas/ListUpdatedEntry" }, "type": "array", "title": "Updated" } }, "type": "object", "required": [ "field_path", "added", "removed", "updated" ], "title": "ListFieldDiff", "description": "Diff entry for list fields with per-item changes." }, "ListUpdatedEntry": { "properties": { "key": { "title": "Key" }, "before": { "additionalProperties": true, "type": "object", "title": "Before" }, "after": { "additionalProperties": true, "type": "object", "title": "After" } }, "type": "object", "required": [ "key", "before", "after" ], "title": "ListUpdatedEntry", "description": "Before and after values for an updated list item." }, "LockInfo": { "properties": { "pid": { "type": "integer", "title": "Pid" }, "hostname": { "type": "string", "title": "Hostname" }, "user": { "type": "string", "title": "User" }, "acquired_at": { "type": "number", "title": "Acquired At" }, "expires_at": { "type": "number", "title": "Expires At" }, "version": { "type": "string", "pattern": "(\\d+(\\.\\d+){0,2}|\\d+\\.\\d+\\.[a-z0-9]+\\+[a-z0-9.]+)", "title": "Version", "default": "1.5.0" } }, "type": "object", "required": [ "pid", "hostname", "user", "acquired_at", "expires_at" ], "title": "LockInfo", "description": "Represents a .fmu directory lock file." }, "LockStatus": { "properties": { "is_lock_acquired": { "type": "boolean", "title": "Is Lock Acquired", "description": "Whether the current session holds the write lock." }, "lock_file_exists": { "type": "boolean", "title": "Lock File Exists", "description": "Whether a lock file exists." }, "lock_info": { "anyOf": [ { "$ref": "#/components/schemas/LockInfo" }, { "type": "null" } ], "description": "Contents of the lock file, if available and readable." }, "lock_status_error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lock Status Error", "description": "Error message if checking lock status failed." }, "lock_file_read_error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Lock File Read Error", "description": "Error message if reading the lock file failed." }, "last_lock_acquire_error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Last Lock Acquire Error", "description": "Error message from the last attempt to acquire the lock." }, "last_lock_release_error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Last Lock Release Error", "description": "Error message from the last attempt to release the lock." }, "last_lock_refresh_error": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Last Lock Refresh Error", "description": "Error message from the last attempt to refresh the lock." } }, "type": "object", "required": [ "is_lock_acquired", "lock_file_exists" ], "title": "LockStatus", "description": "Information about the project lock status." }, "Log_ChangeInfo_": { "items": { "$ref": "#/components/schemas/ChangeInfo" }, "type": "array", "title": "Log[ChangeInfo]" }, "MappingType": { "type": "string", "enum": [ "stratigraphy", "wellbore" ], "title": "MappingType", "description": "The discriminator used between mapping types.\n\nEach of these types should have their own mapping class derived from a base\nmapping type, e.g. IdentifierMapping." }, "Masterdata": { "properties": { "smda": { "$ref": "#/components/schemas/Smda" } }, "type": "object", "required": [ "smda" ], "title": "Masterdata", "description": "The ``masterdata`` block contains information related to masterdata.\nCurrently, SMDA holds the masterdata." }, "MatchCandidate": { "properties": { "target": { "type": "string", "title": "Target", "description": "The candidate target name." }, "score": { "type": "number", "maximum": 100, "minimum": 0, "title": "Score", "description": "Similarity score for the normalized source and target names (0-100)." }, "confidence": { "type": "string", "enum": [ "high", "medium", "low" ], "title": "Confidence", "description": "Confidence level based on score.\n\n'high' (>80), 'medium' (50-80), 'low' (<50)." } }, "type": "object", "required": [ "target", "score", "confidence" ], "title": "MatchCandidate", "description": "A target candidate for a source name." }, "MatchReplacementRule": { "properties": { "original": { "type": "string", "title": "Original", "description": "The normalized token sequence to replace." }, "replacement": { "type": "string", "title": "Replacement", "description": "The replacement token sequence." } }, "type": "object", "required": [ "original", "replacement" ], "title": "MatchReplacementRule", "description": "A normalized token sequence replacement to apply before matching." }, "MatchRequest": { "properties": { "sources": { "items": { "type": "string" }, "type": "array", "title": "Sources", "description": "Names to match from." }, "targets": { "items": { "type": "string" }, "type": "array", "title": "Targets", "description": "Names to match against." }, "replacements": { "items": { "$ref": "#/components/schemas/MatchReplacementRule" }, "type": "array", "title": "Replacements", "description": "Optional normalized token sequence replacements to apply before matching." }, "prefixes_to_remove": { "items": { "type": "string" }, "type": "array", "title": "Prefixes To Remove", "description": "Prefixes to remove from the text before the first digit." } }, "type": "object", "required": [ "sources", "targets" ], "title": "MatchRequest", "description": "A request to match source names against target names." }, "MatchResult": { "properties": { "source": { "type": "string", "title": "Source", "description": "The source name." }, "matches": { "items": { "$ref": "#/components/schemas/MatchCandidate" }, "type": "array", "title": "Matches", "description": "The best target candidates for the source name." } }, "type": "object", "required": [ "source", "matches" ], "title": "MatchResult", "description": "The target candidates for a source name." }, "Message": { "properties": { "message": { "type": "string", "title": "Message" } }, "type": "object", "required": [ "message" ], "title": "Message", "description": "A generic message to return to the GUI." }, "Model": { "properties": { "description": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Description" }, "name": { "type": "string", "title": "Name", "examples": [ "Drogon" ] }, "revision": { "type": "string", "title": "Revision", "examples": [ "21.0.0.dev" ] } }, "type": "object", "required": [ "name", "revision" ], "title": "Model", "description": "The ``fmu.model`` block contains information about the model used.\n\n.. note::\n Synonyms for \"model\" in this context are \"template\", \"setup\", etc. The term\n \"model\" is ultra-generic but was chosen before e.g. \"template\" as the latter\n deviates from daily communications and is, if possible, even more generic\n than \"model\"." }, "Ok": { "properties": { "status": { "type": "string", "const": "ok", "title": "Status", "default": "ok" } }, "type": "object", "title": "Ok", "description": "Returns \"ok\" if the route is functioning correctly." }, "ProjectConfig": { "properties": { "schema_version": { "type": "integer", "const": 2, "title": "Schema Version", "default": 2 }, "version": { "type": "string", "pattern": "(\\d+(\\.\\d+){0,2}|\\d+\\.\\d+\\.[a-z0-9]+\\+[a-z0-9.]+)", "title": "Version" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "created_by": { "type": "string", "title": "Created By" }, "last_modified_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Last Modified At" }, "last_modified_by": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Last Modified By" }, "masterdata": { "anyOf": [ { "$ref": "#/components/schemas/Masterdata" }, { "type": "null" } ] }, "associated_fields": { "items": { "$ref": "#/components/schemas/FieldItem" }, "type": "array", "title": "Associated Fields" }, "model": { "anyOf": [ { "$ref": "#/components/schemas/Model" }, { "type": "null" } ] }, "access": { "anyOf": [ { "$ref": "#/components/schemas/Access" }, { "type": "null" } ] }, "cache_max_revisions": { "type": "integer", "minimum": 5, "title": "Cache Max Revisions", "default": 10 }, "rms": { "anyOf": [ { "$ref": "#/components/schemas/RmsProject" }, { "type": "null" } ] }, "validation": { "$ref": "#/components/schemas/ProjectValidation" } }, "type": "object", "required": [ "version", "created_at", "created_by" ], "title": "ProjectConfig", "description": "The configuration file in a .fmu directory.\n\nStored as config.json." }, "ProjectValidation": { "properties": { "masterdata_smda": { "anyOf": [ { "$ref": "#/components/schemas/ValidationRecord" }, { "type": "null" } ] }, "rms_project": { "anyOf": [ { "$ref": "#/components/schemas/ValidationRecord" }, { "type": "null" } ] } }, "type": "object", "title": "ProjectValidation", "description": "Validation metadata for project configuration data." }, "RestorableFilesResponse": { "properties": { "files": { "items": { "type": "string", "format": "path" }, "type": "array", "title": "Files", "description": "Relative paths to the restorable or restored files." } }, "type": "object", "required": [ "files" ], "title": "RestorableFilesResponse", "description": "A list of missing .fmu files that can be restored or were restored." }, "RmsCoordinateSystem": { "properties": { "name": { "type": "string", "title": "Name" } }, "type": "object", "required": [ "name" ], "title": "RmsCoordinateSystem", "description": "The project coordinate system of an RMS project." }, "RmsHorizon": { "properties": { "name": { "type": "string", "title": "Name" }, "type": { "type": "string", "enum": [ "calculated", "calculated_unconformity", "interpreted", "interpreted_unconformity", "interpreted_intrusion" ], "title": "Type" } }, "type": "object", "required": [ "name", "type" ], "title": "RmsHorizon", "description": "A horizon from an RMS project." }, "RmsProject": { "properties": { "path": { "type": "string", "format": "path", "title": "Path" }, "version": { "type": "string", "title": "Version" }, "coordinate_system": { "anyOf": [ { "$ref": "#/components/schemas/RmsCoordinateSystem" }, { "type": "null" } ] }, "zones": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RmsStratigraphicZone" }, "type": "array" }, { "type": "null" } ], "title": "Zones" }, "horizons": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RmsHorizon" }, "type": "array" }, { "type": "null" } ], "title": "Horizons" }, "wells": { "anyOf": [ { "items": { "$ref": "#/components/schemas/RmsWell" }, "type": "array" }, { "type": "null" } ], "title": "Wells" } }, "type": "object", "required": [ "path", "version" ], "title": "RmsProject", "description": "RMS project configuration." }, "RmsProjectPath": { "properties": { "path": { "type": "string", "format": "path", "title": "Path", "description": "Absolute path to the RMS project within the FMU project.", "examples": [ "/path/to/some.project.rms.14.2.2" ] } }, "type": "object", "required": [ "path" ], "title": "RmsProjectPath", "description": "Path to an RMS project within the FMU project." }, "RmsProjectPathsResult": { "properties": { "results": { "items": { "$ref": "#/components/schemas/RmsProjectPath" }, "type": "array", "title": "Results", "description": "List of absolute paths to RMS projects within the FMU project." } }, "type": "object", "required": [ "results" ], "title": "RmsProjectPathsResult", "description": "List of RMS project paths within the FMU project." }, "RmsSimulatorMappingExportRequest": { "properties": { "relative_path": { "anyOf": [ { "type": "string", "format": "path" }, { "type": "null" } ], "title": "Relative Path", "description": "Output path relative to the project root, or the default path if omitted.", "examples": [ "rms/input/well_modelling/well_info/rms_simulator.renaming_table" ] }, "overwrite": { "type": "boolean", "title": "Overwrite", "description": "Whether an existing export file may be overwritten.", "default": false } }, "type": "object", "title": "RmsSimulatorMappingExportRequest", "description": "Options for exporting RMS-to-simulator mappings." }, "RmsSimulatorMappingImportRequest": { "properties": { "relative_path": { "anyOf": [ { "type": "string", "format": "path" }, { "type": "null" } ], "title": "Relative Path", "description": "Input path relative to the project root, or the default path if omitted.", "examples": [ "rms/input/well_modelling/well_info/rms_eclipse.csv" ] } }, "type": "object", "title": "RmsSimulatorMappingImportRequest", "description": "Options for importing RMS-to-simulator mappings." }, "RmsStratigraphicFramework": { "properties": { "zones": { "items": { "$ref": "#/components/schemas/RmsStratigraphicZone" }, "type": "array", "title": "Zones", "description": "List of RMS stratigraphic zones." }, "horizons": { "items": { "$ref": "#/components/schemas/RmsHorizon" }, "type": "array", "title": "Horizons", "description": "List of RMS horizons." } }, "type": "object", "required": [ "zones", "horizons" ], "title": "RmsStratigraphicFramework", "description": "RMS stratigraphic framework consisting of zones and horizons." }, "RmsStratigraphicZone": { "properties": { "name": { "type": "string", "title": "Name" }, "top_horizon_name": { "type": "string", "title": "Top Horizon Name" }, "base_horizon_name": { "type": "string", "title": "Base Horizon Name" }, "stratigraphic_column_name": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Stratigraphic Column Name" } }, "type": "object", "required": [ "name", "top_horizon_name", "base_horizon_name" ], "title": "RmsStratigraphicZone", "description": "A stratigraphic zone from an RMS project." }, "RmsVersion": { "properties": { "version": { "type": "string", "title": "Version", "description": "A version of RMS.", "examples": [ "14.2.2", "15.0.1.0" ] } }, "type": "object", "required": [ "version" ], "title": "RmsVersion", "description": "RMS version." }, "RmsWell": { "properties": { "name": { "type": "string", "title": "Name" }, "planned": { "type": "boolean", "title": "Planned", "default": false }, "unique_well_identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Unique Well Identifier" }, "easting": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Easting" }, "northing": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Northing" }, "rkb": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Rkb" } }, "type": "object", "required": [ "name" ], "title": "RmsWell", "description": "A well from an RMS project with added metadata." }, "ScalarFieldDiff": { "properties": { "field_path": { "type": "string", "title": "Field Path" }, "before": { "title": "Before" }, "after": { "title": "After" } }, "type": "object", "required": [ "field_path", "before", "after" ], "title": "ScalarFieldDiff", "description": "Diff entry for non-list fields." }, "SessionResponse": { "properties": { "id": { "type": "string", "title": "Id", "description": "Session identifier." }, "created_at": { "type": "string", "format": "date-time", "title": "Created At", "description": "Timestamp when the session was created." }, "expires_at": { "type": "string", "format": "date-time", "title": "Expires At", "description": "Timestamp when the session will expire." }, "rms_expires_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Rms Expires At", "description": "Timestamp when the RMS session will expire." }, "last_accessed": { "type": "string", "format": "date-time", "title": "Last Accessed", "description": "Timestamp when the session was last accessed." } }, "type": "object", "required": [ "id", "created_at", "expires_at", "rms_expires_at", "last_accessed" ], "title": "SessionResponse", "description": "Serializable representation of the current session." }, "Smda": { "properties": { "coordinate_system": { "$ref": "#/components/schemas/CoordinateSystem" }, "country": { "items": { "$ref": "#/components/schemas/CountryItem" }, "type": "array", "minItems": 1, "title": "Country" }, "discovery": { "items": { "$ref": "#/components/schemas/DiscoveryItem" }, "type": "array", "title": "Discovery" }, "field": { "items": { "$ref": "#/components/schemas/FieldItem" }, "type": "array", "minItems": 1, "title": "Field" }, "stratigraphic_column": { "$ref": "#/components/schemas/StratigraphicColumn" } }, "type": "object", "required": [ "coordinate_system", "country", "discovery", "field", "stratigraphic_column" ], "title": "Smda", "description": "The ``masterdata.smda`` block contains SMDA-related attributes." }, "SmdaField": { "properties": { "identifier": { "type": "string", "title": "Identifier", "description": "A field identifier (name).", "examples": [ "TROLL" ] } }, "type": "object", "required": [ "identifier" ], "title": "SmdaField", "description": "An identifier for a field to be searched for." }, "SmdaFieldSearchResult": { "properties": { "hits": { "type": "integer", "title": "Hits", "description": "The number of hits from the field search." }, "pages": { "type": "integer", "title": "Pages", "description": "The number of pages of hits." }, "results": { "items": { "$ref": "#/components/schemas/SmdaFieldUUID" }, "type": "array", "title": "Results", "description": "A list of field identifier results from the search." } }, "type": "object", "required": [ "hits", "pages", "results" ], "title": "SmdaFieldSearchResult", "description": "The search result of a field identifier result." }, "SmdaFieldUUID": { "properties": { "identifier": { "type": "string", "title": "Identifier", "description": "A field identifier (name).", "examples": [ "TROLL" ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "description": "The SMDA UUID identifier corresponding to the field identifier." }, "country": { "type": "string", "title": "Country", "description": "The country identifier corresponding to the field identifier." } }, "type": "object", "required": [ "identifier", "uuid", "country" ], "title": "SmdaFieldUUID", "description": "Name-UUID identifier for a field as known by SMDA." }, "SmdaMasterdataResult": { "properties": { "field": { "items": { "$ref": "#/components/schemas/FieldItem" }, "type": "array", "title": "Field", "description": "A list referring to fields known to SMDA. First item is primary." }, "country": { "items": { "$ref": "#/components/schemas/CountryItem" }, "type": "array", "title": "Country", "description": "A list referring to countries known to SMDA. First item is primary." }, "discovery": { "items": { "$ref": "#/components/schemas/DiscoveryItem" }, "type": "array", "title": "Discovery", "description": "A list referring to discoveries known to SMDA. First item is primary." }, "stratigraphic_columns": { "items": { "$ref": "#/components/schemas/StratigraphicColumn" }, "type": "array", "title": "Stratigraphic Columns", "description": "Reference to stratigraphic column known to SMDA." }, "field_coordinate_system": { "$ref": "#/components/schemas/CoordinateSystem", "description": "The primary field's coordinate system.\n\nThis coordinate system may not be the coordinate system users use in their model." }, "coordinate_systems": { "items": { "$ref": "#/components/schemas/CoordinateSystem" }, "type": "array", "title": "Coordinate Systems", "description": "A list of all coordinate systems known to SMDA.\n\nThese are provided when the user needs to select a different coordinate system that\napplies to the model they are working on." } }, "type": "object", "required": [ "field", "country", "discovery", "stratigraphic_columns", "field_coordinate_system", "coordinate_systems" ], "title": "SmdaMasterdataResult", "description": "Contains SMDA-related attributes." }, "SmdaSelectedField": { "properties": { "identifier": { "type": "string", "title": "Identifier", "description": "A field identifier (name).", "examples": [ "TROLL" ] }, "uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Uuid", "description": "The SMDA UUID identifier corresponding to the field identifier." } }, "type": "object", "required": [ "identifier" ], "title": "SmdaSelectedField", "description": "A selected SMDA field." }, "SmdaStratColumn": { "properties": { "strat_column_identifier": { "type": "string", "title": "Strat Column Identifier", "description": "A stratigraphic column identifier.", "examples": [ "LITHO_TROLL" ] } }, "type": "object", "required": [ "strat_column_identifier" ], "title": "SmdaStratColumn", "description": "An identifier for a stratigraphic column." }, "SmdaStratigraphicUnitsResult": { "properties": { "stratigraphic_units": { "items": { "$ref": "#/components/schemas/StratigraphicUnit" }, "type": "array", "title": "Stratigraphic Units", "description": "List of stratigraphic units from SMDA." } }, "type": "object", "required": [ "stratigraphic_units" ], "title": "SmdaStratigraphicUnitsResult", "description": "Result containing a list of stratigraphic units." }, "SmdaWellHeader": { "properties": { "unique_well_identifier": { "type": "string", "title": "Unique Well Identifier", "description": "Unique SMDA identifier for the well." }, "unique_wellbore_identifier": { "type": "string", "title": "Unique Wellbore Identifier", "description": "Unique SMDA identifier for the wellbore." }, "official_wellbore_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Official Wellbore Name", "description": "Official wellbore name used by the Authorities.\n\nFor Norway and UK, it will be the unique_wellbore_identifier without\ncountry iso code, but for Brazil it can really differs from the Equinor\nwellbore name." }, "country_identifier": { "type": "string", "title": "Country Identifier", "description": "Country identifier for the wellbore." }, "parent_wellbore": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Parent Wellbore", "description": "The unique wellbore identifier this wellbore is kicked off from.\n\nRef. kick off depth. This is used for sidetracks. A wellbore starting at\nthe well origin has no parent." }, "wellbore_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Wellbore Type", "description": "Type of wellbore, values like exploration, development, other.\n\nThis attribute is automatically maintained in SMDA based on the wellbore\npurpose. If the purpose is like wildcat or appraisal, type will be set to\nexploration, if the purpose is like production, injection then the type is\nset to development." }, "wellbore_purpose": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Wellbore Purpose", "description": "Purpose of wellbore.\n\nValues like wildcat, appraisal, … for exploration wellbores; production,\ninjection, observation, disposal, … for development wellbores; shallow gas,\npilot hole for other purpose." }, "wellbore_status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Wellbore Status", "description": "Status of the wellbore.\n\nValue like plugged and abandoned, drilling, plugged, producing ... This\nattribute is automatically maintained in SMDA if no good source is found\nfor it. SMDA will use the wellbore type (exploration or development), the\ndrill dates information, current_track, etc ... in order to set a plausible\nstatus. If wellbore type=exploration and completed_date < current_date,\nthen status=plugged and abandoned while development wellbore would be set\nto completed." }, "wellbore_purpose_planned": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Wellbore Purpose Planned", "description": "Pre-drill purpose of the wellbore.\n\nLegal values for exploration wellbores: wildcat, appraisal. Example of\nlegal values for development wellbores: observation, production, injection." }, "drill_year": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Drill Year", "description": "The year when the drilling has started." }, "completion_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Completion Date", "description": "Date when the wellbore is considered completed.\n\nFor exploration wellbores from moveable facilities, this may be the anchor\nhandling or jacking-down start date. For fixed facilities and development\nwellbores, it is when the wellbore reaches total depth and the last casing,\nliner, or screen is set. If immediately plugged, it is the date the last\nplug is set." }, "discovery_internal_identifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Discovery Internal Identifier", "description": "Internal name of the discovery." }, "multilateral": { "anyOf": [ { "type": "integer", "enum": [ 0, 1 ] }, { "type": "null" } ], "title": "Multilateral", "description": "Whether the wellbore is multilateral. 0 = no, 1 = yes." }, "projected_coordinate_unit": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Projected Coordinate Unit", "description": "Projected coordinate unit." }, "projected_coordinate_system": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Projected Coordinate System", "description": "Coordinate reference system for the easting/northing values." }, "well_uuid": { "type": "string", "format": "uuid", "title": "Well Uuid", "description": "SMDA UUID for the well." }, "wellbore_uuid": { "type": "string", "format": "uuid", "title": "Wellbore Uuid", "description": "SMDA UUID for the wellbore." } }, "type": "object", "required": [ "unique_well_identifier", "unique_wellbore_identifier", "official_wellbore_name", "country_identifier", "parent_wellbore", "wellbore_type", "wellbore_purpose", "wellbore_status", "wellbore_purpose_planned", "drill_year", "completion_date", "discovery_internal_identifier", "multilateral", "projected_coordinate_unit", "projected_coordinate_system", "well_uuid", "wellbore_uuid" ], "title": "SmdaWellHeader", "description": "Well header data from SMDA." }, "SmdaWellHeadersResult": { "properties": { "well_headers": { "items": { "$ref": "#/components/schemas/SmdaWellHeader" }, "type": "array", "title": "Well Headers", "description": "List of well headers from SMDA." } }, "type": "object", "required": [ "well_headers" ], "title": "SmdaWellHeadersResult", "description": "Result containing a list of well headers." }, "StratigraphicColumn": { "properties": { "identifier": { "type": "string", "title": "Identifier", "examples": [ "DROGON_2020" ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "examples": [ "15ce3b84-766f-4c93-9050-b154861f9100" ] } }, "type": "object", "required": [ "identifier", "uuid" ], "title": "StratigraphicColumn", "description": "The ``masterdata.smda.stratigraphic_column`` block contains the\nstratigraphic column known to SMDA." }, "StratigraphicUnit": { "properties": { "identifier": { "type": "string", "title": "Identifier", "description": "The stratigraphic unit identifier (name).", "examples": [ "VIKING GP." ] }, "uuid": { "type": "string", "format": "uuid", "title": "Uuid", "description": "The SMDA UUID identifier corresponding to the stratigraphic unit." }, "strat_unit_type": { "type": "string", "title": "Strat Unit Type", "description": "The type of stratigraphic unit.", "examples": [ "formation", "group" ] }, "strat_unit_level": { "type": "integer", "maximum": 6, "minimum": 1, "title": "Strat Unit Level", "description": "The hierarchical level of the stratigraphic unit (1-6)." }, "top": { "type": "string", "title": "Top", "description": "The identifier (name) of the stratigraphic unit top pick (horizon).", "examples": [ "VIKING GP. Top" ] }, "top_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Top Uuid", "description": "The SMDA UUID identifier corresponding to the top horizon." }, "base": { "type": "string", "title": "Base", "description": "The identifier (name) of the stratigraphic unit base pick (horizon).", "examples": [ "VIKING GP. Base" ] }, "base_uuid": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "title": "Base Uuid", "description": "The SMDA UUID identifier corresponding to the base horizon." }, "top_age": { "type": "number", "minimum": 0, "title": "Top Age", "description": "The age (in Ma) at the top of the stratigraphic unit." }, "base_age": { "type": "number", "minimum": 0, "title": "Base Age", "description": "The age (in Ma) at the base of the stratigraphic unit." }, "strat_unit_parent": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Strat Unit Parent", "description": "The parent stratigraphic unit identifier, if applicable." }, "strat_column_type": { "type": "string", "enum": [ "lithostratigraphy", "sequence stratigraphy", "chronostratigraphy", "biostratigraphy" ], "title": "Strat Column Type", "description": "The type of stratigraphic column this unit belongs to." }, "color_html": { "anyOf": [ { "type": "string", "pattern": "#[0-9a-fA-F]{6}" }, { "type": "null" } ], "title": "Color Html", "description": "The HTML hex color code for visualization." }, "color_r": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Color R", "description": "The red component of the RGB color." }, "color_g": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Color G", "description": "The green component of the RGB color." }, "color_b": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Color B", "description": "The blue component of the RGB color." } }, "type": "object", "required": [ "identifier", "uuid", "strat_unit_type", "strat_unit_level", "top", "top_uuid", "base", "base_uuid", "top_age", "base_age", "strat_unit_parent", "strat_column_type", "color_r", "color_g", "color_b" ], "title": "StratigraphicUnit", "description": "Stratigraphic unit item." }, "SumoAsset": { "properties": { "name": { "type": "string", "title": "Name", "description": "Name of the asset in Sumo." } }, "type": "object", "required": [ "name" ], "title": "SumoAsset", "description": "A Sumo asset available to the user." }, "UserAPIKeys": { "properties": { "smda_subscription": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Smda Subscription" } }, "type": "object", "title": "UserAPIKeys", "description": "Known API keys stored in a user config." }, "UserConfig": { "properties": { "schema_version": { "type": "integer", "const": 1, "title": "Schema Version", "default": 1 }, "version": { "type": "string", "pattern": "(\\d+(\\.\\d+){0,2}|\\d+\\.\\d+\\.[a-z0-9]+\\+[a-z0-9.]+)", "title": "Version" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "last_modified_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Last Modified At" }, "cache_max_revisions": { "type": "integer", "minimum": 5, "title": "Cache Max Revisions", "default": 5 }, "user_api_keys": { "$ref": "#/components/schemas/UserAPIKeys" }, "recent_project_directories": { "items": { "type": "string", "format": "path" }, "type": "array", "maxItems": 5, "title": "Recent Project Directories" } }, "type": "object", "required": [ "version", "created_at", "user_api_keys", "recent_project_directories" ], "title": "UserConfig", "description": "The configuration file in a $HOME/.fmu directory.\n\nStored as config.json." }, "ValidationError": { "properties": { "loc": { "items": { "anyOf": [ { "type": "string" }, { "type": "integer" } ] }, "type": "array", "title": "Location" }, "msg": { "type": "string", "title": "Message" }, "type": { "type": "string", "title": "Error Type" }, "input": { "title": "Input" }, "ctx": { "type": "object", "title": "Context" } }, "type": "object", "required": [ "loc", "msg", "type" ], "title": "ValidationError" }, "ValidationRecord": { "properties": { "last_validated_at": { "type": "string", "format": "date-time", "title": "Last Validated At" }, "last_validated_by": { "type": "string", "title": "Last Validated By" } }, "type": "object", "required": [ "last_validated_at", "last_validated_by" ], "title": "ValidationRecord", "description": "Metadata for a successful validation of project configuration data." }, "APIKeyWritable": { "properties": { "id": { "type": "string", "title": "Id" }, "key": { "type": "string", "format": "password", "title": "Key", "writeOnly": true } }, "type": "object", "required": [ "id", "key" ], "title": "APIKey", "description": "A key-value pair for a known and supported API." }, "AccessTokenWritable": { "properties": { "id": { "type": "string", "title": "Id" }, "key": { "type": "string", "format": "password", "title": "Key", "writeOnly": true } }, "type": "object", "required": [ "id", "key" ], "title": "AccessToken", "description": "A key-value pair for a known and supported access scope." } }, "securitySchemes": { "APIKeyHeader": { "type": "apiKey", "in": "header", "name": "x-fmu-settings-api" } } } }