{"openapi":"3.1.0","info":{"title":"DESDEO (fast)API","description":"A rest API for the DESDEO framework.","version":"0.1.0"},"paths":{"/user_info":{"get":{"summary":"Get Current User Info","description":"Return information about the current user.\n\nArgs:\n user (Annotated[User, Depends): user dependency, handled by `get_current_user`.\n\nReturns:\n UserPublic: public information about the current user.","operationId":"get_current_user_info_user_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPublic"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/login":{"post":{"summary":"Login","description":"Login to get an authentication token.\n\nReturn an access token in the response and a cookie storing a refresh token.\n\nArgs:\n form_data (Annotated[OAuth2PasswordRequestForm, Depends()]):\n The form data to authenticate the user.\n session (Annotated[Session, Depends(get_db)]): The database session.\n cookie_max_age (int): the lifetime of the cookie storing the refresh token.","operationId":"login_login_post","parameters":[{"name":"cookie_max_age","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Cookie Max Age"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_login_login_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/refresh":{"post":{"summary":"Refresh Access Token","description":"Refresh the access token using the refresh token stored in the cookie.\n\nArgs:\n request (Request): The request containing the cookie.\n session (Annotated[Session, Depends(get_db)]): the database session.\n refresh_token (Annotated[Str | None, Cookie()]): the refresh\n token, which is fetched from a cookie included in the response.\n\nReturns:\n dict: A dictionary containing the new access token.","operationId":"refresh_access_token_refresh_post","parameters":[{"name":"refresh_token","in":"cookie","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refresh Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/problem/all":{"get":{"summary":"Get Problems","description":"Get information on all the current user's problems.\n\nArgs:\n user (Annotated[User, Depends): the current user.\n\nReturns:\n list[ProblemInfoSmall]: a list of information on all the problems.","operationId":"get_problems_problem_all_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProblemInfoSmall"},"type":"array","title":"Response Get Problems Problem All Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/problem/all_info":{"get":{"summary":"Get Problems Info","description":"Get detailed information on all the current user's problems.\n\nArgs:\n user (Annotated[User, Depends): the current user.\n\nReturns:\n list[ProblemInfo]: a list of the detailed information on all the problems.","operationId":"get_problems_info_problem_all_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ProblemInfo"},"type":"array","title":"Response Get Problems Info Problem All Info Get"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/problem/get":{"post":{"summary":"Get Problem","description":"Get the model of a specific problem.\n\nArgs:\n request (ProblemGetRequest): the request containing the problem's id `problem_id`.\n user (Annotated[User, Depends): the current user.\n session (Annotated[Session, Depends): the database session.\n\nRaises:\n HTTPException: could not find a problem with the given id.\n\nReturns:\n ProblemInfo: detailed information on the requested problem.","operationId":"get_problem_problem_get_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemGetRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/problem/add":{"post":{"summary":"Add Problem","description":"Add a newly defined problem to the database.\n\nArgs:\n request (Problem): the JSON representation of the problem.\n user (Annotated[User, Depends): the current user.\n session (Annotated[Session, Depends): the database session.\n\nNote:\n Users with the role 'guest' may not add new problems.\n\nRaises:\n HTTPException: when any issue with defining the problem arises.\n\nReturns:\n ProblemInfo: the information about the problem added.","operationId":"add_problem_problem_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemInfo"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/session/new":{"post":{"summary":"Create New Session","description":".","operationId":"create_new_session_session_new_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteractiveSessionBase"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/session/get":{"post":{"summary":"Get Session","description":"Return an interactive session with a given id for the current user.\n\nArgs:\n request (GetSessionRequest): a request containing the id of the session.\n user (Annotated[User, Depends): the current user.\n session (Annotated[Session, Depends): the database session.\n\nRaises:\n HTTPException: could not find an interactive session with the given id\n for the current user.\n\nReturns:\n InteractiveSessionInfo: info on the requested interactive session.","operationId":"get_session_session_get_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteractiveSessionBase"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}},"/method/rpm/solve":{"post":{"summary":"Solve Solutions","description":".","operationId":"solve_solutions_method_rpm_solve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RPMSolveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RPMState"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2PasswordBearer":[]}]}}},"components":{"schemas":{"Body_login_login_post":{"properties":{"grant_type":{"anyOf":[{"type":"string","pattern":"^password$"},{"type":"null"}],"title":"Grant Type"},"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"},"scope":{"type":"string","title":"Scope","default":""},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Secret"}},"type":"object","required":["username","password"],"title":"Body_login_login_post"},"Constant":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the constant. This can be used in UI and visualizations. Example: 'maximum cost'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the constant. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'c_1'."},"value":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"}],"title":"Value","description":"The value of the constant."}},"type":"object","required":["name","symbol","value"],"title":"Constant","description":"Model for a constant."},"ConstantDB":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the constant. This can be used in UI and visualizations. Example: 'maximum cost'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the constant. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'c_1'."},"value":{"type":"number","title":"Value","description":"The value of the constant."},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["name","symbol","value"],"title":"ConstantDB","description":"The SQLModel equivalent to `Constant`."},"Constraint":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the constraint. This can be used in UI and visualizations. Example: 'maximum length'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the constraint. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'g_1'."},"cons_type":{"$ref":"#/components/schemas/ConstraintTypeEnum","description":"The type of the constraint. Constraints are assumed to be in a standard form where the supplied 'func' expression is on the left hand side of the constraint's expression, and on the right hand side a zero value is assume. The comparison between the left hand side and right hand side is either and quality comparison ('=') or lesser than equal comparison ('<=')."},"func":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Func","description":"Function of the constraint. This is a JSON object that can be parsed into a function.Must be a valid MathJSON object. The symbols in the function must match objective/variable/constant symbols.Can be 'None' if either 'simulator_path' or 'surrogates' is not 'None'. If 'None', either 'simulator_path' or 'surrogates' must not be 'None'."},"simulator_path":{"anyOf":[{"type":"string","format":"path"},{"type":"null"}],"title":"Simulator Path","description":"Path to a python file with the connection to simulators. Must be a valid Path.Can be 'None' for if either 'func' or 'surrogates' is not 'None'.If 'None', either 'func' or 'surrogates' must not be 'None'."},"surrogates":{"anyOf":[{"items":{"type":"string","format":"path"},"type":"array"},{"type":"null"}],"title":"Surrogates","description":"A list of paths to models saved on disk. Can be 'None' for if either 'func' or 'simulator_path' is not 'None'. If 'None', either 'func' or 'simulator_path' must not be 'None'."},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the constraint is linear or not. Defaults to True, e.g., a linear constraint is assumed.","default":true},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys","description":"Optional. The keys of the scenarios the constraint belongs to."}},"type":"object","required":["name","symbol","cons_type"],"title":"Constraint","description":"Model for a constraint function."},"ConstraintDB":{"properties":{"func":{"items":{},"type":"array","title":"Func"},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys"},"surrogates":{"anyOf":[{"items":{"type":"string","format":"path"},"type":"array"},{"type":"null"}],"title":"Surrogates"},"simulator_path":{"anyOf":[{"type":"string","format":"path"},{"type":"null"}],"title":"Simulator Path"},"name":{"type":"string","title":"Name","description":"Descriptive name of the constraint. This can be used in UI and visualizations. Example: 'maximum length'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the constraint. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'g_1'."},"cons_type":{"$ref":"#/components/schemas/ConstraintTypeEnum","description":"The type of the constraint. Constraints are assumed to be in a standard form where the supplied 'func' expression is on the left hand side of the constraint's expression, and on the right hand side a zero value is assume. The comparison between the left hand side and right hand side is either and quality comparison ('=') or lesser than equal comparison ('<=')."},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the constraint is linear or not. Defaults to True, e.g., a linear constraint is assumed.","default":true},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["func","name","symbol","cons_type"],"title":"ConstraintDB","description":"The SQLModel equivalent to `Constraint`."},"ConstraintTypeEnum":{"type":"string","enum":["=","<="],"title":"ConstraintTypeEnum","description":"An enumerator for supported constraint expression types."},"CreateSessionRequest":{"properties":{"info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info"}},"type":"object","title":"CreateSessionRequest","description":"Model of the request to create a new session."},"DiscreteRepresentation":{"properties":{"variable_values":{"additionalProperties":{"items":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"}]},"type":"array"},"type":"object","title":"Variable Values","description":"A dictionary with decision variable values. Each dict key points to a list of all the decision variable values available for the decision variable given in the key. The keys must match the 'symbols' defined for the decision variables."},"objective_values":{"additionalProperties":{"items":{"type":"number"},"type":"array"},"type":"object","title":"Objective Values","description":"A dictionary with objective function values. Each dict key points to a list of all the objective function values available for the objective function given in the key. The keys must match the 'symbols' defined for the objective functions."},"non_dominated":{"type":"boolean","title":"Non Dominated","description":"Indicates whether the representation consists of non-dominated points or not.If False, some method can employ non-dominated sorting, which might slow an interactive method down.","default":false}},"type":"object","required":["variable_values","objective_values"],"title":"DiscreteRepresentation","description":"Model to represent discrete objective function and decision variable pairs.\n\nCan be used alongside an analytical representation as well.\n\nUsed with Objectives of type 'data_based' by default. Each of the decision\nvariable values and objective functions values are ordered in their\nrespective dict entries. This means that the decision variable values found\nat `variable_values['x_i'][j]` correspond to the objective function values\nfound at `objective_values['f_i'][j]` for all `i` and some `j`."},"DiscreteRepresentationDB":{"properties":{"non_dominated":{"type":"boolean","title":"Non Dominated","default":false},"variable_values":{"additionalProperties":{"items":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"}]},"type":"array"},"type":"object","title":"Variable Values"},"objective_values":{"additionalProperties":{"items":{"type":"number"},"type":"array"},"type":"object","title":"Objective Values"},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["variable_values","objective_values"],"title":"DiscreteRepresentationDB","description":"The SQLModel equivalent to `DiscreteRepresentation`."},"ExtraFunction":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the function. Example: 'normalization'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the function. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'avg'."},"func":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Func","description":"The string representing the function. This is a JSON object that can be parsed into a function.Must be a valid MathJSON object. The symbols in the function must match symbols defined for objective/variable/constant.Can be 'None' if either 'simulator_path' or 'surrogates' is not 'None'. If 'None', either 'simulator_path' or 'surrogates' must not be 'None'."},"simulator_path":{"anyOf":[{"type":"string","format":"path"},{"type":"null"}],"title":"Simulator Path","description":"Path to a python file with the connection to simulators. Must be a valid Path.Can be 'None' for 'analytical', 'data_based' or 'surrogate' functions.If 'None', either 'func' or 'surrogates' must not be 'None'."},"surrogates":{"anyOf":[{"items":{"type":"string","format":"path"},"type":"array"},{"type":"null"}],"title":"Surrogates","description":"A list of paths to models saved on disk. Can be 'None' for 'analytical', 'data_based or 'simulator' functions. If 'None', either 'func' or 'simulator_path' must not be 'None'."},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the function expression is linear or not. Defaults to `False`.","default":false},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys","description":"Optional. The keys of the scenario the extra functions belongs to."}},"type":"object","required":["name","symbol"],"title":"ExtraFunction","description":"Model for extra functions.\n\nThese functions can, e.g., be functions that are re-used in the problem formulation, or\nthey are needed for other computations related to the problem."},"ExtraFunctionDB":{"properties":{"func":{"items":{},"type":"array","title":"Func"},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys"},"surrogates":{"anyOf":[{"items":{"type":"string","format":"path"},"type":"array"},{"type":"null"}],"title":"Surrogates"},"simulator_path":{"anyOf":[{"type":"string","format":"path"},{"type":"null"}],"title":"Simulator Path"},"name":{"type":"string","title":"Name","description":"Descriptive name of the function. Example: 'normalization'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the function. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'avg'."},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the function expression is linear or not. Defaults to `False`.","default":false},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["func","name","symbol"],"title":"ExtraFunctionDB","description":"The SQLModel equivalent to `ExtraFunction`."},"GetSessionRequest":{"properties":{"session_id":{"type":"integer","title":"Session Id"}},"type":"object","required":["session_id"],"title":"GetSessionRequest","description":"Model of the request to get a specific session."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InteractiveSessionBase":{"properties":{"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"info":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Info"}},"type":"object","required":["id","user_id","info"],"title":"InteractiveSessionBase","description":"The base model for representing interactive sessions."},"Objective":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the objective function. This can be used in UI and visualizations. Example: 'time'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the objective function. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'f_1'."},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"The unit of the objective function. This is optional. Used in UIs and visualizations. Example: 'seconds' or 'millions of hectares'."},"func":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Func","description":"The objective function. This is a JSON object that can be parsed into a function.Must be a valid MathJSON object. The symbols in the function must match the symbols defined for variable/constant/extra function. Can be 'None' for 'data_based', 'simulator' or 'surrogate' objective functions. If 'None', either 'simulator_path' or 'surrogates' must not be 'None'."},"simulator_path":{"anyOf":[{"type":"string","format":"path"},{"type":"null"}],"title":"Simulator Path","description":"Path to a python file with the connection to simulators. Must be a valid Path.Can be 'None' for 'analytical', 'data_based' or 'surrogate' objective functions.If 'None', either 'func' or 'surrogates' must not be 'None'."},"surrogates":{"anyOf":[{"items":{"type":"string","format":"path"},"type":"array"},{"type":"null"}],"title":"Surrogates","description":"A list of paths to models saved on disk. Can be 'None' for 'analytical', 'data_based or 'simulator' objective functions. If 'None', either 'func' or 'simulator_path' must not be 'None'."},"maximize":{"type":"boolean","title":"Maximize","description":"Whether the objective function is to be maximized or minimized.","default":false},"ideal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ideal","description":"Ideal value of the objective. This is optional."},"nadir":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nadir","description":"Nadir value of the objective. This is optional."},"objective_type":{"$ref":"#/components/schemas/ObjectiveTypeEnum","description":"The type of objective function. 'analytical' means the objective function value is calculated based on 'func'. 'data_based' means the objective function value should be retrieved from a table. In case of 'data_based' objective function, the 'func' field is ignored. Defaults to 'analytical'.","default":"analytical"},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the function expression is linear or not. Defaults to `False`.","default":false},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys","description":"Optional. The keys of the scenarios the objective function belongs to."}},"type":"object","required":["name","symbol"],"title":"Objective","description":"Model for an objective function."},"ObjectiveDB":{"properties":{"func":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Func"},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys"},"surrogates":{"anyOf":[{"items":{"type":"string","format":"path"},"type":"array"},{"type":"null"}],"title":"Surrogates"},"simulator_path":{"anyOf":[{"type":"string","format":"path"},{"type":"null"}],"title":"Simulator Path"},"name":{"type":"string","title":"Name","description":"Descriptive name of the objective function. This can be used in UI and visualizations. Example: 'time'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the objective function. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'f_1'."},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"The unit of the objective function. This is optional. Used in UIs and visualizations. Example: 'seconds' or 'millions of hectares'."},"maximize":{"type":"boolean","title":"Maximize","description":"Whether the objective function is to be maximized or minimized.","default":false},"ideal":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ideal","description":"Ideal value of the objective. This is optional."},"nadir":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nadir","description":"Nadir value of the objective. This is optional."},"objective_type":{"$ref":"#/components/schemas/ObjectiveTypeEnum","description":"The type of objective function. 'analytical' means the objective function value is calculated based on 'func'. 'data_based' means the objective function value should be retrieved from a table. In case of 'data_based' objective function, the 'func' field is ignored. Defaults to 'analytical'.","default":"analytical"},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the function expression is linear or not. Defaults to `False`.","default":false},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["func","name","symbol"],"title":"ObjectiveDB","description":"The SQLModel equivalent to `Objective`."},"ObjectiveTypeEnum":{"type":"string","enum":["analytical","data_based","simulator","surrogate"],"title":"ObjectiveTypeEnum","description":"An enumerator for supported objective function types."},"Problem":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the problem."},"description":{"type":"string","title":"Description","description":"Description of the problem."},"constants":{"anyOf":[{"items":{"anyOf":[{"$ref":"#/components/schemas/Constant"},{"$ref":"#/components/schemas/TensorConstant"}]},"type":"array"},{"type":"null"}],"title":"Constants","description":"Optional list of the constants present in the problem."},"variables":{"items":{"anyOf":[{"$ref":"#/components/schemas/Variable"},{"$ref":"#/components/schemas/TensorVariable"}]},"type":"array","title":"Variables","description":"List of variables present in the problem."},"objectives":{"items":{"$ref":"#/components/schemas/Objective"},"type":"array","title":"Objectives","description":"List of the objectives present in the problem."},"constraints":{"anyOf":[{"items":{"$ref":"#/components/schemas/Constraint"},"type":"array"},{"type":"null"}],"title":"Constraints","description":"Optional list of constraints present in the problem."},"extra_funcs":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExtraFunction"},"type":"array"},{"type":"null"}],"title":"Extra Funcs","description":"Optional list of extra functions. Use this if some function is repeated multiple times."},"scalarization_funcs":{"anyOf":[{"items":{"$ref":"#/components/schemas/ScalarizationFunction"},"type":"array"},{"type":"null"}],"title":"Scalarization Funcs","description":"Optional list of scalarization functions of the problem."},"discrete_representation":{"anyOf":[{"$ref":"#/components/schemas/DiscreteRepresentation"},{"type":"null"}],"description":"Optional. Required when there are one or more 'data_based' Objectives. The corresponding values of the 'data_based' objective function will be fetched from this with the given variable values. Is also utilized for methods which require both an analytical and discrete representation of a problem."},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys","description":"Optional. The scenario keys defined for the problem. Each key will point to a subset of objectives, constraints, extra functions, and scalarization functions that have the same scenario key defined to them.If None, then the problem is assumed to not contain scenarios."},"simulators":{"anyOf":[{"items":{"$ref":"#/components/schemas/Simulator"},"type":"array"},{"type":"null"}],"title":"Simulators","description":"Optional. The simulators used by the problem. Required when there are one or more Objectives defined by simulators. The corresponding values of the 'simulator' objective function will be fetched from these simulators with the given variable values."},"is_convex":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Convex","description":"Optional. Used to manually indicate if the problem, as a whole, can be considered to be convex. If set to `None`, this property will be automatically inferred from the respective properties of other attributes."},"is_linear":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Linear","description":"Optional. Used to manually indicate if the problem, as a whole, can be considered to be linear. If set to `None`, this property will be automatically inferred from the respective properties of other attributes."},"is_twice_differentiable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Twice Differentiable","description":"Optional. Used to manually indicate if the problem, as a whole, can be considered to be twice differentiable. If set to `None`, this property will be automatically inferred from the respective properties of other attributes."}},"type":"object","required":["name","description","variables","objectives"],"title":"Problem","description":"Model for a problem definition."},"ProblemGetRequest":{"properties":{"problem_id":{"type":"integer","title":"Problem Id"}},"type":"object","required":["problem_id"],"title":"ProblemGetRequest","description":"Model to deal with problem fetching requests."},"ProblemInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"is_convex":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Convex"},"is_linear":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Linear"},"is_twice_differentiable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Twice Differentiable"},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys"},"variable_domain":{"$ref":"#/components/schemas/VariableDomainTypeEnum"},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"constants":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConstantDB"},"type":"array"},{"type":"null"}],"title":"Constants"},"tensor_constants":{"anyOf":[{"items":{"$ref":"#/components/schemas/TensorConstantDB"},"type":"array"},{"type":"null"}],"title":"Tensor Constants"},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/VariableDB"},"type":"array"},{"type":"null"}],"title":"Variables"},"tensor_variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/TensorVariableDB"},"type":"array"},{"type":"null"}],"title":"Tensor Variables"},"objectives":{"items":{"$ref":"#/components/schemas/ObjectiveDB"},"type":"array","title":"Objectives"},"constraints":{"anyOf":[{"items":{"$ref":"#/components/schemas/ConstraintDB"},"type":"array"},{"type":"null"}],"title":"Constraints"},"scalarization_funcs":{"anyOf":[{"items":{"$ref":"#/components/schemas/ScalarizationFunctionDB"},"type":"array"},{"type":"null"}],"title":"Scalarization Funcs"},"extra_funcs":{"anyOf":[{"items":{"$ref":"#/components/schemas/ExtraFunctionDB"},"type":"array"},{"type":"null"}],"title":"Extra Funcs"},"discrete_representation":{"anyOf":[{"$ref":"#/components/schemas/DiscreteRepresentationDB"},{"type":"null"}]},"simulators":{"anyOf":[{"items":{"$ref":"#/components/schemas/SimulatorDB"},"type":"array"},{"type":"null"}],"title":"Simulators"}},"type":"object","required":["name","description","is_convex","is_linear","is_twice_differentiable","scenario_keys","variable_domain","id","user_id","constants","tensor_constants","variables","tensor_variables","objectives","constraints","scalarization_funcs","extra_funcs","discrete_representation","simulators"],"title":"ProblemInfo","description":"."},"ProblemInfoSmall":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"is_convex":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Convex"},"is_linear":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Linear"},"is_twice_differentiable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Twice Differentiable"},"scenario_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Scenario Keys"},"variable_domain":{"$ref":"#/components/schemas/VariableDomainTypeEnum"},"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"}},"type":"object","required":["name","description","is_convex","is_linear","is_twice_differentiable","scenario_keys","variable_domain","id","user_id"],"title":"ProblemInfoSmall","description":"."},"RPMSolveRequest":{"properties":{"problem_id":{"type":"integer","title":"Problem Id"},"session_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Session Id"},"parent_state_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent State Id"},"scalarization_options":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"}]},"type":"object"},{"type":"null"}],"title":"Scalarization Options"},"solver":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver"},"solver_options":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"}]},"type":"object"},{"type":"null"}],"title":"Solver Options"},"preference":{"$ref":"#/components/schemas/ReferencePoint"}},"type":"object","required":["problem_id"],"title":"RPMSolveRequest","description":"Model of the request to the reference point method."},"RPMState":{"properties":{"method":{"type":"string","const":"reference_point_method","title":"Method","default":"reference_point_method"},"phase":{"type":"string","const":"solve_candidates","title":"Phase","default":"solve_candidates"},"scalarization_options":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"}]},"type":"object"},{"type":"null"}],"title":"Scalarization Options"},"solver":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solver"},"solver_options":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"boolean"}]},"type":"object"},{"type":"null"}],"title":"Solver Options"},"solver_results":{"items":{"$ref":"#/components/schemas/SolverResults"},"type":"array","title":"Solver Results"}},"type":"object","required":["solver_results"],"title":"RPMState","description":"State of the reference point method for computing solutions."},"ReferencePoint":{"properties":{"preference_type":{"type":"string","const":"reference_point","title":"Preference Type","default":"reference_point"},"aspiration_levels":{"additionalProperties":{"type":"number"},"type":"object","title":"Aspiration Levels"}},"type":"object","required":["aspiration_levels"],"title":"ReferencePoint","description":"Model for representing a reference point type of preference."},"ScalarizationFunction":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the scalarization function."},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","description":"Optional symbol to represent the scalarization function. This may be used in UIs and visualizations."},"func":{"items":{},"type":"array","title":"Func","description":"Function representation of the scalarization. This is a JSON object that can be parsed into a function.Must be a valid MathJSON object. The symbols in the function must match the symbols defined for objective/variable/constant/extra function."},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the function expression is linear or not. Defaults to `False`.","default":false},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"scenario_keys":{"items":{"type":"string"},"type":"array","title":"Scenario Keys","description":"Optional. The keys of the scenarios the scalarization function belongs to."}},"type":"object","required":["name","func"],"title":"ScalarizationFunction","description":"Model for scalarization of the problem."},"ScalarizationFunctionDB":{"properties":{"func":{"items":{},"type":"array","title":"Func"},"scenario_keys":{"items":{"type":"string"},"type":"array","title":"Scenario Keys"},"name":{"type":"string","title":"Name","description":"Name of the scalarization function."},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol","description":"Optional symbol to represent the scalarization function. This may be used in UIs and visualizations."},"is_linear":{"type":"boolean","title":"Is Linear","description":"Whether the function expression is linear or not. Defaults to `False`.","default":false},"is_convex":{"type":"boolean","title":"Is Convex","description":"Whether the function expression is convex or not (non-convex). Defaults to `False`.","default":false},"is_twice_differentiable":{"type":"boolean","title":"Is Twice Differentiable","description":"Whether the function expression is twice differentiable or not. Defaults to `False`","default":false},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["func","scenario_keys","name"],"title":"ScalarizationFunctionDB","description":"The SQLModel equivalent to `ScalarizationFunction`."},"Simulator":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the simulator. This can be used in UI and visualizations."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the simulator. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations."},"file":{"type":"string","format":"path","title":"File","description":"Path to a python file with the connection to simulators."},"parameter_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameter Options","description":"Parameters to the simulator that are not decision variables, but affect the results.Format is similar to decision variables. Can be 'None'."}},"type":"object","required":["name","symbol","file"],"title":"Simulator","description":"Model for simulator data."},"SimulatorDB":{"properties":{"file":{"type":"string","format":"path","title":"File"},"parameter_options":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameter Options"},"name":{"type":"string","title":"Name","description":"Descriptive name of the simulator. This can be used in UI and visualizations."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the simulator. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations."},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["file","name","symbol"],"title":"SimulatorDB","description":"The SQLModel equivalent to `Simulator`."},"SolverResults":{"properties":{"optimal_variables":{"additionalProperties":{"anyOf":[{"type":"integer"},{"type":"number"},{"items":{},"type":"array"}]},"type":"object","title":"Optimal Variables","description":"The optimal decision variables found."},"optimal_objectives":{"additionalProperties":{"anyOf":[{"type":"number"},{"items":{"type":"number"},"type":"array"}]},"type":"object","title":"Optimal Objectives","description":"The objective function values corresponding to the optimal decision variables found."},"constraint_values":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"items":{"type":"number"},"type":"array"}]},"type":"object"},{"type":"null"}],"title":"Constraint Values","description":"The constraint values of the problem. A negative value means the constraint is respected, a positive one means it has been breached."},"extra_func_values":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"items":{"type":"number"},"type":"array"}]},"type":"object"},{"type":"null"}],"title":"Extra Func Values","description":"The extra function values of the problem."},"scalarization_values":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"number"},{"items":{"type":"number"},"type":"array"}]},"type":"object"},{"type":"null"}],"title":"Scalarization Values","description":"The scalarization function values of the problem."},"success":{"type":"boolean","title":"Success","description":"A boolean flag indicating whether the optimization was successful or not."},"message":{"type":"string","title":"Message","description":"Description of the cause of termination."}},"type":"object","required":["optimal_variables","optimal_objectives","success","message"],"title":"SolverResults","description":"Defines a schema for a dataclass to store the results of a solver."},"Tensor-Input":{"anyOf":[{"items":{"$ref":"#/components/schemas/Tensor-Input"},"type":"array"},{"items":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"}]},"type":"array"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"string","const":"List"},{"type":"null"}]},"Tensor-Output":{"anyOf":[{"items":{"$ref":"#/components/schemas/Tensor-Output"},"type":"array"},{"items":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"}]},"type":"array"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"string","const":"List"},{"type":"null"}]},"TensorConstant":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the tensor representing the values. E.g., 'distances'"},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the constant. This will be used in the rest of the problem definition. Notice that the elements of the tensor will be represented with the symbol followed by indices. E.g., the first element of the third element of a 2-dimensional tensor, is represented by 'x_1_3', where 'x' is the symbol given to the TensorVariable. Note that indexing starts from 1."},"shape":{"items":{"type":"integer"},"type":"array","title":"Shape","description":"A list of the dimensions of the tensor, e.g., `[2, 3]` would indicate a matrix with 2 rows and 3 columns."},"values":{"$ref":"#/components/schemas/Tensor-Input","description":"A list of lists, with the elements representing the values of each constant element in the tensor. E.g., `[[5, 22, 0], [14, 5, 44]]`."}},"type":"object","required":["name","symbol","shape","values"],"title":"TensorConstant","description":"Model for a tensor containing constant values."},"TensorConstantDB":{"properties":{"values":{"$ref":"#/components/schemas/Tensor-Output"},"shape":{"items":{"type":"integer"},"type":"array","title":"Shape"},"name":{"type":"string","title":"Name","description":"Descriptive name of the tensor representing the values. E.g., 'distances'"},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the constant. This will be used in the rest of the problem definition. Notice that the elements of the tensor will be represented with the symbol followed by indices. E.g., the first element of the third element of a 2-dimensional tensor, is represented by 'x_1_3', where 'x' is the symbol given to the TensorVariable. Note that indexing starts from 1."},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["values","shape","name","symbol"],"title":"TensorConstantDB","description":"The SQLModel equivalent to `TensorConstant`."},"TensorVariable":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the variable. This can be used in UI and visualizations. Example: 'velocity'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the variable. This will be used in the rest of the problem definition. Notice that the elements of the tensor will be represented with the symbol followed by indices. E.g., the first element of the third element of a 2-dimensional tensor, is represented by 'x_1_3', where 'x' is the symbol given to the TensorVariable. Note that indexing starts from 1."},"variable_type":{"$ref":"#/components/schemas/VariableTypeEnum","description":"Type of the variable. Can be real, integer, or binary. Note that each element of a TensorVariable is assumed to be of the same type."},"shape":{"items":{"type":"integer"},"type":"array","title":"Shape","description":"A list of the dimensions of the tensor, e.g., `[2, 3]` would indicate a matrix with 2 rows and 3 columns."},"lowerbounds":{"anyOf":[{"$ref":"#/components/schemas/Tensor-Input"},{"type":"null"}],"description":"A list of lists, with the elements representing the lower bounds of each element. E.g., `[[1, 2, 3], [4, 5, 6]]`. If a single value is supplied, that value is assumed to be the lower bound of each element. Defaults to None."},"upperbounds":{"anyOf":[{"$ref":"#/components/schemas/Tensor-Input"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}],"title":"Upperbounds","description":"A list of lists, with the elements representing the upper bounds of each element. E.g., `[[1, 2, 3], [4, 5, 6]]`. If a single value is supplied, that value is assumed to be the upper bound of each element. Defaults to None."},"initial_values":{"anyOf":[{"$ref":"#/components/schemas/Tensor-Input"},{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}],"title":"Initial Values","description":"A list of lists, with the elements representing the initial values of each element. E.g., `[[1, 2, 3], [4, 5, 6]]`. If a single value is supplied, that value is assumed to be the initial value of each element. Defaults to None."}},"type":"object","required":["name","symbol","variable_type","shape"],"title":"TensorVariable","description":"Model for a tensor, e.g., vector variable."},"TensorVariableDB":{"properties":{"initial_values":{"anyOf":[{"$ref":"#/components/schemas/Tensor-Output"},{"type":"null"}]},"lowerbounds":{"anyOf":[{"$ref":"#/components/schemas/Tensor-Output"},{"type":"null"}]},"upperbounds":{"anyOf":[{"$ref":"#/components/schemas/Tensor-Output"},{"type":"null"}]},"shape":{"items":{"type":"integer"},"type":"array","title":"Shape"},"name":{"type":"string","title":"Name","description":"Descriptive name of the variable. This can be used in UI and visualizations. Example: 'velocity'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the variable. This will be used in the rest of the problem definition. Notice that the elements of the tensor will be represented with the symbol followed by indices. E.g., the first element of the third element of a 2-dimensional tensor, is represented by 'x_1_3', where 'x' is the symbol given to the TensorVariable. Note that indexing starts from 1."},"variable_type":{"$ref":"#/components/schemas/VariableTypeEnum","description":"Type of the variable. Can be real, integer, or binary. Note that each element of a TensorVariable is assumed to be of the same type."},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["initial_values","lowerbounds","upperbounds","shape","name","symbol","variable_type"],"title":"TensorVariableDB","description":"The SQLModel equivalent to `TensorVariable`."},"UserPublic":{"properties":{"username":{"type":"string","title":"Username"},"id":{"type":"integer","title":"Id"},"role":{"$ref":"#/components/schemas/UserRole"},"group":{"type":"string","title":"Group"}},"type":"object","required":["username","id","role","group"],"title":"UserPublic","description":"The object to handle public user information."},"UserRole":{"type":"string","enum":["guest","dm","analyst","admin"],"title":"UserRole","description":"Possible user roles."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"Variable":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the variable. This can be used in UI and visualizations. Example: 'velocity'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the variable. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'v_1'."},"variable_type":{"$ref":"#/components/schemas/VariableTypeEnum","description":"Type of the variable. Can be real, integer or binary."},"lowerbound":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}],"title":"Lowerbound","description":"Lower bound of the variable."},"upperbound":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}],"title":"Upperbound","description":"Upper bound of the variable."},"initial_value":{"anyOf":[{"type":"number"},{"type":"integer"},{"type":"boolean"},{"type":"null"}],"title":"Initial Value","description":"Initial value of the variable. This is optional."}},"type":"object","required":["name","symbol","variable_type"],"title":"Variable","description":"Model for a variable."},"VariableDB":{"properties":{"name":{"type":"string","title":"Name","description":"Descriptive name of the variable. This can be used in UI and visualizations. Example: 'velocity'."},"symbol":{"type":"string","title":"Symbol","description":"Symbol to represent the variable. This will be used in the rest of the problem definition. It may also be used in UIs and visualizations. Example: 'v_1'."},"variable_type":{"$ref":"#/components/schemas/VariableTypeEnum","description":"Type of the variable. Can be real, integer or binary."},"lowerbound":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lowerbound","description":"Lower bound of the variable."},"upperbound":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Upperbound","description":"Upper bound of the variable."},"initial_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Initial Value","description":"Initial value of the variable. This is optional."},"id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Id"},"problem_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Problem Id"}},"type":"object","required":["name","symbol","variable_type"],"title":"VariableDB","description":"The SQLModel equivalent to `Variable`."},"VariableDomainTypeEnum":{"type":"string","enum":["continuous","binary","integer","mixed"],"title":"VariableDomainTypeEnum","description":"An enumerator for the possible variable type domains of a problem."},"VariableTypeEnum":{"type":"string","enum":["real","integer","binary"],"title":"VariableTypeEnum","description":"An enumerator for possible variable types."}},"securitySchemes":{"OAuth2PasswordBearer":{"type":"oauth2","flows":{"password":{"scopes":{},"tokenUrl":"login"}}}}}}