---
swagger: "2.0"
info:
  description: "Backend of the oc-search project"
  version: "1.0.0"
  title: "oc-catalog API"
  contact:
    email: "valentin.kivachuk@irt-saintexupery.com"
basePath: "/v1"
tags:
- name: "data"
  description: "All operations related to the rType data\n"
- name: "computing"
  description: "All operations related to the rType computing\n"
- name: "datacenter"
  description: "DatacenterController operations about datacenters\n"
- name: "storage"
  description: "StorageController operations about storage\n"
paths:
  /computing/:
    post:
      tags:
      - "computing"
      description: "Submit a computing object"
      operationId: "ComputingController.Add computing"
      parameters:
      - in: "body"
        name: "body"
        description: "The object content"
        required: true
        schema:
          $ref: "#/definitions/models.ComputingNEWModel"
        x-exportParamName: "Body"
      responses:
        "200":
          description: "{string} ID"
        "403":
          description: "Missing body or fields"
  /computing/multi/{IDs}:
    get:
      tags:
      - "computing"
      description: "Return Computing objects if found in the DB. Not found IDs will\
        \ be ignored"
      operationId: "ComputingController.Get multiple computing by IDs"
      parameters:
      - name: "IDs"
        in: "path"
        description: "List of computing IDs"
        required: true
        type: "array"
        items:
          type: "string"
        x-exportParamName: "IDs"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.ComputingModel"
        "403":
          description: "IDs are empty"
  /computing/{ID}:
    get:
      tags:
      - "computing"
      description: "Find a computing resource based on ID"
      operationId: "ComputingController.Get computing by ID"
      parameters:
      - name: "ID"
        in: "path"
        description: "The ID of the resource"
        required: true
        type: "string"
        x-exportParamName: "ID"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.ComputingModel"
        "403":
          description: "ID is empty"
  /data/:
    post:
      tags:
      - "data"
      description: "Submit data object"
      operationId: "DataController.Create Data"
      parameters:
      - in: "body"
        name: "body"
        description: "The object content"
        required: true
        schema:
          $ref: "#/definitions/models.DataNEWModel"
        x-exportParamName: "Body"
      responses:
        "200":
          description: "{string} ID"
        "403":
          description: "Missing body or fields"
  /data/multi/{IDs}:
    get:
      tags:
      - "data"
      description: "Return Data object if found in the DB. Not found IDs will be ignored"
      operationId: "DataController.Get multiple data by IDs"
      parameters:
      - name: "IDs"
        in: "path"
        description: "List of data IDs"
        required: true
        type: "array"
        items:
          type: "string"
        x-exportParamName: "IDs"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.DataModel"
        "403":
          description: "IDs are empty"
  /data/{ID}:
    get:
      tags:
      - "data"
      description: "Find rType data based on ID"
      operationId: "DataController.Get data by ID"
      parameters:
      - name: "ID"
        in: "path"
        description: "The ID of the data resource"
        required: true
        type: "string"
        x-exportParamName: "ID"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.DataModel"
        "403":
          description: "ID is empty"
  /datacenter/:
    post:
      tags:
      - "datacenter"
      description: "submit Datacenter object"
      operationId: "DatacenterController.Create Datacenter"
      parameters:
      - in: "body"
        name: "body"
        description: "The object content"
        required: true
        schema:
          $ref: "#/definitions/models.DatacenterNEWModel"
        x-exportParamName: "Body"
      responses:
        "200":
          description: "{string} models.DatacenterModel"
        "403":
          description: "Missing body or fields"
  /datacenter/multi/{IDs}:
    get:
      tags:
      - "datacenter"
      description: "Return Datacenter objects if found in the DB. Not found IDs will\
        \ be ignored"
      operationId: "DatacenterController.Get multiple datacenters by IDs"
      parameters:
      - name: "IDs"
        in: "path"
        description: "List of datacenter IDs"
        required: true
        type: "array"
        items:
          type: "string"
        x-exportParamName: "IDs"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.ComputingModel"
        "403":
          description: "IDs are empty"
  /datacenter/{ID}:
    get:
      tags:
      - "datacenter"
      description: "find datacenter by ID"
      operationId: "DatacenterController.GetOneDatacenter"
      parameters:
      - name: "ID"
        in: "path"
        description: "the ID you want to get"
        required: true
        type: "string"
        x-exportParamName: "ID"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.DatacenterModel"
        "403":
          description: "ID is empty"
  /schedule/:
    get:
      tags:
      - "schedule"
      description: "Get a list of next startDates schedules (inclusive). If timezone\
        \ is not specified, will assume UTC"
      operationId: "ScheduleController.Get schedules"
      parameters:
      - name: "startDate"
        in: "query"
        description: "Start date"
        required: true
        x-exportParamName: "StartDate"
      - name: "stopDate"
        in: "query"
        description: "End date"
        required: true
        x-exportParamName: "StopDate"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.ScheduleDB"
        "201":
          description: "Too much elements within the range of dates"
        "400":
          description: "Other error. Check the output"
        "403":
          description: "Authentication issue"
  /schedule/book:
    post:
      tags:
      - "schedule"
      description: "Create schedule for a workflow. It will return some future executions\
        \ just as information"
      operationId: "ScheduleController.Create schedule"
      parameters:
      - name: "dcName"
        in: "query"
        description: "Name of the node (oc-catalog) from where the workflow comes."
        required: true
        type: "string"
        x-exportParamName: "DcName"
      - name: "workflowName"
        in: "query"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      - name: "cron"
        in: "query"
        description: "Cron syntax with year. If no year is specified, will use the\
          \ current"
        required: true
        type: "string"
        x-exportParamName: "Cron"
      - name: "duration"
        in: "query"
        description: "Duration in seconds"
        required: true
        type: "integer"
        format: "int32"
        x-exportParamName: "Duration"
      - name: "startDate"
        in: "query"
        description: "RFC3339 time for startDate"
        required: true
        x-exportParamName: "StartDate"
      - name: "stopDate"
        in: "query"
        description: "RFC3339 time for stopDate"
        required: true
        x-exportParamName: "StopDate"
      - in: "body"
        name: "requirements"
        description: "The object content"
        required: true
        schema:
          $ref: "#/definitions/models.ExecutionRequirementsModel"
        x-exportParamName: "Requirements"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.ScheduleInfo"
        "400":
          description: "workflowName not found or empty"
        "403":
          description: "Authentication issue"
  /schedule/check:
    post:
      tags:
      - "schedule"
      description: "Check for availability of this DC"
      operationId: "ScheduleController.Check if schedule can be created in this DC"
      parameters:
      - name: "cron"
        in: "query"
        description: "Cron syntax"
        required: true
        type: "string"
        x-exportParamName: "Cron"
      - name: "duration"
        in: "query"
        description: "Duration in seconds"
        required: true
        type: "integer"
        format: "int32"
        x-exportParamName: "Duration"
      - name: "startDate"
        in: "query"
        description: "RFC3339 time for startDate"
        required: true
        x-exportParamName: "StartDate"
      - name: "stopDate"
        in: "query"
        description: "RFC3339 time for stopDate"
        required: true
        x-exportParamName: "StopDate"
      - in: "body"
        name: "requirements"
        description: "The object content"
        required: true
        schema:
          $ref: "#/definitions/models.ExecutionRequirementsModel"
        x-exportParamName: "Requirements"
      responses:
        "200":
          description: "The schedule can be created"
        "400":
          description: "Other error. Check the output"
        "403":
          description: "Authentication issue"
  /schedule/next:
    get:
      tags:
      - "schedule"
      description: "Give a date, get the next date where there are at least on schedule.\
        \ If no hours specified, will assume 00:00"
      operationId: "ScheduleController.Get next schedule"
      parameters:
      - name: "baseDate"
        in: "query"
        description: "Base date"
        required: true
        x-exportParamName: "BaseDate"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/*time.Time"
        "400":
          description: "Other error. Check the output"
        "403":
          description: "Authentication issue"
  /schedule/previous:
    get:
      tags:
      - "schedule"
      description: "Give a date, get the previous date where there are at least on\
        \ schedule. If no hours specified, will assume 00:00"
      operationId: "ScheduleController.Get previous schedule"
      parameters:
      - name: "baseDate"
        in: "query"
        description: "Base date"
        required: true
        x-exportParamName: "BaseDate"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/*time.Time"
        "400":
          description: "Other error. Check the output"
        "403":
          description: "Authentication issue"
  /search/byWord:
    get:
      tags:
      - "search"
      description: "find resources by word"
      operationId: "SearchController.Search by word"
      parameters:
      - name: "word"
        in: "query"
        description: "Word to search across all resources"
        required: true
        type: "string"
        x-exportParamName: "Word"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.SearchResult"
        "503":
          description: "Internal error"
  /storage/:
    post:
      tags:
      - "storage"
      description: "submit storage object"
      operationId: "StorageController.Create Storage"
      parameters:
      - in: "body"
        name: "body"
        description: "The object content"
        required: true
        schema:
          $ref: "#/definitions/models.StorageNEWModel"
        x-exportParamName: "Body"
      responses:
        "200":
          description: "{string} models.StorageModel"
        "403":
          description: "Missing body or fields"
  /storage/multi/{IDs}:
    get:
      tags:
      - "storage"
      description: "Return Storage objects if found in the DB. Not found IDs will\
        \ be ignored"
      operationId: "StorageController.Get multiple storages by IDs"
      parameters:
      - name: "IDs"
        in: "path"
        description: "List of storage IDs"
        required: true
        type: "array"
        items:
          type: "string"
        x-exportParamName: "IDs"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.ComputingModel"
        "403":
          description: "IDs are empty"
  /storage/{ID}:
    get:
      tags:
      - "storage"
      description: "find storage by ID"
      operationId: "StorageController.Get"
      parameters:
      - name: "ID"
        in: "path"
        description: "the ID you want to get"
        required: true
        type: "string"
        x-exportParamName: "ID"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.StorageModel"
        "403":
          description: "ID is empty"
  /user/login:
    get:
      tags:
      - "user"
      description: "Logs user into the system"
      operationId: "UserController.Login"
      parameters:
      - name: "username"
        in: "query"
        description: "The username for login"
        required: true
        type: "string"
        x-exportParamName: "Username"
      - name: "password"
        in: "query"
        description: "The password for login"
        required: true
        type: "string"
        x-exportParamName: "Password"
      responses:
        "200":
          description: "{string} login success"
        "403":
          description: "user not exist"
  /user/logout:
    get:
      tags:
      - "user"
      description: "Logs out current logged in user session"
      operationId: "UserController.logout"
      parameters: []
      responses:
        "200":
          description: "{string} logout success"
  /workflow/:
    get:
      tags:
      - "workflow"
      description: "List available workflows"
      operationId: "WorkflowController.List workflows"
      parameters: []
      responses:
        "200":
          description: "[]string List of workflows"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
    post:
      tags:
      - "workflow"
      description: "Create a name for the new workflow"
      operationId: "WorkflowController.Create a new workflow"
      parameters:
      - name: "workflowName"
        in: "query"
        description: "Name of the workflow"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      responses:
        "200":
          description: "{string} Workflow created succeful"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}:
    get:
      tags:
      - "workflow"
      description: "Get a workflow by name"
      operationId: "WorkflowController.Get Workflow"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.Workflow"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}/add:
    post:
      tags:
      - "workflow"
      description: "Create a Rtype object from already added resources to the workspace"
      operationId: "WorkflowController.Add new object to a Workflow"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      - name: "rID"
        in: "query"
        description: "rID of already existing item in Workspace"
        required: true
        type: "string"
        x-exportParamName: "RID"
      responses:
        "200":
          description: "{string} ID of the new object (rObjID)"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}/link:
    post:
      tags:
      - "workflow"
      description: "Create a Rtype object from already added resources to the workspace"
      operationId: "WorkflowController.Create a realtionship between two Robjects"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      - name: "rObjIDsource"
        in: "query"
        description: "Robject source. Usually Data"
        required: true
        type: "string"
        x-exportParamName: "RObjIDsource"
      - name: "isInput"
        in: "query"
        description: "If the operation is for input (true) linkage or output (false)"
        required: true
        type: "boolean"
        x-exportParamName: "IsInput"
      - name: "rObjIDtarger"
        in: "query"
        description: "Robject where will be written the association"
        required: true
        type: "string"
        x-exportParamName: "RObjIDtarger"
      responses:
        "200":
          description: "{string} ID of the new object (rObjID)"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}/mxGraphParser:
    get:
      tags:
      - "workflow"
      description: "Obtain the last mxgraph XML status from the workflow"
      operationId: "WorkflowController.Get mxGraph last status"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      responses:
        "200":
          description: "The xmlgraph"
        "201":
          description: "Empty workflow"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
    post:
      tags:
      - "workflow"
      description: "If we use this aproach to transofrm mxgraph representation in\
        \ our representation, we should not use other API calls for modify the project\
        \ structure or we'll have inconsistencies."
      operationId: "WorkflowController.Parse mxGraph"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      - in: "body"
        name: "xmlData"
        description: "Xml representation of the workflow"
        required: true
        schema:
          type: "string"
        x-exportParamName: "XmlData"
      responses:
        "200":
          description: "The xmlgraph consumed correctly"
        "201":
          description: "The xmlgraph consumed with issues"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}/schedule:
    get:
      tags:
      - "workflow"
      description: "Obtain the desired schedule of this workflow"
      operationId: "WorkflowController.Get Schedule"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.ScheduleTime"
        "400":
          description: "Workflow doesn't exist"
        "401":
          description: "Other error"
        "403":
          description: "Authentication issue"
    put:
      tags:
      - "workflow"
      description: "Set desired schedule by the user. No other effects a part of saving\
        \ the user input"
      operationId: "WorkflowController.Set Schedule"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      - name: "isService"
        in: "query"
        description: "True: Service, False: Task"
        required: true
        type: "boolean"
        x-exportParamName: "IsService"
      - name: "startDate"
        in: "query"
        description: "RFC3339 time for startDate"
        required: true
        x-exportParamName: "StartDate"
      - name: "stopDate"
        in: "query"
        description: "RFC3339 time for stopDate"
        required: true
        x-exportParamName: "StopDate"
      - name: "events"
        in: "query"
        description: "List of events separated by comma"
        required: false
        type: "string"
        x-exportParamName: "Events"
        x-optionalDataType: "String"
      - name: "cronString"
        in: "query"
        description: "Cron string"
        required: false
        type: "string"
        x-exportParamName: "CronString"
        x-optionalDataType: "String"
      - name: "duration"
        in: "query"
        description: "Duration in seconds"
        required: false
        type: "integer"
        format: "int32"
        x-exportParamName: "Duration"
        x-optionalDataType: "Int32"
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.ScheduleInfo"
        "400":
          description: "Workflow doesn't exist"
        "401":
          description: "Other error"
        "402":
          description: "Bad user input"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}/schedule/book:
    post:
      tags:
      - "workflow"
      description: "Book a schedule in all DCs of the workflow. Must set a desired\
        \ schedule first!"
      operationId: "WorkflowController.Book Schedule"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.DCstatus"
        "401":
          description: "Other error. Check output"
        "403":
          description: "Authentication issue"
  /workflow/{workflowName}/schedule/check:
    get:
      tags:
      - "workflow"
      description: "Check if we can schedule the project in other DCs. Must set a\
        \ desired schedule first!"
      operationId: "WorkflowController.Check Schedule"
      parameters:
      - name: "workflowName"
        in: "path"
        description: "Workflow Name"
        required: true
        type: "string"
        x-exportParamName: "WorkflowName"
      responses:
        "200":
          description: ""
          schema:
            type: "array"
            items:
              $ref: "#/definitions/models.DCstatus"
        "401":
          description: "Other error"
        "403":
          description: "Authentication issue"
  /workspace/:
    post:
      tags:
      - "workspace"
      description: "Insert a resource in the workspace"
      operationId: "WorkspaceController.Add model to workspace"
      parameters:
      - name: "id"
        in: "query"
        description: "ID of a resource"
        required: true
        type: "string"
        x-exportParamName: "Id"
      - name: "rtype"
        in: "query"
        description: "Type of resource"
        required: true
        type: "string"
        x-exportParamName: "Rtype"
      responses:
        "200":
          description: "{string} login success"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
    delete:
      tags:
      - "workspace"
      description: "Remove a resource from the workspace"
      operationId: "WorkspaceController.Delete element from user workspace"
      parameters:
      - name: "id"
        in: "query"
        description: "ID of a resource"
        required: true
        type: "string"
        x-exportParamName: "Id"
      - name: "rtype"
        in: "query"
        description: "Type of resource"
        required: true
        type: "string"
        x-exportParamName: "Rtype"
      responses:
        "200":
          description: "{string} Removed succeful"
        "400":
          description: "{string} Other error"
        "403":
          description: "Authentication issue"
  /workspace/list:
    get:
      tags:
      - "workspace"
      description: "Get workspace elements based on user_id token"
      operationId: "WorkspaceController.Get workspace"
      parameters: []
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.Workspace"
        "403":
          description: "Authentication issue"
  /workspace/list_model:
    get:
      tags:
      - "workspace"
      description: "Get full workspace elements based on user_id token"
      operationId: "WorkspaceController.Get full workspace"
      parameters: []
      responses:
        "200":
          description: ""
          schema:
            $ref: "#/definitions/models.WorkspaceModel"
        "403":
          description: "Authentication issue"
definitions:
  '*time.Time':
    type: "object"
    title: "Time"
  models.ComputingModel:
    type: "object"
    required:
    - "ID"
    properties:
      Dinputs:
        type: "array"
        items:
          type: "string"
      Doutputs:
        type: "array"
        items:
          type: "string"
      ID:
        type: "string"
        example: "5099803df3f4948bd2f98391"
      description:
        type: "string"
      execution_requirements:
        $ref: "#/definitions/models.ExecutionRequirementsModel"
      license:
        type: "string"
      logo:
        type: "string"
      name:
        type: "string"
        description: "Name of the computing"
      owner:
        type: "string"
      price:
        type: "integer"
        format: "int32"
      repository:
        $ref: "#/definitions/models.RepositoryModel"
      short_description:
        type: "string"
      type:
        type: "string"
    title: "ComputingModel"
    example:
      owner: "owner"
      short_description: "short_description"
      description: "description"
      repository:
        credentials: "credentials"
        url: "url"
      type: "type"
      Doutputs:
      - "Doutputs"
      - "Doutputs"
      license: "license"
      price: 5
      name: "name"
      logo: "logo"
      Dinputs:
      - "Dinputs"
      - "Dinputs"
      execution_requirements:
        cpus: 0
        parallel: true
        scaling_model: 5
        gpus: 6
        disk_io: "disk_io"
        ram: 1
      ID: "5099803df3f4948bd2f98391"
  models.ComputingNEWModel:
    type: "object"
    required:
    - "description"
    - "logo"
    - "name"
    - "short_description"
    - "type"
    properties:
      Dinputs:
        type: "array"
        items:
          type: "string"
      Doutputs:
        type: "array"
        items:
          type: "string"
      description:
        type: "string"
      execution_requirements:
        $ref: "#/definitions/models.ExecutionRequirementsModel"
      license:
        type: "string"
      logo:
        type: "string"
      name:
        type: "string"
        description: "Name of the computing"
      owner:
        type: "string"
      price:
        type: "integer"
        format: "int32"
      repository:
        $ref: "#/definitions/models.RepositoryModel"
      short_description:
        type: "string"
      type:
        type: "string"
    title: "ComputingNEWModel"
  models.ComputingObject:
    type: "object"
    properties:
      datacenterID:
        type: "string"
        description: "Datacenter where the computing will be executed"
      inputs:
        type: "array"
        items:
          type: "string"
      outputs:
        type: "array"
        items:
          type: "string"
      referenceID:
        description: "Computing model ID"
        $ref: "#/definitions/primitive.ObjectID"
    title: "ComputingObject"
    example:
      outputs:
      - "outputs"
      - "outputs"
      inputs:
      - "inputs"
      - "inputs"
      datacenterID: "datacenterID"
      referenceID: {}
  models.DCstatus:
    type: "object"
    properties:
      Booked:
        $ref: "#/definitions/models.ScheduleInfo"
      DCname:
        type: "string"
      DCobjID:
        type: "string"
      ErrorMessage:
        type: "string"
      IsAvailable:
        type: "boolean"
      IsReachable:
        type: "boolean"
    title: "DCstatus"
    example:
      DCobjID: "DCobjID"
      DCname: "DCname"
      IsAvailable: true
      Booked:
        Total: 0
        NextExecutions:
        - "NextExecutions"
        - "NextExecutions"
      IsReachable: true
      ErrorMessage: "ErrorMessage"
  models.DataModel:
    type: "object"
    required:
    - "ID"
    properties:
      ID:
        type: "string"
      description:
        type: "string"
      dtype:
        type: "string"
      example:
        type: "string"
        description: "base64 encoded data"
      location:
        type: "string"
      logo:
        type: "string"
      name:
        type: "string"
        description: "Name of the data"
      protocol:
        type: "array"
        items:
          type: "string"
      short_description:
        type: "string"
      type:
        type: "string"
        example: "file"
        description: "Define type of data"
    title: "DataModel"
    example:
      short_description: "short_description"
      protocol:
      - "protocol"
      - "protocol"
      name: "name"
      description: "description"
      dtype: "dtype"
      logo: "logo"
      location: "location"
      ID: "ID"
      type: "file"
      example: "example"
  models.DataNEWModel:
    type: "object"
    required:
    - "description"
    - "example"
    - "location"
    - "logo"
    - "name"
    - "short_description"
    - "type"
    properties:
      description:
        type: "string"
      dtype:
        type: "string"
      example:
        type: "string"
        description: "base64 encoded data"
      location:
        type: "string"
      logo:
        type: "string"
      name:
        type: "string"
        description: "Name of the data"
      protocol:
        type: "array"
        items:
          type: "string"
      short_description:
        type: "string"
      type:
        type: "string"
        example: "file"
        description: "Define type of data"
    title: "DataNEWModel"
  models.DataObject:
    type: "object"
    properties:
      referenceID:
        description: "Data model ID"
        $ref: "#/definitions/primitive.ObjectID"
    title: "DataObject"
    example: {}
  models.DatacenterCpuModel:
    type: "object"
    required:
    - "cores"
    properties:
      architecture:
        type: "string"
      cores:
        type: "integer"
        format: "int32"
      minimum_memory:
        type: "integer"
        format: "int32"
      platform:
        type: "string"
      shared:
        type: "boolean"
    title: "DatacenterCpuModel"
    example:
      shared: true
      cores: 6
      platform: "platform"
      architecture: "architecture"
      minimum_memory: 1
  models.DatacenterGpuModel:
    type: "object"
    properties:
      cuda_cores:
        type: "integer"
        format: "int32"
      memory:
        type: "integer"
        format: "int32"
        description: "Units in MB"
      model:
        type: "string"
      tensor_cores:
        type: "integer"
        format: "int32"
    title: "DatacenterGpuModel"
    example:
      memory: 5
      cuda_cores: 5
      model: "model"
      tensor_cores: 2
  models.DatacenterMemoryModel:
    type: "object"
    properties:
      ecc:
        type: "boolean"
      size:
        type: "integer"
        format: "int32"
        description: "Units in MB"
    title: "DatacenterMemoryModel"
    example:
      ecc: true
      size: 7
  models.DatacenterModel:
    type: "object"
    required:
    - "ID"
    properties:
      ID:
        type: "string"
      acronym:
        type: "string"
        description: "id of the DC"
      bookingPrice:
        type: "integer"
        format: "int64"
      cpu:
        $ref: "#/definitions/models.DatacenterCpuModel"
      description:
        type: "string"
      gpu:
        type: "array"
        items:
          $ref: "#/definitions/models.DatacenterGpuModel"
      hosts:
        type: "array"
        description: "list of host:port"
        items:
          type: "string"
      logo:
        type: "string"
      name:
        type: "string"
      owner:
        type: "string"
      ram:
        $ref: "#/definitions/models.DatacenterMemoryModel"
      short_description:
        type: "string"
      type:
        type: "string"
    title: "DatacenterModel"
    example:
      owner: "owner"
      short_description: "short_description"
      acronym: "acronym"
      hosts:
      - "hosts"
      - "hosts"
      cpu:
        shared: true
        cores: 6
        platform: "platform"
        architecture: "architecture"
        minimum_memory: 1
      description: "description"
      type: "type"
      gpu:
      - memory: 5
        cuda_cores: 5
        model: "model"
        tensor_cores: 2
      - memory: 5
        cuda_cores: 5
        model: "model"
        tensor_cores: 2
      bookingPrice: 0
      name: "name"
      logo: "logo"
      ID: "ID"
      ram:
        ecc: true
        size: 7
  models.DatacenterNEWModel:
    type: "object"
    required:
    - "acronym"
    - "cpu"
    - "description"
    - "gpu"
    - "hosts"
    - "logo"
    - "name"
    - "ram"
    - "short_description"
    - "type"
    properties:
      acronym:
        type: "string"
        description: "id of the DC"
      bookingPrice:
        type: "integer"
        format: "int64"
      cpu:
        $ref: "#/definitions/models.DatacenterCpuModel"
      description:
        type: "string"
      gpu:
        type: "array"
        items:
          $ref: "#/definitions/models.DatacenterGpuModel"
      hosts:
        type: "array"
        description: "list of host:port"
        items:
          type: "string"
      logo:
        type: "string"
      name:
        type: "string"
      owner:
        type: "string"
      ram:
        $ref: "#/definitions/models.DatacenterMemoryModel"
      short_description:
        type: "string"
      type:
        type: "string"
    title: "DatacenterNEWModel"
  models.DatacenterObject:
    type: "object"
    properties:
      referenceID:
        description: "Data model ID"
        $ref: "#/definitions/primitive.ObjectID"
    title: "DatacenterObject"
    example: {}
  models.ExecutionRequirementsModel:
    type: "object"
    required:
    - "cpus"
    - "ram"
    properties:
      cpus:
        type: "integer"
        format: "int32"
      disk_io:
        type: "string"
      gpus:
        type: "integer"
        format: "int32"
        description: "Amount of GPUs needed"
      parallel:
        type: "boolean"
      ram:
        type: "integer"
        format: "int32"
        description: "Units in MB"
      scaling_model:
        type: "integer"
        format: "int32"
    title: "ExecutionRequirementsModel"
    example:
      cpus: 0
      parallel: true
      scaling_model: 5
      gpus: 6
      disk_io: "disk_io"
      ram: 1
  models.RepositoryModel:
    type: "object"
    properties:
      credentials:
        type: "string"
      url:
        type: "string"
    title: "RepositoryModel"
    example:
      credentials: "credentials"
      url: "url"
  models.ScheduleDB:
    type: "object"
    properties:
      ResourceQty:
        $ref: "#/definitions/models.ExecutionRequirementsModel"
      StartDate:
        type: "string"
        format: "datetime"
      StopDate:
        type: "string"
        format: "datetime"
      Workflow:
        type: "string"
    title: "ScheduleDB"
    example:
      StartDate: "StartDate"
      ResourceQty:
        cpus: 0
        parallel: true
        scaling_model: 5
        gpus: 6
        disk_io: "disk_io"
        ram: 1
      StopDate: "StopDate"
      Workflow: "Workflow"
  models.ScheduleInfo:
    type: "object"
    properties:
      NextExecutions:
        type: "array"
        items:
          type: "string"
      Total:
        type: "integer"
        format: "int64"
    title: "ScheduleInfo"
    example:
      Total: 0
      NextExecutions:
      - "NextExecutions"
      - "NextExecutions"
  models.ScheduleTime:
    type: "object"
    title: "ScheduleTime"
  models.SearchResult:
    type: "object"
    required:
    - "computing"
    properties:
      computing:
        type: "array"
        items:
          $ref: "#/definitions/models.ComputingModel"
      data:
        type: "array"
        items:
          $ref: "#/definitions/models.DataModel"
      datacenter:
        type: "array"
        items:
          $ref: "#/definitions/models.DatacenterModel"
      storage:
        type: "array"
        items:
          $ref: "#/definitions/models.StorageModel"
    title: "SearchResult"
    example:
      computing:
      - owner: "owner"
        short_description: "short_description"
        description: "description"
        repository:
          credentials: "credentials"
          url: "url"
        type: "type"
        Doutputs:
        - "Doutputs"
        - "Doutputs"
        license: "license"
        price: 5
        name: "name"
        logo: "logo"
        Dinputs:
        - "Dinputs"
        - "Dinputs"
        execution_requirements:
          cpus: 0
          parallel: true
          scaling_model: 5
          gpus: 6
          disk_io: "disk_io"
          ram: 1
        ID: "5099803df3f4948bd2f98391"
      - owner: "owner"
        short_description: "short_description"
        description: "description"
        repository:
          credentials: "credentials"
          url: "url"
        type: "type"
        Doutputs:
        - "Doutputs"
        - "Doutputs"
        license: "license"
        price: 5
        name: "name"
        logo: "logo"
        Dinputs:
        - "Dinputs"
        - "Dinputs"
        execution_requirements:
          cpus: 0
          parallel: true
          scaling_model: 5
          gpus: 6
          disk_io: "disk_io"
          ram: 1
        ID: "5099803df3f4948bd2f98391"
      data:
      - short_description: "short_description"
        protocol:
        - "protocol"
        - "protocol"
        name: "name"
        description: "description"
        dtype: "dtype"
        logo: "logo"
        location: "location"
        ID: "ID"
        type: "file"
        example: "example"
      - short_description: "short_description"
        protocol:
        - "protocol"
        - "protocol"
        name: "name"
        description: "description"
        dtype: "dtype"
        logo: "logo"
        location: "location"
        ID: "ID"
        type: "file"
        example: "example"
      datacenter:
      - owner: "owner"
        short_description: "short_description"
        acronym: "acronym"
        hosts:
        - "hosts"
        - "hosts"
        cpu:
          shared: true
          cores: 6
          platform: "platform"
          architecture: "architecture"
          minimum_memory: 1
        description: "description"
        type: "type"
        gpu:
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        bookingPrice: 0
        name: "name"
        logo: "logo"
        ID: "ID"
        ram:
          ecc: true
          size: 7
      - owner: "owner"
        short_description: "short_description"
        acronym: "acronym"
        hosts:
        - "hosts"
        - "hosts"
        cpu:
          shared: true
          cores: 6
          platform: "platform"
          architecture: "architecture"
          minimum_memory: 1
        description: "description"
        type: "type"
        gpu:
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        bookingPrice: 0
        name: "name"
        logo: "logo"
        ID: "ID"
        ram:
          ecc: true
          size: 7
      storage:
      - short_description: "short_description"
        encryption: true
        size: 6
        bookingPrice: 0
        DCacronym: "DCacronym"
        name: "name"
        description: "description"
        logo: "logo"
        ID: "ID"
        redundancy: "redundancy"
        throughput: "throughput"
        type: "type"
      - short_description: "short_description"
        encryption: true
        size: 6
        bookingPrice: 0
        DCacronym: "DCacronym"
        name: "name"
        description: "description"
        logo: "logo"
        ID: "ID"
        redundancy: "redundancy"
        throughput: "throughput"
        type: "type"
  models.StorageModel:
    type: "object"
    required:
    - "ID"
    properties:
      DCacronym:
        type: "string"
        description: "Unique ID of the DC where it is the storage"
      ID:
        type: "string"
      bookingPrice:
        type: "integer"
        format: "int32"
      description:
        type: "string"
      encryption:
        type: "boolean"
      logo:
        type: "string"
      name:
        type: "string"
      redundancy:
        type: "string"
      short_description:
        type: "string"
      size:
        type: "integer"
        format: "int32"
      throughput:
        type: "string"
      type:
        type: "string"
    title: "StorageModel"
    example:
      short_description: "short_description"
      encryption: true
      size: 6
      bookingPrice: 0
      DCacronym: "DCacronym"
      name: "name"
      description: "description"
      logo: "logo"
      ID: "ID"
      redundancy: "redundancy"
      throughput: "throughput"
      type: "type"
  models.StorageNEWModel:
    type: "object"
    required:
    - "DCacronym"
    - "description"
    - "logo"
    - "name"
    - "short_description"
    - "size"
    - "type"
    properties:
      DCacronym:
        type: "string"
        description: "Unique ID of the DC where it is the storage"
      bookingPrice:
        type: "integer"
        format: "int32"
      description:
        type: "string"
      encryption:
        type: "boolean"
      logo:
        type: "string"
      name:
        type: "string"
      redundancy:
        type: "string"
      short_description:
        type: "string"
      size:
        type: "integer"
        format: "int32"
      throughput:
        type: "string"
      type:
        type: "string"
    title: "StorageNEWModel"
  models.StorageObject:
    type: "object"
    properties:
      inputs:
        type: "array"
        items:
          type: "string"
      outputs:
        type: "array"
        items:
          type: "string"
      referenceID:
        description: "Storage model ID"
        $ref: "#/definitions/primitive.ObjectID"
    title: "StorageObject"
    example:
      outputs:
      - "outputs"
      - "outputs"
      inputs:
      - "inputs"
      - "inputs"
  models.Workflow:
    type: "object"
    properties:
      MxgraphXML:
        type: "string"
        description: "State of the mxgraph"
      computing:
        $ref: "#/definitions/models.ComputingObject"
      data:
        $ref: "#/definitions/models.DataObject"
      datacenter:
        $ref: "#/definitions/models.DatacenterObject"
      schedules:
        $ref: "#/definitions/models.WorkflowSchedule"
      storage:
        $ref: "#/definitions/models.StorageObject"
    title: "Workflow"
    example:
      computing:
        outputs:
        - "outputs"
        - "outputs"
        inputs:
        - "inputs"
        - "inputs"
        datacenterID: "datacenterID"
        referenceID: {}
      data: {}
      schedules:
        StartDate: "StartDate"
        cron: "cron"
        duration: 7200
        StopDate: "StopDate"
        isBooked: true
        IsService: true
        events: "events"
      datacenter: {}
      storage:
        outputs:
        - "outputs"
        - "outputs"
        inputs:
        - "inputs"
        - "inputs"
      MxgraphXML: "MxgraphXML"
  models.WorkflowSchedule:
    type: "object"
    properties:
      IsService:
        type: "boolean"
        description: "Service: true, Task: false"
      StartDate:
        type: "string"
        format: "datetime"
      StopDate:
        type: "string"
        format: "datetime"
      cron:
        type: "string"
      duration:
        type: "integer"
        format: "int32"
        example: 7200
        description: "Durantion in seconds"
      events:
        type: "string"
      isBooked:
        type: "boolean"
    title: "WorkflowSchedule"
    example:
      StartDate: "StartDate"
      cron: "cron"
      duration: 7200
      StopDate: "StopDate"
      isBooked: true
      IsService: true
      events: "events"
  models.Workspace:
    type: "object"
    properties:
      Workflows:
        $ref: "#/definitions/models.Workflow"
      computing:
        type: "array"
        items:
          type: "string"
      data:
        type: "array"
        items:
          type: "string"
      datacenter:
        type: "array"
        items:
          type: "string"
      storage:
        type: "array"
        items:
          type: "string"
      user_id:
        type: "string"
    title: "Workspace"
    example:
      computing:
      - "computing"
      - "computing"
      data:
      - "data"
      - "data"
      Workflows:
        computing:
          outputs:
          - "outputs"
          - "outputs"
          inputs:
          - "inputs"
          - "inputs"
          datacenterID: "datacenterID"
          referenceID: {}
        data: {}
        schedules:
          StartDate: "StartDate"
          cron: "cron"
          duration: 7200
          StopDate: "StopDate"
          isBooked: true
          IsService: true
          events: "events"
        datacenter: {}
        storage:
          outputs:
          - "outputs"
          - "outputs"
          inputs:
          - "inputs"
          - "inputs"
        MxgraphXML: "MxgraphXML"
      user_id: "user_id"
      datacenter:
      - "datacenter"
      - "datacenter"
      storage:
      - "storage"
      - "storage"
  models.WorkspaceModel:
    type: "object"
    properties:
      computing:
        type: "array"
        items:
          $ref: "#/definitions/models.ComputingModel"
      data:
        type: "array"
        items:
          $ref: "#/definitions/models.DataModel"
      datacenter:
        type: "array"
        items:
          $ref: "#/definitions/models.DatacenterModel"
      storage:
        type: "array"
        items:
          $ref: "#/definitions/models.StorageModel"
      user_id:
        type: "string"
    title: "WorkspaceModel"
    example:
      computing:
      - owner: "owner"
        short_description: "short_description"
        description: "description"
        repository:
          credentials: "credentials"
          url: "url"
        type: "type"
        Doutputs:
        - "Doutputs"
        - "Doutputs"
        license: "license"
        price: 5
        name: "name"
        logo: "logo"
        Dinputs:
        - "Dinputs"
        - "Dinputs"
        execution_requirements:
          cpus: 0
          parallel: true
          scaling_model: 5
          gpus: 6
          disk_io: "disk_io"
          ram: 1
        ID: "5099803df3f4948bd2f98391"
      - owner: "owner"
        short_description: "short_description"
        description: "description"
        repository:
          credentials: "credentials"
          url: "url"
        type: "type"
        Doutputs:
        - "Doutputs"
        - "Doutputs"
        license: "license"
        price: 5
        name: "name"
        logo: "logo"
        Dinputs:
        - "Dinputs"
        - "Dinputs"
        execution_requirements:
          cpus: 0
          parallel: true
          scaling_model: 5
          gpus: 6
          disk_io: "disk_io"
          ram: 1
        ID: "5099803df3f4948bd2f98391"
      data:
      - short_description: "short_description"
        protocol:
        - "protocol"
        - "protocol"
        name: "name"
        description: "description"
        dtype: "dtype"
        logo: "logo"
        location: "location"
        ID: "ID"
        type: "file"
        example: "example"
      - short_description: "short_description"
        protocol:
        - "protocol"
        - "protocol"
        name: "name"
        description: "description"
        dtype: "dtype"
        logo: "logo"
        location: "location"
        ID: "ID"
        type: "file"
        example: "example"
      user_id: "user_id"
      datacenter:
      - owner: "owner"
        short_description: "short_description"
        acronym: "acronym"
        hosts:
        - "hosts"
        - "hosts"
        cpu:
          shared: true
          cores: 6
          platform: "platform"
          architecture: "architecture"
          minimum_memory: 1
        description: "description"
        type: "type"
        gpu:
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        bookingPrice: 0
        name: "name"
        logo: "logo"
        ID: "ID"
        ram:
          ecc: true
          size: 7
      - owner: "owner"
        short_description: "short_description"
        acronym: "acronym"
        hosts:
        - "hosts"
        - "hosts"
        cpu:
          shared: true
          cores: 6
          platform: "platform"
          architecture: "architecture"
          minimum_memory: 1
        description: "description"
        type: "type"
        gpu:
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        - memory: 5
          cuda_cores: 5
          model: "model"
          tensor_cores: 2
        bookingPrice: 0
        name: "name"
        logo: "logo"
        ID: "ID"
        ram:
          ecc: true
          size: 7
      storage:
      - short_description: "short_description"
        encryption: true
        size: 6
        bookingPrice: 0
        DCacronym: "DCacronym"
        name: "name"
        description: "description"
        logo: "logo"
        ID: "ID"
        redundancy: "redundancy"
        throughput: "throughput"
        type: "type"
      - short_description: "short_description"
        encryption: true
        size: 6
        bookingPrice: 0
        DCacronym: "DCacronym"
        name: "name"
        description: "description"
        logo: "logo"
        ID: "ID"
        redundancy: "redundancy"
        throughput: "throughput"
        type: "type"
  primitive.ObjectID:
    type: "object"
    title: "ObjectID"
  time.Time:
    type: "object"
    title: "Time"
