openapi: 3.0.0
info:
  title: iDempiere REST endpoints
  description: >-
    iDempiere REST endpoints.
  version: 1.0.0
servers:
  - url: '{base_url}'
    variables:
      base_url:
        enum:
          - 'http://localhost:8080/api/v1'
          - 'https://localhost:8443/api/v1'
          - 'https://test.idempiere.org/api/v1'
        default: 'http://localhost:8080/api/v1'
tags:
  - name: Authentication
    description: Endpoints to get authorization token from server
  - name: Models
    description: Endpoints for working with AD_Table models
  - name: Views
    description: Endpoints for working with REST_View
  - name: Windows
    description: Endpoints for working with AD_Window
  - name: Forms
    description: Endpoints for AD_Form
  - name: Process
    description: Endpoints for AD_Process
  - name: Tasks
    description: Endpoints for AD_Task
  - name: Files
    description: Endpoints to download server files
  - name: References
    description: Endpoints for AD_Reference
  - name: Caches
    description: Endpoints for working with server cache
  - name: Nodes
    description: Endpoints for working with server nodes
  - name: ServerJobs
    description: Endpoints for server jobs
  - name: Schedulers
    description: Endpoints for AD_Scheduler
  - name: InfoWindows
    description: Endpoints for AD_InfoWindow
  - name: Workflows
    description: Endpoints for working with workflow activity nodes
  - name: StatusLines
    description: Endpoints for AD_StatusLine
  - name: Charts
    description: Endpoints for AD_Chart
  - name: Menutree
    description: Endpoints to get menu tree
  - name: Uploads
    description: Endpoints to upload files
  - name: Batch
    description: Endpoints for batch processing
  - name: Health
    description: Endpoints for health monitoring
components:
  securitySchemes:
    bearerAuth: # arbitrary name for the security scheme
      type: http
      scheme: bearer
      bearerFormat: JWT # optional, arbitrary value for documentation purposes  
  parameters:
    locale:
      in: query
      name: locale
      required: false
      schema:
        type: string
      description: set locale of request
      examples:
        useDefault:
          value: ''
        english_US:
          value: en_US
        spanish_Columnbia:
          value: es_CO
    expand:
      in: query
      name: $expand
      required: false
      schema:
        type: string
      description: expand of parent or child entities
    filter:
      in: query
      name: $filter
      required: false
      schema:
        type: string
      description: query filter
    orderby:
      in: query
      name: $orderby
      required: false
      schema:
        type: string
      description: ordering of query result
    select:
      in: query
      name: $select
      required: false
      schema:
        type: string
      description: comma separated list of properties to be included in the json result object
    top:
      in: query
      name: $top
      required: false
      schema:
        type: integer
        minimum: 0
      description: first n items to return from query result
    skip:
      in: query
      name: $skip
      required: false
      schema:
        type: integer
        minimum: 0
      description: first n items to skip
    valrule:
      in: query
      name: $valrule
      required: false
      schema:
        type: integer
        description: validation rule (AD_Val_Rule) id
    context:
      in: query
      name: $context
      required: false
      schema:
        type: string
        description: inject context variable values for validation rule
    showsql:
      in: query
      name: showsql
      required: false
      schema:
        type: string
      description: show sql command. By default show sql command and data
      examples:
        noShowSQL:
          value: ''
        showSQLAndData:
          value: 'y'
        showSQLNoData:
          value: 'nodata'
    label:
      in: query
      name: label
      required: false
      schema:
        type: string
      description: query filter for AD_Label
    showlabel:
      in: query
      name: showlabel
      required: false
      schema:
        type: string
      description: show list of assigned label. By default, returns a comma-separated list of assigned label names
      examples:
        noLabel:
          value: ''
        showLabel:
          value: ' '
          description: returns a list of assigned label objects, including all columns
        showLabelColumn :
          value: 'Name'
          description: returns the values of the assigned label column
        showLabelColumnList:
          value: 'Name,Description'
          description: returns a list of assigned label objects, including the column list only
    
  responses:
    NotFound:
      description: The specified resource was not found
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    ServerError:
      description: Unexpected error
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ErrorResponse"
    BinaryResponse:
      description: Successful response
      content:
        application/octet-stream:
          schema:
            type: string
            format: binary
  schemas:
    AuthenticationParameters:
      description: authentication parameters
      type: object
      properties:
        clientId:
          type: string
          description: Tenant id or Tenant search key
          example: 11 or GardenWorld
        roleId:
          type: string
          description: Role id or Role name
          example: 102 or GardenWorld Admin
        organizationId:
          type: string
          description: Organization id or Organization name
          example: 11 or HQ
        warehouseId:
          type: string
          description: Warehouse identifier
          example: 103 or HQ Warehouse
        language:
          type: string
          description: Language code
          example: en_US
    AuthenticationRequest:
      type: object
      properties:
        userName:
          type: string
          description: Username for authentication
        password:
          type: string
          description: Password for authentication
        parameters:
          $ref: '#/components/schemas/AuthenticationParameters'
    AuthenticationResponse:
      description: authentication response
      type: object
      properties:
         clients:
           description: clients accessible.
           type: array
           items:
             properties:
               id:
                 type: integer
               name:
                 type: string
         userId:
            type: integer
            description: User identifier
            example: 100
         language:
            type: string
            description: Language code (e.g., en_US)
            example: en_US
         menuTreeId:
            type: integer
            description: Menu tree identifier
            example: 10
         token:
            type: string
            description: Authentication token (JWT)
            example: "eyJraWQiOiJpZ..."
         refresh_token:
            type: string
            description: Refresh token (JWT)
            example: "eyJraWQiOiJpZ..."
    JWKS:
      type: object
      properties:
        keys:
          type: array
          items:
            type: object
            properties:
              alg:
                type: string
                description: Algorithm used for the key.
              k:
                type: string
                description: The key value (base64url encoded for 'oct' key type).
              kid:
                type: string
                description: Key ID.
              kty:
                type: string
                description: Key type.
                enum: # Recommended to include possible values
                  - oct
                  - RSA # Add other possible values as needed
                  - EC
      description: The JSON Web Key Set (JWKS) is a set of keys containing the public keys used to verify JSON Web Token (JWT)
    ErrorResponse:
      description: Error response from server
      type: object
      properties:
        title:
          type: string
          description: error summary
          example: Save error
        status:
          type: integer
          description: http status code
          example: 500
        detail:
          type: string
          description: error details
          example: 'Could not save record - Require unique data'
    Models:
      type: object
      properties:
        models:
          type: array
          items:
            type: object
            properties:
              id:
                type: integer
                description: The unique numeric identifier for the model.
              uid:
                type: string
                format: uuid # Recommended to specify UUID format
                description: The unique UUID identifier for the model.
              model-name:
                type: string
                description: The machine-readable name of the model (e.g., database table name).
              name:
                type: string
                description: The human-readable name of the model.
              description:
                type: string
                description: A description of the model.
          description: An array of model definitions.
      description: A collection of models (AD_Table).
    Attachments:
      type: object
      properties:
        attachments:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: attachment name
              contentType:
                type: string
                description: attachment content type
                example: image/png
      description: An array of attachment entries
    TabField:
      description: tab field description
      type: object
      properties:
        id:
          type: integer
          description: Record identifier. Auto generate.
          example: 2211
        uid:
          type: string
          format: uuid
          description: Unique identifier. Auto generate.
          example: e9347fba-ff00-4a2f-8f81-d7cbe9f879a2
        Name:
          type: string
          description: field name
          example: 'Name'
        Description:
          type: string
          description: field description
        Help:
          type: string
          description: field help text
        AD_Column_ID:
          type: object
          properties:
            propertyLabel:
              type: string
              enum:
                - 'Column'
            id:
              type: integer
              description: column id
              example: 3039
            identifier:
              type: string
              description: column identifier
              example: 'Name_Name'
            model-name: 
              type: string
              enum:
               - ad_column
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        model-name:
          type: string
          enum:
            - ad_field
    WindowTab:
      description: window tab definition
      type: object
      properties:
        id:
          type: integer
          description: Record identifier. Auto generate.
          example: 227
        uid:
          type: string
          format: uuid
          description: Unique identifier. Auto generate.
          example: 3984419c-9ea4-4c41-8309-324edd53bc45
        Name:
          type: string
          description: tab name
          example: 'Bank/Cash'
        Description:
          type: string
          description: tab description
        Help:
          type: string
          description: tab help text
        SeqNo:
          type: integer
          description: tab sequence number
        TabLevel:
          type: integer
          description: hierarchical tab level (starting from zero)
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        model-name:
          type: string
          enum:
            - 'ad_tab'
        slug:
          type: string
          description: slugify window name
          example: 'bank-cash'
    Window:
      description: window definition
      type: object
      properties:
        id:
          type: integer
          description: Record identifier. Auto generate.
          example: 158
        uid:
          type: string
          format: uuid
          description: Unique identifier. Auto generate.
          example: bcf74ac0-959e-41e2-9e58-4269abab3788
        Name:
          type: string
          description: window name
          example: 'Bank/Cash'
        Description:
          type: string
          description: window description
        Help:
          type: string
          description: window help text
        WindowType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Window Type'
            id:
              type: string
              description: list item id
              enum:
                - 'M'
                - 'Q'
                - 'T'
            identifier:
              type: string
              description: list item identifier
              enum:
                - 'Maintain'
                - 'Query Only'
                - 'Transaction'
            model-name:
              type: string
              enum:
                 - 'ad_ref_list'
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        model-name:
          type: string
          enum:
            - 'ad_window'
        slug:
          type: string
          description: slugify window name
          example: 'bank-cash'
        tabs:
          type: array
          items:
            $ref: '#/components/schemas/WindowTab'
    Form:
      type: object
      properties:
        id:
          type: integer
          description: View identifier
          example: 100
        uid:
          type: string
          format: uuid
          description: Unique identifier for the view
          example: a08a9a0f-ec92-426c-96a3-4a988c709c77
        Name:
          type: string
          description: form name
          example: Generate Invoices (manual)
        Description:
          type: string
          description: form description
        Help:
          type: string
          description: form help text
        Classname:
          type: string
          description: Java class name or OSGi component name
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        model-name:
          type: string
          enum:
            - ad_form
        slug:
          type: string
          description: slugify form name
          example: generate-invoices-manual
    Forms:
      type: object
      properties:
        forms:
          type: array
          items:
            $ref: '#/components/schemas/Form'
    ProcessParameter:
      type: object
      properties:
        id:
          type: integer
          description: process parameter identifier
          example: 617
        uid:
          type: string
          format: uuid
          description: Unique identifier for the process parameter
          example: 763e446d-7031-43b4-9916-c29823953130
        Name:
          type: string
          description: process parameter name
          example: Business Partner
        Description:
          type: string
          description: process parameter description
        Help:
          type: string
          description: process parameter help text
        SeqNo:
          type: integer
          description: process parameter sequence number
          example: 10
        AD_Reference_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Reference'
            id:
              type: integer
              description: reference id
              example: 200163
            identifier:
              type: string
              description: reference identifier
              example: Chosen Multiple Selection Search
            model-name:
              type: string
              enum:
                 - 'ad_reference'
        AD_Reference_Value_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Reference Key'
            id:
              type: integer
              description: reference id
              example: 138
            identifier:
              type: string
              description: reference identifier
              example: C_BPartner (Trx)
            model-name:
              type: string
              enum:
                 - 'ad_reference'
        AD_FieldGroup_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Field Group'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_fieldgroup'
        IsRange:
          type: boolean
          description: true for range parameter, false otherwise
        IsMandatory:
          type: boolean
          description: true for mandatory parameter, false otherwise
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: entity type id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        IsAutocomplete:
          type: boolean
        DateRangeOption:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Date Range Option'
            id:
              type: string
              description: list item id
              enum:
                - 'D'
                - 'T'
            identifier:
              type: string
              description: list item identifier
              enum:
                - 'Date Editor and Range Picker'
                - 'Text and Range Picker'
            model-name:
              type: string
              enum:
                - 'ad_ref_list'
        DefaultValue:
          type: string
          description: Default value hierarchy, separated by ;
        DefaultValue2:
          type: string
          description: Default value hierarchy, separated by ;
        DisplayLogic:
          type: string
          description: If the Field is displayed, the result determines if the field is actually displayed                            
        IsShowNegateButton:
          type: boolean
        MandatoryLogic:
          type: string
        Placeholder:
          type: string
        Placeholder2:
          type: string
        Query:
          type: string
          description: SQL
        ReadOnlyLogic:
          type: string
          description: Logic to determine if field is read only (applies only when field is read-write)
        ValueMax:
          type: string
          description: Maximum Value for a field
        ValueMin:
          type: string
          description: Minimum Value for a field
        VFormat:
          type: string
          description: 'Format of the value; Can contain fixed format elements, Variables: "_lLoOaAcCa09", or ~regex'
        model-name:
          type: string
          enum:
            - ad_process_para
        parameterName:
          type: string
          description: parameter name
          example: C_BPartner_ID
    Process:
      type: object
      properties:
        id:
          type: integer
          description: process id
          example: 200034
        uid:
          type: string
          format: uuid
          description: Unique identifier for process
          example: 5577f73c-ca99-43b6-8ad6-272739305b60
        Name:
          type: string
          description: process name
          example: 1099 Extract
        Description:
          type: string
          description: process description
        Help:
          type: string
          description: process help text
        IsReport:
          type: boolean
          description: true for report process, false otherwise
        Value:
          type: string
          description: process search key
          example: 1099 Extract
        AD_ReportView_ID:
          type: object
          properties:
            propertyLabel:
              type: string
              example: Report View
            id:
              type: integer
              description: report view id
              example: 200000
            identifier:
              type: integer
              description: report view identifier
              example: RV_T_1099Extract
            model-name:
              type: string
              enum:
                - ad_reportview
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: entity type id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        AD_PrintFormat_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Print Format'
            id:
              type: integer
              description: print format id
            identifier:
              type: string
              description: print format identifier
            model-name:
              type: string
              enum:
                 - 'ad_printformat'
        AD_Workflow_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Workflow'
            id:
              type: integer
              description: workflow id
              example: 50020
            identifier:
              type: string
              description: workflow identifier
              example: Process_Asset_Adition
            model-name:
              type: string
              enum:
                 - 'ad_workflow'
        model-name:
          type: string
          enum:
            - ad_process
        slug:
          type: string
          description: slugify process name
          example: 1099-extract
        parameters:
          type: array
          items:
            $ref: '#/components/schemas/ProcessParameter'
    Processes:
      type: object
      properties:
        processes :
          type: array
          items:
            $ref: '#/components/schemas/Process'
    ProcessInfo:
      description: response for process and report
      type: object
      properties:
        AD_PInstance_ID:
          type: integer
          description: process instance id
        process:
          type: string
          description: process name
          example: rv_orderdetail
        summary:
          type: string
          description: process message text
        isError:
          type: boolean
          description: true if run process fail with error, false otherwise
        reportFile:
          type: string
          format: byte
          description: base64 encoded process output (report or export file)
        reportFileName:
          type: string
          example: Invoice_Header.pdf
        reportFileLength:
          type: integer
          description: report file length
        exportFile:
          type: string
          format: byte
          description: base64 encoded process output (report or export file)
        exportFileName:
          type: string
          example: Order_Detail.html
        exportFileLength:
          type: integer
          description: export file length
        nodeId:
          type: string
          description: server node id
          format: uuid
          example: c428b889-6ab1-4fd5-9730-641cc0ceca6b
    Task:
      type: object
      properties:
        id:
          type: integer
          description: Task identifier
        uid:
          type: string
          format: uuid
          description: Unique identifier for the task
        Name:
          type: string
          description: task name
        Description:
          type: string
          description: task description
        Help:
          type: string
          description: task help text
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: entity type id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        model-name:
          type: string
          enum:
            - ad_task
        slug:
          type: string
          description: slugify task name
    Tasks:
      type: object
      properties:
        tasks :
          type: array
          items:
            $ref: '#/components/schemas/Task'    
    Reference:
      type: object
      properties:
        id:
          type: integer
          description: reference id
        uid:
          type: string
          format: uuid
          description: reference uuid
        Name:
          type: string
          description: reference name
        Description:
          type: string
          description: reference description
        ValidationType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Validation type'
            id:
              type: string
              description: list item id
              enum:
                - 'D'
                - 'L'
                - 'T'
            identifier:
              type: string
              description: list item identifier
              enum:
                - 'DataType'
                - 'List Validation'
                - 'Table Validation'
            model-name:
              type: string
              enum:
                 - 'ad_ref_list'
        VFormat:
          type: string
          description: 'Format of the value; Can contain fixed format elements, Variables: "_lLoOaAcCa09", or ~regex'
        model-name:
          type: string
          enum:
             - 'ad_reference'
        reflist:
          type: array
          description: items for List validation reference
          items:
            type: object
            properties:
              value:
                type: string
                description: Identifier of reference list item
              name:
                type: string
                description: Name of reference list item
        reftable:
          type: array
          description: items for Table validation reference
          items:
            type: object
    Cache:
      type: object
      properties: 
        name:
          type: string
          description: cache name
        tableName:
          type: string
          description: cache table name
        size:
          type: integer
          description: cache size
        expireMinutes:
          type: integer
          description: expire duration in minutes. 0 for no expire duration.
        maxSize:
          type: integer
          description: maximum cache size. 0 for no maximum
        distributed:
          type: boolean
          description: true for distributed cache, false otherwise
    Caches:
      type: object
      properties:
        caches:
          type: array
          items:
            $ref: '#/components/schemas/Cache'
    ServerNode:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: server node id
        hostName:
          type: string
          description: server host name
        port:
          type: integer
          description: hazelcast port number
          example: 5701
    ServerNodes:
      type: object
      properties:
        nodes:
          type: array
          items:
            $ref: '#/components/schemas/ServerNode'
    ServerNodeInfo:
      type: object
      properties:
        id:
          type: string
          description: Server node id
          format: uuid
        hostName:
          type: string
          description: Hostname of the server
        home:
          type: string
          description: iDempiere home directory
        os:
          type: string
          description: Operating system information
        jvm:
          type: string
          description: Java Virtual Machine information
        databaseDescription:
          type: string
          description: Database driver description
        databaseConnectionURL:
          type: string
          description: Database connection URL
        databaseStatus:
          type: string
          description: Database connection pool status
        availableProcessors:
          type: integer
          description: Number of available processors
        averageSystemLoad:
          type: number
          format: float
          description: Average system load
        memoryUsage:
          type: string
          description: Memory usage statistics
        heapMemoryUsage:
          type: string
          description: Heap memory usage statistics
        runtime:
          type: string
          description: Runtime information
        runtimeUptime:
          type: string
          description: Runtime uptime
        threadCount:
          type: integer
          description: Current thread count
        peakThreadCount:
          type: integer
          description: Peak thread count
        daemonThreadCount:
          type: integer
          description: Daemon thread count
        totalStartedThreadCount:
          type: integer
          description: Total started thread count
        logLevel:
          type: string
          description: Current log level
        currentLogFile:
          type: string
          description: Path to the current log file
        sessionCount:
          type: integer
          description: Number of active sessions
        garbageCollectionCount:
          type: integer
          description: Number of garbage collection cycles
        garbageCollectionTime:
          type: integer
          description: Total time spent in garbage collection (milliseconds or seconds, specify in description)
    ServerJob:
      type: object
      properties:
        id:
          type: string
          description: server job id
        name:
          type: string
          description: server job name
        nodeId:
          type: string
          description: server node id
        hostName:
          type: string
          description: server node host name
        port:
          type: string
          description: server node port
        started:
          type: boolean
          description: true if server job has been started, false otherwise
    ServerJobs:
      type: object
      properties:
        servers:
          type: array
          items:
            $ref: '#/components/schemas/ServerJob'
    ServerJobInfo:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the server job
          example: Scheduler100
        name:
          type: string
          description: Name of the server job
          example: Delete Old Notes
        nodeId:
          type: string
          format: uuid
          description: ID of the node where the server job runs
          example: 1a27b1ca-7c3c-4de9-ba1c-6b58f216b959
        hostName:
          type: string
          description: Hostname where the server job runs
          example: fedora
        port:
          type: integer
          description: server node port number
          example: 5701
        lastRun:
          type: string
          description: Timestamp of the last server job run
          example: Feb 4, 2025, 3:32:02 PM MYT
          format: date-time
        info:
          type: string
          description: Information about the last run
          example: "#1 - Last=MScheduler[100-Delete Old Notes] - Deleted = 0 Logs deleted=0"
        nextRun:
          type: string
          description: Timestamp of the next server job run
          example: Feb 11, 2025, 3:32:02 PM MYT
          format: date-time
        statistics:
          type: string
          description: Statistics about the server job runs
          example: "Run #1 - Last=0'00:00:00.806 - Total=0'00:00:00.806 - Next 6'18:51:10.853"
        started:
          type: boolean
          description: Indicates if the server job is started
          example: true
        sleeping:
          type: boolean
          description: Indicates if the server job is sleeping
          example: true
        interruptd:
          type: boolean
          description: Indicates if the server job was interrupted
          example: false
    ServerJobLog:
      type: object
      properties:
        created:
          type: string
          format: date-time
          description: created timestamp
        summary:
          type: string
          description: log summary text
        description:
          type: string
          description: log description text
        reference:
          type: string
          description: log reference text
        textMessage:
          type: string
          description: log message text
        error:
          type: boolean
          description: true if this is error log, false otherwise
    ServerJobLogs:
      type: object
      properties:
        logs:
          type: array
          items:
            $ref: '#/components/schemas/ServerJobLog'
    SchedulerServerJob:
      type: object
      properties:
        server-id:
          type: string
          description: server job id
        scheduler-state:
          type: string
          description: state of scheduler
        node-id:
          type: string
          description: server node id
        node-host-name:
          type: string
          description: server node name
        node-port:
          type: integer
          description: server node hazelcast port
    AD_Scheduler:
      type: object
      properties:
        id:
          type: integer
          description: table id
        uid:
          type: string
          description: table uuid
        AD_Client_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Tenant'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_client'
        AD_Org_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Organization'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_org'
        AD_PrintFormat_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Print Format'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_printformat'
        AD_Process_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Process'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_process'
        AD_Schedule_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Schedule'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_schedule'
        AD_Table_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Table'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_table'
        Created:
          type: string
          description: Date this record was created
          example: 2025-02-04T08:44:28Z
        CreatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Created By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_user'
        DateLastRun:
          type: string
          description: Date the process was last run.
          example: 2025-02-04T08:44:28Z
        DateNextRun:
          type: string
          description: Date the process will run next
          example: 2025-02-04T08:44:28Z
        Description:
          type: string
          description: Optional short description of the record
        IsActive:
          type: boolean
          description: The record is active in the system
        KeepLogDays:
          type: integer
          description: Number of days to keep the log entries
        Name:
          type: string
          description: Alphanumeric identifier of the entity
        Record_ID:
          type: string
          description: Direct internal record ID
        ReportOutputType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Report Output Type'
            id:
              type: string
              description: list item id
              enum:
                - 'CSV'
                - 'HTML'
                - 'PDF'
                - 'XLS'
                - 'XLSX'
            identifier:
              type: string
              description: list item identifier
              enum:
                - 'CSV'
                - 'HTML'
                - 'PDF'
                - 'XLS'
                - 'XLSX'
            model-name:
              type: string
              enum:
                 - 'ad_ref_list'
        R_MailText_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Mail Template'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'r_mailtext'
        SchedulerState:
          type: string
          description: State of this scheduler record (not scheduled, started or stopped)
        Supervisor_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Supervisor'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_user'
        Updated:
          type: string
          description: Date this record was updated
          example: 2025-02-04T08:44:28Z
        UpdatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Updated By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_user'
    AD_InfoWindow:
      type: object
      properties:
        id:
          type: integer
          description: table id
        uid:
          type: string
          description: table uuid
        AD_Client_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Tenant'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_client'
        AD_CtxHelp_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Context Help'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_ctxhelp'
        AD_Org_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Organization'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_org'
        AD_Table_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Table'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_table'
        AD_Window_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_window'
        Created:
          type: string
          description: Date this record was created
          example: 2025-02-04T09:50:55Z
        CreatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Created By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_user'
        Description:
          type: string
          description: Optional short description of the record
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        FromClause:
          type: string
          description: SQL FROM clause
        Help:
          type: string
          description: Comment or Hint
        ImageURL:
          type: string
          description: URL of  image
        IsActive:
          type: boolean
          description: The record is active in the system
        IsDefault:
          type: boolean
          description: Default value
        IsDistinct:
          type: boolean
          description: Select Distinct
        isLoadPageNum:
          type: boolean
          description: When load data for info window, also load number of paging
        IsShowInDashboard:
          type: boolean
          description: Show the dashlet in the dashboard
        IsValid:
          type: boolean
          description: Element is valid
        MaxQueryRecords:
          type: integer
          description: If defined, you cannot query more records as defined - the query criteria needs to be changed to query less records
        Name:
          type: string
          description: Alphanumeric identifier of the entity
        OrderByClause:
          type: string
          description: Fully qualified ORDER BY clause
        OtherClause:
          type: string
          description: Other SQL Clause
        PagingSize:
          type: integer
        PO_Window_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'PO Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_window'
        SeqNo:
          type: integer
          description: Method of ordering records; lowest number comes first
        Updated:
          type: string
          description: Date this record was updated
          example: 2025-02-04T09:50:55Z
        UpdatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Updated By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_user'
        WhereClause:
          type: string
          description: Fully qualified SQL WHERE clause
    AD_InfoColumn:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: record id
        uid:
          type: string
          readOnly: true
          description: record uuid
        AD_Client_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Tenant'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_client'
          readOnly: true
        AD_Element_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'System Element'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_element'
        AD_FieldStyle_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Field Style'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_style'
        AD_InfoWindow_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Info Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infowindow'
        AD_Org_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Organization'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_org'
        AD_Reference_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Reference'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_reference'
        AD_Reference_Value_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Reference Key'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_reference'
        AD_Val_Rule_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Dynamic Validation'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_val_rule'
        ColumnName:
          type: string
          description: Name of the column in the database
        Created:
          type: string
          format: date-time
          description: Date this record was created
          example: 2025-02-04T10:46:35Z
          readOnly: true
        CreatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Created By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
        DefaultValue:
          type: string
          description: Default value hierarchy, separated by ;
        DefaultValue2:
          type: string
          description: Default value hierarchy, separated by ;
        Description:
          type: string
          description: Optional short description of the record
        DisplayLogic:
          type: string
          description: If the Field is displayed, the result determines if the field is actually displayed
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_entitytype'
        Help:
          type: string
          description: Comment or Hint
        InputFieldValidation:
          type: string
          description: Input field validation query
        IsActive:
          type: boolean
          description: The record is active in the system
        IsAutocomplete:
          type: boolean
          description: Automatic completion for text fields
        IsCentrallyMaintained:
          type: boolean
          description: Information maintained in System Element table
        IsDisplayed:
          type: boolean
          description: Determines, if this field is displayed
        IsIdentifier:
          type: boolean
          description: This column is part of the record identifier
        IsKey:
          type: boolean
          description: This column is the key in this table
        IsMandatory:
          type: boolean
          description: Data entry is required in this column
        IsQueryAfterChange:
          type: boolean
          description: Issues a query request after the user has made changes to the field
        IsQueryCriteria:
          type: boolean
          description: The column is also used as a query criteria
        IsRange:
          type: boolean
          description: The parameter is a range of values
        IsReadOnly:
          type: boolean
          description: Field is read only
        Name:
          type: string
          description: Alphanumeric identifier of the entity
        Placeholder:
          type: string
        Placeholder2:
          type: string
        QueryFunction:
          type: string
          description: Database function for query
        QueryOperator:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Query Operator'
            id:
              type: string
              description: list item id
              enum:
                - '!='
                - '<'
                - '<='
                - '='
                - '>'
                - '>='
                - 'LIKE'
                - 'Like'
            identifier:
              type: string
              description: list item identifier
              enum:
                - '!='
                - '<'
                - '<='
                - '='
                - '>'
                - '>='
                - 'Full Like'
                - 'Like'
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_ref_list'
        SelectClause:
          type: string
          description: SQL SELECT clause
        SeqNo:
          type: integer
          description: Method of ordering records; lowest number comes first
        SeqNoSelection:
          type: integer
          description: Selection Column Sequence
        Updated:
          type: string
          format: date-time
          description: Date this record was updated
          example: 2025-02-04T10:46:35Z
          readOnly: true
        UpdatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Updated By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
    AD_InfoProcess:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: record id
        uid:
          type: string
          readOnly: true
          description: record uuid
        AD_Client_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Tenant'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_client'
          readOnly: true
        AD_InfoColumn_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Info Column'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infocolumn'
        AD_InfoWindow_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Info Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infowindow'
        AD_Org_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Organization'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_org'
        AD_Process_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Process'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_process'
        Created:
          type: string
          format: date-time
          description: Date this record was created
          example: 2025-02-04T10:51:56Z
          readOnly: true
        CreatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Created By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
        DisplayLogic:
          type: string
          description: If the Field is displayed, the result determines if the field is actually displayed
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_entitytype'
        ImageURL:
          type: string
          description: URL of  image
        IsActive:
          type: boolean
          description: The record is active in the system
        LayoutType:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Layout Type'
            id:
              type: string
              description: list item id
              enum:
                - 'B'
                - 'L'
                - 'M'
            identifier:
              type: string
              description: list item identifier
              enum:
                - 'Button'
                - 'List'
                - 'Menu'
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_ref_list'
        SeqNo:
          type: integer
          description: Method of ordering records; lowest number comes first
        Updated:
          type: string
          format: date-time
          description: Date this record was updated
          example: 2025-02-04T10:51:56Z
          readOnly: true
        UpdatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Updated By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
    AD_InfoRelated:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: record id
        uid:
          type: string
          readOnly: true
          description: record uuid
        AD_Client_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Tenant'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_client'
          readOnly: true
        AD_InfoWindow_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Info Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infowindow'
        AD_Org_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Organization'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_org'
        Created:
          type: string
          format: date-time
          description: Date this record was created
          example: 2025-02-04T10:57:58Z
          readOnly: true
        CreatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Created By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
        Description:
          type: string
          description: Optional short description of the record
        DisplayLogic:
          type: string
          description: If the Field is displayed, the result determines if the field is actually displayed
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_entitytype'
        Help:
          type: string
          description: Comment or Hint
        IsActive:
          type: boolean
          description: The record is active in the system
        Name:
          type: string
          description: Alphanumeric identifier of the entity
        ParentRelatedColumn_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Parent Related Column'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infocolumn'
        RelatedColumn_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Related Info Column'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infocolumn'
        RelatedInfo_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Related Info Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infowindow'
        SeqNo:
          type: integer
          description: Method of ordering records; lowest number comes first
        Updated:
          type: string
          format: date-time
          description: Date this record was updated
          example: 2025-02-04T10:57:58Z
          readOnly: true
        UpdatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Updated By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
    WorkflowActivityNode:
      type: object
      properties:
        id: 
          type: integer
          description: workflow activity record id
        uid:
          type: string
          description: workflow activity record uuid
        model-name:
          type: string
          enum:
            - 'ad_wf_activity'
        node-name:
          type: string
          description: workflow activity node nam
        priority:
          type: integer
        summary:
          type: string
        node-description:
          type: string
        node-help:
          type: string
        history-records:
          type: string
          description: html formatted timestamp history
          example: '<p>Feb 8, 2025, 6:50:33 AM MYT <b>Business Partner</b>: </p>'
        table-name:
          type: string
          description: table name of PO that trigger this workflow activity
        ad_table_id:
          type: integer
          description: table id of PO that trigger this workflow activity
        record_id:
          type: integer
          description: record id of PO that trigger this workflow activity
        node-approval:
          type: boolean
        node-confirmation:
          type: boolean
        created:
          type: string
          format: date-time
    WorkflowActivityResponse:
      type: object
      properties:
        msg:
          type: string
          description: update message
        summary:
          type: string
        history-records:
          type: string
          description: html formatted timestamp record history
    StatusLine:
      type: object
      properties:
        id:
          type: integer
          description: status line record id
        uid:
          type: string
          description: status line record uuid
        Name:
          type: string
          description: status line name
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              enum:
                 - 'ad_entitytype'
        model-name:
          type: string
          enum:
            - ad_statusline
        message:
          type: string
          description: output message from parsing of status line
    StatusLines:
      type: object
      properties:
        statusLines:
          type: array
          items:
            $ref: '#/components/schemas/StatusLine'
    ChartData:
      oneOf:
        - type: object
          description: category data set
          properties:
            id:
              type: integer
              description: chart record id
            name:
              type: string
            domainLabel:
              type: string
            rangeLabel:
              type: string
            displayLegend:
              type: boolean
            chartOrientation:
              type: string
              enum:
                - H
                - V
            chartType:
              type: string
            data:
              type: array
              items:
                type: object
                properties:
                  row:
                    type: string
                  column:
                    type: string
                  value:
                    type: string
        - type: object
          description: xy data set
          properties:
            id:
              type: integer
              description: chart record id
            name:
              type: string
            domainLabel:
              type: string
            rangeLabel:
              type: string
            displayLegend:
              type: boolean
            chartOrientation:
              type: string
              enum:
                - H
                - V
            chartType:
              type: string
            data:
              type: array
              items:
                type: object
                properties:
                  series:
                    type: string
                  x:
                    type: string
                  y:
                    type: string
        - type: object
          description: pie data set
          properties:
            id:
              type: integer
              description: chart record id
            name:
              type: string
            displayLegend:
              type: boolean
            chartType:
              type: string
            data:
              type: array
              items:
                type: object
                properties:
                  key:
                    type: string
                  value:
                    type: string
    AD_Menu:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: record id
        uid:
          type: string
          readOnly: true
          description: record uuid
        Action:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Action'
            id:
              type: string
              description: list item id
              enum:
                - 'D'
                - 'X'
                - 'I'
                - 'P'
                - 'R'
                - 'T'
                - 'W'
                - 'F'
            identifier:
              type: string
              description: list item identifier
              enum:
                - 'Detail'
                - 'Form'
                - 'Info'
                - 'Process'
                - 'Report'
                - 'Task'
                - 'Window'
                - 'WorkFlow'
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_ref_list'
        AD_Client_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Tenant'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_client'
          readOnly: true
        AD_Form_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Special Form'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_form'
        AD_InfoWindow_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Info Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_infowindow'
        AD_Org_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Organization'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_org'
        AD_Process_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Process'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_process'
        AD_Task_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'OS Task'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_task'
        AD_Window_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Window'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_window'
        AD_Workflow_ID:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Workflow'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_workflow'
        Created:
          type: string
          format: date-time
          description: Date this record was created
          example: 2025-02-09T10:52:34Z
          readOnly: true
        CreatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Created By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
        Description:
          type: string
          description: Optional short description of the record
        EntityType:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Entity Type'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_entitytype'
        IsActive:
          type: boolean
          description: The record is active in the system
        IsCentrallyMaintained:
          type: boolean
          description: Information maintained in System Element table
        IsReadOnly:
          type: boolean
          description: Field is read only
        IsSOTrx:
          type: boolean
          description: This is a Sales Transaction
        IsSummary:
          type: boolean
          description: This is a summary entity
        Name:
          type: string
          description: Alphanumeric identifier of the entity
        PredefinedContextVariables:
          type: string
          description: Predefined context variables to inject when opening a menu entry or a window
        Updated:
          type: string
          format: date-time
          description: Date this record was updated
          example: 2025-02-09T10:52:34Z
          readOnly: true
        UpdatedBy:
          type: object
          properties:
            propertyLabel: 
              type: string
              readOnly: true
              enum:
                 - 'Updated By'
            id:
              type: integer
              description: record id
            identifier:
              type: string
              description: record identifier
            model-name:
              type: string
              readOnly: true
              enum:
                 - 'ad_user'
          readOnly: true
    MenuTree:
      type: object
      properties:
        entries:
          type: array
          items:
            oneOf:
              - type: array
                items:
                  type: object
                  description: '#/components/schemas/MenuTree'
              - $ref: '#/components/schemas/AD_Menu'
    UploadInitiationRequest:
      type: object
      properties:
        fileName:
          type: string
          description: file name
        contentType:
          type: string
          description: mime content type
        fileSize:
          type: integer
          description: file size in bytes
        chunkSize:
          type: integer
          description: prefer chunk size
        sha256:
          type: integer
          description: SHA-256 hash of file
        uploadLocation:
          $ref: '#/components/schemas/UploadLocation'
        expiresInSeconds:
          type: integer
          description: number of seconds before upload session expires, default is 86400 seconds (24 hour)
    UploadInitiationResponse:
      type: object
      properties:
        uploadId:
          type: string
          description: uuid of REST_Upload record
        chunkSize:
          type: integer
          description: prefer chunk size
        expiresAt:
          type: string
          format: date-time
          description: expire timestamp of upload session
        presignedURL:
          type: string
          description: presigned URL for uploading file chunks
    UploadChunkResponse:
      type: object
      properties:
        uploadId:
          type: string
          description: uuid of REST_Upload record
        chunkOrder:
          type: integer
          description: chunk sequence
        receivedSize:
          type: integer
          description: actual received size in bytes
        message:
          type: integer
          description: response message
        isLastChunk:
          type: boolean
          description: true if this is the last chunk of the file that will trigger upload completion
    UploadedChunk:
      type: object
      properties:
        chunkOrder:
          type: integer
          description: chunk sequence
        receivedSize:
          type: integer
          description: actual received size in bytes
    UploadStatus:
      type: string
      enum:
        - INITIATED
        - UPLOADING
        - PROCESSING
        - COMPLETED
        - CANCELED
        - FAILED
    UploadLocation:
      type: string
      enum:
        - 'ARCHIVE'
        - 'ATTACHMENT'
        - 'IMAGE'
    UploadStatusResponse:
      type: object
      properties:
        uploadId:
          type: string
          description: uuid of REST_Upload record
        fileName:
          type: string
          description: file name
        fileSize:
          type: integer
          description: file size in bytes
        imageId:
          type: integer
          description: image id if the upload location is image
        chunkSize:
          type: integer
          description: prefer chunk size
        status:
          $ref: '#/components/schemas/UploadStatus'
        uploadedChunks:
          type: array
          items:
            $ref: '#/components/schemas/UploadedChunk'
        totalReceivedSize:
          type: integer
          description: total received size in bytes
        message:
          type: integer
          description: response message
        presignedURL:
          type: string
          description: presigned URL to get upload status or uploaded file
    CopyUploadedFileRequest:
      type: object
      properties:
        copyLocation:
          $ref: '#/components/schemas/UploadLocation'
        tableName:
          type: string
          description: optional table name of the destination record
        recordId:
          type: string
          description: optional record id/uuid of the destination record
    CopyUploadedFileResponse:
      type: object
      properties:
        uploadId:
          type: string
          description: uuid of REST_Upload record
        tableName:
          type: string
          description: table name of the destination record
        recordId:
          type: string
          description: record id of the destination record
        recordUU:
          type: string
          description: record uuid of the destination record
        copyLocation:
          $ref: '#/components/schemas/UploadLocation'
        fileName:
          type: string
          description: name of the file being copied
        contentType:
          type: string
          description: mime content type of the file being copied
        fileSize:
          type: integer
          description: size of the file being copied
    SubRequest:
      type: object
      properties:
        method:
          type: string
          description: HTTP method for the sub-request (e.g., GET, POST)
        path:
          type: string
          description: Path for the sub-request (e.g., v1/models/C_BPartner)
        body:
          type: object
          description: Body of the sub-request, if applicable
    BatchRequest:
      type: array
      items:
        $ref: '#/components/schemas/SubRequest'
    BatchResponse:
      type: array
      items:
        type: object
        properties:
          status:
            type: string
            description: HTTP status text of the sub-request (e.g., created, ok, etc)
          statusCode:
            type: integer
            description: HTTP status code of the response
          body:
            type: object
            description: Body of the response, if applicable
security:
    - bearerAuth: [] # use the same name as above          
paths:
  /auth/tokens:
    post:
      tags:
        - Authentication
      summary: Login for authorization token
      description: >-
        Login with tenant, user name, password and role. The return
        token is use as Authorization request header (Bearer {token}) for
        subsequent api call

      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationRequest'              
            examples:
              gardenAdminUserNameWithoutParameters:
                summary: GardenAdmin UserName authentication without parameters. Follow with PUT api/v1/auth/tokens to set login parameters.
                value:
                  userName: "GardenAdmin"
                  password: "GardenAdmin"
              gardenAdminEmailWithoutParameters:
                summary: GardenAdmin Email authentication without parameters. Follow with PUT api/v1/auth/tokens to set login parameters.
                value:
                  userName: "admin @ gardenworld.com"
                  password: "GardenAdmin"
              gardenAdminUserNameOneStepLogin:
                summary: GardenAdmin UserName authentication with integer id login parameters.
                value:
                  userName: "GardenAdmin"
                  password: "GardenAdmin"
                  parameters:
                    clientId: 11
                    roleId: 102
                    organizationId: 11
                    warehouseId: 103
                    language: en_US
              gardenAdminEmailOneStepLogin:
                summary: GardenAdmin Email authentication with integer id login parameters.
                value:
                  userName: "admin @ gardenworld.com"
                  password: "GardenAdmin"
                  parameters:
                    clientId: 11
                    roleId: 102
                    organizationId: 11
                    warehouseId: 103
                    language: en_US
              gardenAdminUserNameOneStepLoginWithStringIdentifier:
                summary: GardenAdmin UserName authentication with string identifier login parameters.
                value:
                  userName: "GardenAdmin"
                  password: "GardenAdmin"
                  parameters:
                    clientId: GardenWorld
                    roleId: GardenWorld Admin
                    organizationId: HQ
                    warehouseId: HQ Warehouse
                    language: en_US
              gardenAdminEmailOneStepLoginWithStringIdentifier:
                summary: GardenAdmin Email authentication with string identifier login parameters.
                value:
                  userName: "admin @ gardenworld.com"
                  password: "GardenAdmin"
                  parameters:
                    clientId: GardenWorld
                    roleId: GardenWorld Admin
                    organizationId: HQ
                    warehouseId: HQ Warehouse
                    language: en_US
              gardenAdminUserNameOneStepLoginWithDefaults:
                summary: GardenAdmin UserName authentication with partial login parameters.
                value:
                  userName: "GardenAdmin"
                  password: "GardenAdmin"
                  parameters:
                    roleId: GardenWorld Admin
                    organizationId: HQ
                    warehouseId: HQ Warehouse
              gardenAdminEmailOneStepLoginWithDefaults:
                summary: GardenAdmin Email authentication with partial login parameters.
                value:
                  userName: "admin @ gardenworld.com"
                  password: "GardenAdmin"
                  parameters:
                    roleId: GardenWorld Admin
                    organizationId: HQ
                    warehouseId: HQ Warehouse
              superUserUserNameSystemTenant:
                summary: SuperUser UserName authentication for System tenant.
                value:
                  userName: "SuperUser"
                  password: "System"
                  parameters:
                    clientId: 0
                    roleId: 0 #Need to change System Administrator role type to null
                    organizationId: 0
                    language: en_US
              superUserEmailSystemTenant:
                summary: SuperUser Email authentication for System tenant.
                value:
                  userName: "superuser @ idempiere.com"
                  password: "System"
                  parameters:
                    clientId: 0
                    roleId: 0 #Need to change System Administrator role type to null
                    organizationId: 0
                    language: en_US
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationResponse'
              examples:
                withAuthenticationParameters:
                  value:
                    userId: 100
                    language: en_US
                    menuTreeId: 10
                    token: "eyJraWQiOiJpZ..."
                    refresh_token: "eyJraWQiOiJpZ..."
                withoutAuthenticationParameters:
                  value:
                    clients:
                      - id: 11
                        name: GardenWorld
                    token: "eyJraWQiOiJpZ..."
        '401':
          description: authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidUserNameOrPassword:
                  value:
                    title: 'Authenticate error'
                    status: 401
                    detail: 'Invalid User ID or Password'
    put:
      tags:
        - Authentication
      summary: Set login parameters
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticationParameters'
            examples:
              withId:
                summary: integer id login parameters.
                value:
                  clientId: 11
                  roleId: 102
                  organizationId: 11
                  warehouseId: 103
                  language: en_US
              withStringIdentifier:
                summary: string identifier login parameters.
                value:
                  clientId: GardenWorld
                  roleId: GardenWorld Admin
                  organizationId: HQ
                  warehouseId: HQ Warehouse
                  language: en_US
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationResponse'
              example:
                userId: 100
                language: en_US
                menuTreeId: 10
                token: "eyJraWQiOiJpZ..."
                refresh_token: "eyJraWQiOiJpZ..."
  /auth/refresh:
    post:
      tags:
        - Authentication
      summary: Refresh authorization token
      description: >-
        The authorization token expires in 1 hour and the refresh_token expires in 24 hours.
        After the authorization token expires, you can get a new authorization token using the refresh token.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                refresh_token: 
                  type: string
                  description: Refresh token from /auth/tokens or /auth/refresh call
                clientId:
                  type: integer
                  description: clientId from the source /auth/tokens or /auth/refresh call
                userId:
                  type: integer
                  description: userId from the /auth/tokens response
            example:
              refresh_token: 'eyJraWQiOiJpZGVtcG...'
              clientId: 11
              userId: 101
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  token:
                      type: string
                      description: Authentication token (JWT)
                      example: "eyJraWQiOiJpZ..."
                  refresh_token:
                      type: string
                      description: Refresh token (JWT)
                      example: "eyJraWQiOiJpZ..."
              example:
                token: "eyJraWQiOiJpZ..."
                refresh_token: "eyJraWQiOiJpZ..."
  /auth/logout:
    post:
      tags:
        - Authentication
      summary: Logout the session related to a token.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                token: 
                  type: string
                  description: token from /auth/tokens or /auth/refresh call
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  summary:
                    type: string
                    description: info or error message from server
  /auth/jwk:
    get:
      tags:
        - Authentication
      summary: Get the signing key for integration with gateway API. 
      description: This requires the SysConfig IDEMPIERE_REST_EXPOSE_JWK=Y.
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JWKS'
  /auth/roles:
    get:
      tags:
        - Authentication
      summary: Get list of roles avalable
      parameters:
        - name: client
          in: query
          required: true
          schema:
            type: integer
          description: client id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  roles:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The unique identifier for the role.
                        name:
                          type: string
                          description: The name of the role.
                    description: An array of roles.
                description: A collection of roles.
  /auth/organizations:
    get:
      tags:
        - Authentication
      summary: Get list of organizations avalable
      parameters:
        - name: client
          in: query
          required: true
          schema:
            type: integer
          description: client id
        - name: role
          in: query
          required: true
          schema:
            type: integer
          description: role id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  organizations:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The unique identifier for the organization.
                        name:
                          type: string
                          description: The name of the organization.
                    description: An array of organization.
                description: A collection of organization.
  /auth/warehouses:
    get:
      tags:
        - Authentication
      summary: Get list of warehouse avalable
      parameters:
        - name: client
          in: query
          required: true
          schema:
            type: integer
          description: client id
        - name: role
          in: query
          required: true
          schema:
            type: integer
          description: role id
        - name: organization
          in: query
          required: true
          schema:
            type: integer
          description: organization id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  warehouses:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: The unique identifier for the warehouse.
                        name:
                          type: string
                          description: The name of the warehouse.
                    description: An array of warehouse.
                description: A collection of warehouse.
  /auth/language:
    get:
      tags:
        - Authentication
      summary: Get default client language
      parameters:
        - name: client
          in: query
          required: true
          schema:
            type: integer
          description: client id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  AD_Language:
                    type: string
                    description: language code
                    example: en_US
  /models:
    get:
      tags:
        - Models
      summary: Get list of model
      parameters:
        - $ref: '#/components/parameters/filter'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models'
  /models/{tableName}/yaml:
    get:
      tags:
        - Models
      summary: Get model yaml schema by table name
      parameters:
        - name: tableName
          in: path
          schema:
            type: string
          required: true
          description: table name
          example: 'ad_user'
      responses:
        '200':
          description: Successful response
          content:
            application/yaml:
              schema:
                type: string
                description: yaml schema of table
  /models/{tableName}:
    parameters:
      - name: tableName
        in: path
        schema:
          type: string
        description: table name
        required: true
        examples: 
          C_Tax:
            value: 'c_tax'
          C_BPartner:
            value: 'c_bpartner'
          C_UOM:
            value: 'c_uom'
          C_Order:
            value: 'c_order'
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Get records for table.
      description: Get records for table with optional filter, orderBy and pageNo parameter. Default page size is 100.
      parameters:
        - name: $expand
          in: query
          required: false
          schema:
            type: string
          examples:
            noExpand:
              value: ''
            C_OrderTax_C_OrderLine:
              value: C_OrderTax,C_OrderLine($select=Line,Linenetamt ; $top=1 ; $skip=1 ; $filter=IsActive eq true ; $orderby=Line)            
        - name: $filter
          in: query
          required: false
          schema:
            type: string
          examples:
            noFilter:
              value: ''
            inOperator_C_Tax:
              value: Name in ('106','PST','Exempt') AND C_Tax_ID in (106,107)
            equalOperator_C_Tax:
              value: Name eq 'Exempt'
            C_Tax_C_TaxCategory_ID_107:
              value: C_TaxCategory_ID eq 107
        - $ref: '#/components/parameters/orderby'
        - name: $select
          in: query
          required: false
          schema:
            type: string
          examples:
            noSelect:
              value: ''
            name:
              value: Name
            C_Order_DocumentNo_Description:
              value: DocumentNo,Description
        - $ref: '#/components/parameters/top'
        - $ref: '#/components/parameters/skip'
        - name: $valrule
          in: query
          required: false
          schema:
            type: integer
          examples:
            noValRule:
              value: 
            valRule_C_UOM:
              value: 210
        - name: $context
          in: query
          required: false
          schema:
            type: string
          examples:
            noContext: 
              value:
            valRule_C_UOM_210:
              value: 'M_Product_ID:124'
        - $ref: '#/components/parameters/showsql'
        - $ref: '#/components/parameters/label'
        - $ref: '#/components/parameters/showlabel'
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Models
      summary: Create new record for table
      requestBody:
        content:
          application/json:
            examples:
              C_Tax:
                value:
                  {
                    "AD_Org_ID": {
                        "id": 0,
                        "tableName": "AD_Org"
                    },
                    "isActive": true,
                    "name": "MyGST",
                    "description": "MyCanadian Federal Sales Tax",
                    "Parent_Tax_ID": {
                        "identifier": "GST/PST",
                        "tableName": "C_Tax"
                    },
                    "C_Country_ID": {
                        "identifier": "Canada",
                        "tableName": "C_Country"
                    },
                    "To_Country_ID": {
                        "identifier": "Canada",
                        "tableName": "C_Country"
                    },
                    "C_TaxCategory_ID": {
                        "identifier": "Standard",
                        "tableName": "C_TaxCategory"
                    },
                    "isDocumentLevel": false,
                    "validFrom": "2001-01-01",
                    "isSummary": false,
                    "rate": "7.0",
                    "requiresTaxCertificate": false,
                    "taxIndicator": "GST",
                    "isDefault": false,
                    "isTaxExempt": false,
                    "sOPOType": {
                        "id": "B"
                    },
                    "isSalesTax": false,
                    "tableName": "C_Tax"
                }
              C_BPartner_User_ContactInterest:
                value:
                  {
                      "name":"Test creating BP with User and Interest Area from REST",
                       "AD_User": [
                           {
                               "Name":"Test User with Interest area",
                               "R_ContactInterest": [
                                   {
                                       "R_InterestArea_ID":101
                                   }
                               ]
                           }
                       ]
                  }
      responses:
        '201':
          description: Successful response
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
  /models/{tableName}/{id}:
    parameters:
      - name: tableName
        in: path
        schema:
          type: string
        description: table name
        required: true
        examples:
          AD_User:
            value: 'ad_user'
          C_Invoice:
            value: 'c_invoice'
          C_BPartner:
            value: 'c_bpartner'
          C_Tax:
            value: 'c_tax'
          C_Tax_Acct:
            value: 'c_tax_acct'
          M_Product:
            value: 'm_product'
          C_BPartner_Location:
            value: 'c_bpartner_location'
          C_Cash:
            value: 'C_Cash'
      - name: id
        in: path
        schema:
          oneOf:
            - type: integer
            - type: string
        description: integer record id or string record uuid
        required: true
        examples:
          AD_User_100:
            value: 100
          AD_User_102:
            value: 102
          C_Invoice_104:
            value: 104
          C_BPartner_119:
            value: 119
          C_BPartner_Location_117:
            value: 117
          C_Tax_106:
            value: 106
          C_Tax_1000000:
            value: 1000000
          M_Product_122:
            value: 122
          C_Tax_Acct_UUID:
            value: 7df64952-88e0-4ebf-9f56-9cb899b555f8
          C_Cash_101:
            value: 101
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Get record by id.
      parameters:                
        - name: $expand
          in: query
          required: false
          schema:
            type: string
          examples:
            noExpand:
              value: ''
            AD_User_100_C_Order.SalesRep:
              value: C_Order.salesrep_id($select=documentno)
            C_Invoice_104_FactAcct_InvoiceLine:
              value: fact_acct.record_id($select=fact_acct_id),c_invoiceline
            C_BPartner_119_AD_User_R_ContactInterest:
              value: AD_User($select=Name ; $expand=R_ContactInterest($select=IsActive ; $filter=IsActive eq true))
            C_Tax_106_C_Tax_Acct:
              value: c_tax_acct
            M_Product_122_ProductCategoryID_ProductPrice:
              value: m_product_category_id($select=Name,IsDefault),M_ProductPrice
        - name: $select
          in: query
          required: false
          schema:
            type: string
          examples:
            noSelect:
              value: ''
            name:
              value: Name
        - $ref: '#/components/parameters/showsql'
        - $ref: '#/components/parameters/showlabel'
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Models
      summary: update record by id
      requestBody:
        content:
          application/json:
            examples:
              C_Tax_1000000:
                value:
                  {
                      "id": 1000000,
                      "name": "MyGST",
                      "description": "My Sales Tax",
                      "validFrom": "2019-01-01",
                      "rate": "6.0",
                      "isSalesTax": true,
                      "taxIndicator": "GST",
                      "tableName": "C_Tax"
                  }
              C_BPartner_Location_117_Location:
                value:
                  {
                      "Name": "Monroe",
                      "C_Location_ID": {
                          "id": 125,  # if id = 0 a new C_Location is created an linked to the record
                          "Address1": "address 1",
                          "Address2": "address 2",
                          "Address3": "address 3",
                          "Address4": "address 4",
                          "Address5": "address 5",
                          "Postal": "postal",
                          "Postal_Add": "add",
                          "C_Country_ID": 100,
                          "C_Region_ID": 102,
                          "RegionName": "RN",
                          "City": "Near Village",
                          "Comments": "comments",
                          "IsActive": true
                      }
                  }
              AD_User_102_Image:
                value:
                  {
                     "AD_Image_ID":{
                        "file_name":"idempiereLogo.jpg",
                        "url":"org/idempiere/idempiereLogo.jpg",
                        "data":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxITEhUSExEVFhMWGCAXGRcWGBgZFxodHBgeGBobHx8fHiggHR8mHh0YJTEjJikrLi4uICAzODMuQygtLisBCgoKDg0OGxAQGy0lHyUtLzcrNS0tNzcyNjcrLS0tNTUtNzctKy0vMjUtLTgvMjYtLS01MS4tMDc3LS0tKystK//AABEIAIUAjgMBIgACEQEDEQH/xAAcAAEAAwADAQEAAAAAAAAAAAAABQYHAQMEAgj/xAA/EAACAQMCAwUFBQUGBwAAAAABAgMABBEFEgYhMRNBUWFxByIygZEUcqGx0TVCUsHhJDM2g7PxI2Jjc4Ky8P/EABoBAQADAQEBAAAAAAAAAAAAAAACAwQGAQX/xAAjEQEAAgICAgICAwAAAAAAAAAAAQIDBBEhE0ESMWGRBSJR/9oADAMBAAIRAxEAPwDcaUpQKUpQKUpQK8t1ak80co/j1U/eU8j+B869VKCCOvmFgl2nZ55LKuTC3z6ofI/WptHBAIIIPMEcwa+Lq3SRSjqGVuRB6VRtQtLnTG7W3YyWpPvRtz2fp94fPzC/UqJ4f4ghu1yhw4+JD8Q/UedS1ApSlApSlApSlApSlApSlArqublIxud1RfFiAPqa4u7hY0eRvhRSx9AM1iuv6y9y5kkPovco8BWrV1ZzTPfEQwb29GtEdczLZbPU4JTiKaNyOoRlY/ga9dfmqa4aNg6MVdTkMpwQfI1t/s94iN7aCR8dqjdnJjvIAIb5gj55psa3i7ieYT1NvzR3HErNXDqCCCAQeRB6GuaVlbGb8QaC1nMJ7clUJ5EfuH+H0P8ASrfw5rguEwcCVfiHj5jy/KpO8tlkRo2GVYY/rVBjge3m5HDIfr/Qig0SldFjdCRA47+7wPeK76BSlKBSlKBSlKBSlKDxa3aGa3liHV42UepHL8a/O9xOykowIZSQQeoI5EV+laqvFPAVpet2jbo5T1ePA3feBGD69fOtetseLmJ+pYtvUjNxPuGA3dzW0+xfTHisWkcEdvJvUH+EAKD88E+mK+NI9klnE4eV5J8HIVsKnzA5n0zirdrOuW1mgMzhBj3UHNjjuVR/sK9z5vL/AFqlgwRhjmyUpWUar7XHzi3tRjuMpJJ/8V/WrLw3c6zMBJOtrCh5hGSQyY9A/u/Pn5VRbDasc26XVzVvPFe1yqv8Q2o3q3iMH5f71Ow7se9jP/LnH41EcSy4CfP+VVLXTw/Ltcxno3Meo/p+VWCqVb3eJEbwYfnzq60ClKUClKUClKUClKUClKieJNaW1hLnm55Ivif0HfUqUm9orH3KGTJXHWb2nqEfxlxUtomxMNOw5L3KP4m/kO+sZ1O4kmcySuXdupP/ANyHlUrfSPI7SOSzsckmo2ZK+9h1a4a/n25bN/IW2L/j1C5eyvhVXY3kq5VDiIHoWHV/l0HnnwrV68Gg2Qht4ogPgQA+uMsfmc176+JmyfO8y6bXx+PHEfsqk8WagDNsB5IMfM8z/KrFxFrC20Jc43Hki+J/QdTWVNeliWJySck+JNVLkx9o5j1rUayDSCZJ4kH7zgfLPP8ADNa/QKUpQKUpQKUpQKUpQcE1VNR4Ze8czTSmMdI4wM7V8W8z1I9BmrZSrMeW2Oea/anNgpmj437j/GHatbNDK8T/ABIcevgfmMVEyPzzVr9p1uY7zfjlIgYHzA2n8h9apUstdBTL88cWn3Dk763iy2rHqX6Nt5QyKw6MAR6EZFRmu8RQWq5dsv3RrzY/oPM1QOG9U+2Wy2n2gw3UQxGdxUSp3KcdSOnyB8ahdQ0W5iYiSGTPjgsD8xkGufyUmlprLrsWSMlItBrmsy3UpkkPkqjoo8B+teAOa9dvpNw5wkEh9Eb9Kl9P4eVZUjuGzK3w20ZDSt5uRyjQd7E+nOocJpn2a6OzMbpx7q5WPzJ5MfkOXzPhWiV128KoqoqhVUYAHQeQrsrx6UpSgUpSgUpSgUpSgUpSggOM+HBewbAQsqe9Gx6Z7wfI/pWGazp81s5jmjZG8+h8wehHmK/SVee+sYpl2SxpIvg4BH41pw7NscfH0yZ9SuWfl9S/L8k3eDzqSh461GJdqXkmB/EQ/wCLAmtku/ZjprnPZOme5JGA+hJr7sPZrpkR3fZ95/6jM4+hO38Ktvs0t6Qxa1qe2U6LNreqNsS4n7POGkLFIh6lcZ9Bk1sfBvCEGnxlU9+V/wC8lb4mPh5L5fXNT8MKooVFCqOQCgAD0Ar7rLfJ8uo6hrrXgpSlVplKUoFKUoFVbRuLmuL2a0FswWJnUy7srlG2jI28s+tWms14d1+4l1maBnxDG0wWNQFXk2Nxx8Td+TQd997UkjmkhFpIxjdkyGHPaSM4x5V7uG/aPb3UogaN4ZGOF3YKk+GR0PqKqHBX7dm+/P8Am1c+16ARX0EyDazKGJHLLI/JvXp9KDY6VnnH/FVylxDY2ZCyy7cvgEgucKoyCB4k+lR8Wu6hp9/FbXc4nil288dAzbcg4BBB7umKDU6VlWt8UaiNVe0t5AQWCIjKu0Fowck4zgEluvdXhXiLVrS++yySrPI+FCnGwlx7jA4BGCR4d9BsdKyJdf1Oy1GKC6nEokZdyjBQq7bcj3QQQc/SvVxZxVfxap9mt5AVJRVjKrtLOg6nGfiOetBqdVPUuM+yv0sfs5bcyDtN2AN/fjb3etVCLiDUrC/jgvJxKkhXOMFdrnbuU7QQQc8vKpPXeJbqPWYrVJsQM8QKbU5hsbuZGefrQaRSs04l4kvJ9QGnWUgi2nDPgZJC7mOcHAA5YHfXPC/EN5BqJ068lEueSvjmDt3rg4GQR3HvoNKpWNji7VJLy4toGMjF3SMbUGwB/izgdFGMscc6keIOJr+1gtbPd/bZQTI52sRukKoB+7k+Pdig1OlZRc61qWmXUKXdwJ4pcbuXQZw2DgEEZz4GtXoFZFwf+37n78//ALmtdqs6XwZDDeSXqySGSQuSp27RvOTjln8aCgcGMBrs2Tj35+vq1c+1W4W4v4IIiHZVCHac+879OXfjH1qQ1Hg/T5buUPNcqzO5L4j7LcFEzqDjPJWzzGOvOpXhrh/SbQrdLcCQ7tiPIykBsc8AADOOeT0HOgq3Htpu1mNGdo1k7IB1OCoPu5B7uYNe7VuHLGC7himvLqSclSgID9XwoJPTmKtnE+hWWpSdkZsXMQPNCNwGeYYHqASPMZ86heGeG7SG8kkklnmkt85lkAESlVUnJ3FshWGC2ByOM45BESf4k/zB/oV9cS/4hh+/D+QqzDR7BrxdTF2dzEuBldh2gRN3Z5ErnzIpqulWD3v297va8MiKy7l2B16KeWc8jnn3Ggq/tH/bNr6Q/wCq1fHEsqrxDGzHAEkOSfuqKuOscOWd5fLKblu3hCHs0K4wrbwTkZ/eHf0I8apPF9kk2uiGQEpI0atg4ODGooO/2ssH1G2jU5YIgIHcWkOBX1xN/iGH/uQ/yqR0XhK0tr87nnmkhAk5hAi+6WUk7tzH3TjA64rtuUsp7lNS/tPaLJEBEBHzJTfH34wVGT72aCsyaZ22uTQNK8W+R8Ohw3wlgAfMVN6ZollFqkcX2q5lukbPvAMvJN2C3XktSXGGh2dykWoCSWN5NgRowMsWwEyGIAI8dw/KvRwfw9Z2knbGZ2uZFH9/7rrvDN8PUEhWyST0NBWfZ9+2rn/O/wBUV1+1aDOpwbmKKyRjeORUdowJB8R1qz6FpthBeC6iuXke6aRFHulMn/iN0AI5Yx6ivVxda6bfQq8tyqhWKpKrDkcbivPkRjB9OYNBVOJuGLK3lijub27d35oMByPex39Mn8q12qBwvwLa9ot19qe62HCkkbQUOBnmSdp6DOKv9ApSlBVtZ4dUfaLjtGxslkEeBgO8HZM2epG0dPEmvNacILLbxFpmLEiQnauCGhSIrt6fCq8/GlKCbstBWOczh2JJkODjH/FKE/Tsx9a8l5woksssjyse1jePAVQQJAAQWAywGMqD0yaUoOi44NV1UGd9252dgq+/2jo7DH7vONennXquOGQVwszI3bvOG2qcGUMrDB5HkxxnyrmlB22PDyR3L3IckuPhIXkSqKTnrjCLy5d/liKv+ChJqK3/AG5BVlbs9mfgUD4t3fjwpSgk5uHg1y9z2mC6BGUohOArL7rEbl+LnjrXkt+DIFUR5zGHicoVXaxij7PmMY97kT50pQS2raYJoeyDBBy5bVZSB+6VIwVx3VXLXRkW+hgDMfs9mQGOCW3MUGRjHugvjr8X1UoJCx4UWNYl7Zj2cjOOQAw8XZFAP3Rjny6HPpXRHwTGIRD2rYBbmFUHDQG3GfEhTnPj5cqUoJzSNMWBXVWJ3yGTn3Fscvwr3UpQf//Z"
                     }
                  }
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Models
      summary: delete record by id
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}        
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /models/{tableName}/{id}/{columnName}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Get property value of a record
      parameters:
        - name: tableName
          in: path
          schema:
            type: string
          description: table name
          required: true
          examples:
            AD_Client:
              value: 'ad_client'
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
          examples:
            AD_Client_11:
              value: 11
        - name: columnName
          in: path
          schema:
            type: string
          description: column name
          required: true
          examples:
            AD_Client_AD_Language:
              value: AD_Language
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
  /models/{tableName}/{id}/attachments:
    parameters:
      - name: tableName
        in: path
        schema:
          type: string
        description: table name
        required: true
        examples:
          C_Order:
            value: 'c_order'
      - name: id
        in: path
        schema:
          oneOf:
            - type: string
            - type: integer
        description: integer record id or string record uuid
        required: true
        examples:
          C_Order_1000000:
            value: 1000000
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Get list of attachment of a record      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachments'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Models
      summary: add/update attachment by record id and file name
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: file name
                data:
                  type: string
                  format: byte
                  description: base64 encoded file content
      responses:
        '201':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Models
      summary: Delete attachment of a record
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /models/{tableName}/{id}/attachments/zip:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Get attachment of a record as zip archive
      parameters:
        - name: tableName
          in: path
          schema:
            type: string
          description: table name
          required: true
          examples:
            C_Order:
              value: 'c_order'
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
          examples:
            C_Order_1000000:
              value: 1000000
      responses:
        '200':
          $ref: '#/components/responses/BinaryResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /models/{tableName}/{id}/attachments/{fileName}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Get attachment of a record by file name
      parameters:
        - name: tableName
          in: path
          schema:
            type: string
          description: table name
          required: true
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
        - name: fileName
          in: path
          schema:
            type: string
          description: file name
          required: true
      responses:
        '200':
          $ref: '#/components/responses/BinaryResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /models/{tableName}/{id}/print:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Models
      summary: Print document of a record
      parameters:
        - name: tableName
          in: path
          schema:
            type: string
          description: table name
          required: true
          examples:
            C_Order:
              value: 'c_order'
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
          examples:
            C_Order_102:
              value: 102
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessInfo'
        '404':
          $ref: '#/components/responses/NotFound'
  /windows:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get list of window
      parameters:
        - name: $filter
          in: query
          required: false
          schema:
            type: string
          examples:
            noFilter:
              value: ''
            Bank_Cash:
              value: name eq 'Bank/Cash'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Window'
  /windows/{windowSlug}/tabs:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get list of tab of a window
      parameters:
        - name: windowSlug
          in: path
          required: true
          description: slugify window name
          schema:
            type: string
          examples:
            bankCashWindow:
              value: 'bank-cash'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Window'
        '404':
          $ref: '#/components/responses/NotFound'
  /windows/{windowSlug}/tabs/{tabSlug}/fields:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get list of field of a window tab
      parameters:
        - name: windowSlug
          in: path
          required: true
          description: slugify window name
          schema:
            type: string
          examples:
            bankCashWindow:
              value: 'bank-cash'
        - name: tabSlug
          in: path
          required: true
          description: slugify window tab name
          schema:
            type: string
          examples:
            bankCashWindow_bankCashTab:
              value: 'bank-cash'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    items:
                      $ref: '#/components/schemas/TabField'
        '404':
          $ref: '#/components/responses/NotFound'
  /windows/{windowSlug}:
    parameters:
      - name: windowSlug
        in: path
        required: true
        description: slugify window name
        schema:
          type: string
        examples:
          bankCashWindow:
            value: 'bank-cash'
          salesOrderWindow:
            value: 'sales-order'
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get records of a window
      parameters:        
        - name: $filter
          in: query
          description: SQL filter clause
          schema:
            type: string
          examples:
            noFilter:
              value: ''
            BankCash_Name:
              value: Name='MoneyBank'
        - name: $sort_column
          in: query
          description: Column to sort by, use ! prefix for descending sort
          schema:
            type: string
          examples:
            noSortColumn:
              value: ''
            SortByName:
              value: 'Name'
            SortByNameDescending:
              value: '!Name'
        - name: $page_no
          in: query
          description: Current page no
          schema:
            type: integer
          example: 0
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  page-count:
                      type: integer
                      description: number of page
                      example: 1
                  page-size:
                    type: integer
                    description: number of records per page
                    example: 100
                  page-number:
                    type: integer
                    description: current page number
                    example: 0
                  row-count:
                    type: integer
                    description: total row count
                    example: 2
                  window-records:
                    type: array
                    items:
                      type: object
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Windows
      summary: Create window record
      requestBody:
        content:
          application/json:
            examples:
              salesOrderWindow:
                value:
                  {
                    "isSOTrx": true,
                    "C_DocTypeTarget_ID": { "identifier": "Standard Order" },
                    "C_BPartner_ID" : { "identifier": "C&W Construction" },
                    "deliveryViaRule": "P",
                    "order-line": [{
                      "M_Product_ID": { "identifier": "Azalea Bush"},
                      "qtyEntered": 1
                    }],
                    "doc-action": "CO"
                  }
      responses:
        '201':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /windows/{windowSlug}/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get record by id
      parameters:
        - name: windowSlug
          in: path
          required: true
          description: slugify window name
          schema:
            type: string
          examples:
            bankCashWindow:
              value: 'bank-cash'
        - name: id
          in: path
          required: true
          description: record id
          schema:
            type: integer
          examples:
            bankCash_100:
              value: 100
        - name: $expand
          in: query
          schema:
            type: string
            description: comma separated list of child tabs to load
          examples:
            noExpand:
              value: ''
            bankCash_Account:
              value: 'account'
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
        '404':
          $ref: '#/components/responses/NotFound'
  /windows/{windowSlug}/{id}/print:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: print document of a record
      parameters:
        - name: windowSlug
          in: path
          required: true
          description: slugify window name
          schema:
            type: string
          examples:
            salesOrderWindow:
              value: 'sales-order'
        - name: id
          in: path
          required: true
          description: record id
          schema:
            type: integer
          examples:
            salesOrderWindow_102:
              value: 102
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessInfo'
        '404':
          $ref: '#/components/responses/NotFound'
  /windows/{windowSlug}/tabs/{tabSlug}/{id}:
    parameters:
      - name: windowSlug
        in: path
        required: true
        description: slugify window name
        schema:
          type: string
        examples:
          bankCashWindow:
            value: 'bank-cash'
      - name: tabSlug
        in: path
        required: true
        description: slugify window tab name
        schema:
          type: string
        examples:
          bankCashWindow_accountDocumentTab:
            value: 'bank-account-document'
      - name: id
        in: path
        required: true
        description: tab record id
        schema:
          type: integer
        examples:
          bankCashWindow_accountDocumentTab_100:
            value: 100
          bankCashWindow_accountDocumentTab_1000001:
            value: 1000001
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get tab record by id      
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Windows
      summary: Update tab record by id
      requestBody:
        content:
          application/json:
            examples:
              bankCashWindow_accountDocumentTab_100:
                value:
                  {
                      "Name": "My Check Book"
                  }
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Windows
      summary: Update tab record by id
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
        '404':
          $ref: '#/components/responses/NotFound'
  /windows/{windowSlug}/tabs/{tabSlug}/{id}/{childTabSlug}:
    parameters:
      - name: windowSlug
        in: path
        required: true
        description: slugify window name
        schema:
          type: string
        examples:
          bankCashWindow:
            value: 'bank-cash'
      - name: tabSlug
        in: path
        required: true
        description: slugify window tab name
        schema:
          type: string
        examples:
          bankCashWindow_accountTab:
            value: 'account'
      - name: id
        in: path
        required: true
        description: tab record id
        schema:
          type: integer
        examples:
          bankCashWindow_accountTab_100:
            value: 100
      - name: childTabSlug
        in: path
        required: true
        description: slugify child tab name
        schema:
          type: string
        examples:
          bankCashWindow_accountTab_bankAccountDoc:
            value: 'bank-account-document'
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Windows
      summary: Get child tab records      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  page-count:
                      type: integer
                      description: number of page
                      example: 1
                  page-size:
                    type: integer
                    description: number of records per page
                    example: 100
                  page-number:
                    type: integer
                    description: current page number
                    example: 0
                  row-count:
                    type: integer
                    description: total row count
                    example: 2
                  childtab-records:
                    type: array
                    items:
                      type: object
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    post:
      tags:
        - Windows
      summary: create child tab record
      requestBody:
        content:
          application/json:
            examples:
              bankCashWindow_accountTab_bankAccountDoc:
                value:
                  {
                      "AD_Org_ID": {
                          "identifier": "HQ"
                      },
                      "name": "My Check Book 2",
                      "isActive": true,
                      "paymentRule": {
                          "id": "S"
                      },
                      "currentNext": 1000,
                      "Check_PrintFormat_ID": {
                          "id": 124
                      }
                  }
      responses:
        '201':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /forms:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Forms
      summary: Get list of form
      parameters:
        - name: $filter
          in: query
          schema:
            type: string
          examples: 
            noFilter:
              value: ''
            notDictionaryEntityType:
              value: entityType neq 'D'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
               schema:
                  $ref: '#/components/schemas/Forms'
  /processes:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Process
      summary: Get list of process
      parameters:
        - name: $filter
          in: query
          schema:
            type: string
          examples: 
            noFilter:
              value: ''
            containBPName:
              value: contains(name,'Business Partner')
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Processes'
  /processes/{processSlug}:
    parameters:
      - name: processSlug
        in: path
        required: true
        schema:
          type: string
        examples:
          bpartnerOpen:
            value: 'rv_bpartneropen'
          orderDetail:
            value: 'rv_orderdetail'
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Process
      summary: Get process definition by slugify process name      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
               schema:
                  $ref: '#/components/schemas/Process'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Process
      summary: Run process
      requestBody:
        content:
          application/json:
            examples:
              orderDetail:
                value:
                  {
                    "C_BPartner_ID": "117,114",
                    "DateOrdered": "2022-01-01",
                    "DateOrdered_to": "2022-12-31",
                    "report-type" : "HTML"
                  }
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessInfo'
        '404':
          $ref: '#/components/responses/NotFound'
  /tasks:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Tasks
      summary: Get list of task
      parameters:
        - name: $filter
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Tasks'
  /tasks/{taskSlug}:
    parameters:
      - name: taskSlug
        in: path
        required: true
        schema:
          type: string
        description: slugify task name
        examples:
          javaVersion:
            value: java-version
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Tasks
      summary: Get task definition      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
               schema:
                  $ref: '#/components/schemas/Task'
        '500':
          $ref: '#/components/responses/ServerError'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Tasks
      summary: Run task
      responses:
        '200':
          description: Successful response
          content:
            application/json:
               schema:
                  type: object
                  properties:
                    exitValue:
                      type: integer
                      description: OS task exit value
                      example: 0
                    stdOut:
                      type: string
                      description: OS task standard output text
                    stdErr:
                      type: string
                      description: OS task standard error text
        '500':
          $ref: '#/components/responses/ServerError'
        '404':
          $ref: '#/components/responses/NotFound'
  /files:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Files
      parameters:
        - name: fileName
          in: query
          required: true
          schema:
            type: string
          description: file name
        - name: length
          in: query
          required: true
          schema:
            type: integer
            format: int64
          description: file size
        - name: node_id
          in: query
          schema:
            type: string
          description: server node id
        - name: json
          in: query
          schema:
            type: string
          description: 'not empty to get file content as base64 encoded data ("data": "base64 content")'
      responses:
        '200':
          description: Successful response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            text/html:
              schema:
                type: string
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    format: byte
                    description: base64 encoded file content
        '404':
          $ref: '#/components/responses/NotFound'
  /reference/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - References
      summary: get reference definition by integer reference id, string reference uuid or reference name
      parameters:
        - name: id
          in: path          
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer reference id, string reference uuid or reference name
          required: true
          examples:
            menuActionUUID:
              value: 'c4b63f2f-51da-49fe-9a10-83b9d8cb332f'
            menuActionId:
              value: 104
            menuActionName:
              value: 'AD_Menu Action'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Reference'
        '404':
          $ref: '#/components/responses/NotFound'
  /caches:
    parameters:
      - name: table_name
        in: query
        schema:
          type: string
        description: optional table name filter
    get:
      tags:
        - Caches
      summary: get list of active cache (accessible by administrator only)
      parameters:        
        - name: name
          in: query
          schema:
            type: string
          description: optional name filter
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Caches'
    delete:
      tags:
        - Caches
      summary: reset cache
      parameters:
        - name: record_id
          in: query
          schema:
            type: integer
          description: optional record id filter
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  entriesReset:
                    type: integer
                    description: number of cache entries reset
  /nodes:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Nodes
      summary: get list of server node
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerNodes'
  /nodes/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Nodes
      summary: get server node by node id
      parameters:
        - name: id
          in: path
          schema:
            type: string
            format: uuid
          required: true
          description: server node id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerNodeInfo'
        '404':
          $ref: '#/components/responses/NotFound'
  /nodes/{id}/logs:
    parameters:
      - name: id
        in: path
        schema:
          type: string
          format: uuid
        required: true
        description: server node id
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Nodes
      summary: get list of log file by server node id      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  logs:
                    type: array
                    items:
                      type: object
                      properties:
                        fileName: 
                          type: string
                          description: log file name
                        fileSize:
                          type: integer
                          description: log file size
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Nodes
      summary: remove server log files
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  currentLogFile:
                    type: string
                    description: current server log file name after removal of existing log files
        '404':
          $ref: '#/components/responses/NotFound'
  /nodes/{id}/logs/{fileName}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Nodes
      summary: get server log file
      parameters:
        - name: id
          in: path
          schema:
            type: string
            format: uuid
          required: true
          description: server node id
        - name: fileName
          in: path
          schema:
            type: string
          required: true
          description: log file name
        - name: json
          in: query
          schema:
            type: string
          description: 'not empty to get file content as base64 encoded data ("data": "base64 content")'
      responses:
        '200':
          description: Successful response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            text/html:
              schema:
                type: string
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    format: byte
                    description: base64 encoded file content
        '404':
          $ref: '#/components/responses/NotFound'
  /nodes/{id}/logs/rotate:
    parameters:
      - $ref: '#/components/parameters/locale'
    post:
      tags:
        - Nodes
      summary: rotate server log
      parameters:
        - name: id
          in: path
          schema:
            type: string
            format: uuid
          required: true
          description: server node id
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
  /servers:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - ServerJobs
      summary: get server jobs
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerJobs'
  /servers/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - ServerJobs
      summary: get server jobs
      parameters:
        - name: id
          in: path
          schema:
            type: string
          required: true
          description: server job id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerJobInfo'
        '404':
          $ref: '#/components/responses/NotFound'
  /servers/{id}/logs:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - ServerJobs
      summary: get server job logs
      parameters:
        - name: id
          in: path
          schema:
            type: string
          required: true
          description: server job id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerJobLogs'
        '404':
          $ref: '#/components/responses/NotFound'
  /servers/{id}/state:
    parameters:
      - $ref: '#/components/parameters/locale'
    post:
      tags:
        - ServerJobs
      summary: toggle server job state (stop to start and vice versa)
      parameters:
        - name: id
          in: path
          schema:
            type: string
          required: true
          description: server job id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerJobInfo'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /servers/{id}/run:
    parameters:
      - $ref: '#/components/parameters/locale'
    post:
      tags:
        - ServerJobs
      summary: run server job
      parameters:
        - name: id
          in: path
          schema:
            type: string
          required: true
          description: server job id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerJobInfo'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /servers/reload:
    post:
      tags:
        - ServerJobs
      summary: reload all server jobs
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerJobs'
        '401':
          description: Not authorize response
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse' }
        '500':
          $ref: '#/components/responses/ServerError'
  /servers/schedulers/{id}:
    parameters:
      - name: id
        in: path
        schema:
          type: integer
        required: true
        description: scheduler id
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Schedulers
      summary: Get scheduler details by id      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/AD_Scheduler'
                  - $ref: '#/components/schemas/SchedulerServerJob'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    post:
      tags:
        - Schedulers
      summary: Create new server job for scheduler
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/AD_Scheduler'
                  - $ref: '#/components/schemas/SchedulerServerJob'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Conflict response (server job exists for scheduler)
          content:
            application/json:
              schema: { $ref: '#/components/schemas/ErrorResponse' }
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Schedulers
      summary: Remove server job of a scheduler
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/AD_Scheduler'
                  - $ref: '#/components/schemas/SchedulerServerJob'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /infos:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - InfoWindows
      summary: get info windows
      parameters:
        - $ref: '#/components/parameters/filter'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  infowindows:
                    type: array
                    items:
                      allOf:
                        - $ref: '#/components/schemas/AD_InfoWindow'
                        - type: object
                          properties:
                            slug:
                              type: string
                              description: slugify info window name
  /infos/{infoSlug}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - InfoWindows
      summary: get records using info window
      parameters:
        - name: infoSlug
          in: path
          required: true
          schema:
            type: string
          description: slugify info window name
        - name: $parameters
          in: query
          schema:
            type: string
          description: json for info window query parameters
        - name: $where_clause
          in: query
          schema:
            type: string
          description: where clause for info window
        - name: $order_by
          in: query
          schema:
            type: string
          description: order by clause for info window
        - name: $page_no
          in: query
          schema:
            type: integer
            default: 0
          description: current page number (starting from 0)
      responses:
        '200':
          description: Successful response
          headers:
            X-Page:
              schema:
                type: integer
              description: current page numnber
            X-Per-Page:
              schema:
                type: integer
              description: number of records page numnber
            X-Next-Page:
              schema:
                type: integer
              description: next page numnber
            X-Prev-Page:
              schema:
                type: integer
              description: previous page numnber                
          content:
            application/json:
              schema:
                type: object
                properties:
                  infowindow-records:
                    type: array
                    items:
                      type: object
        '404':
          $ref: '#/components/responses/NotFound'
  /infos/{infoSlug}/columns:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - InfoWindows
      summary: get column definitions of an info window
      parameters:
        - name: infoSlug
          in: path
          required: true
          schema:
            type: string
          description: slugify info window name
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  infowindowcolumns:
                    type: array
                    items:
                      $ref: '#/components/schemas/AD_InfoColumn'
        '404':
          $ref: '#/components/responses/NotFound'
  /infos/{infoSlug}/processes:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - InfoWindows
      summary: get process definitions of an info window
      parameters:
        - name: infoSlug
          in: path
          required: true
          schema:
            type: string
          description: slugify info window name
          examples:
            support-users-vs-roles:
              value: support-users-vs-roles
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  infowindowprocesses:
                    type: array
                    items:
                      $ref: '#/components/schemas/AD_InfoProcess'
        '404':
          $ref: '#/components/responses/NotFound'
  /infos/{infoSlug}/relateds:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - InfoWindows
      summary: get related info windows of an info window
      parameters:
        - name: infoSlug
          in: path
          required: true
          schema:
            type: string
          description: slugify info window name
          examples:
            businessPartnerInfo:
              value: business-partner-info
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  infowindowrelateds:
                    type: array
                    items:
                      allOf:
                        - $ref: '#/components/schemas/AD_InfoRelated'
                        - type: object
                          properties:
                            slug:
                              type: string
                              description: slugify related info window name
        '404':
          $ref: '#/components/responses/NotFound'
  /workflow:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Workflows
      summary: Get workflow nodes for current user
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  row-count:
                    type: integer
                    description: number of rows
                  nodes:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkflowActivityNode'
        '500':
          $ref: '#/components/responses/ServerError'
  /workflow/{userId}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Workflows
      summary: Get workflow nodes for current user
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: user integer id or user string uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  row-count:
                    type: integer
                    description: number of rows
                  nodes:
                    type: array
                    items:
                      $ref: '#/components/schemas/WorkflowActivityNode'
        '500':
          $ref: '#/components/responses/ServerError'
  /workflow/approve/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    put:
      tags:
        - Workflows
      summary: Approve a pending workflow activity
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: workflow activity string uuid or integer record id
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: approval message
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowActivityResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /workflow/reject/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    put:
      tags:
        - Workflows
      summary: Reject a pending workflow activity
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: workflow activity string uuid or integer record id
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: reject message
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowActivityResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /workflow/forward/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    put:
      tags:
        - Workflows
      summary: Forward a pending workflow activity
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: workflow activity string uuid or integer record id
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: forward message
                userTo:
                  oneOf:
                    - type: string
                    - type: integer
                  description: integer user record id or string user record uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowActivityResponse'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /workflow/acknowledge/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    put:
      tags:
        - Workflows
      summary: Acknowledge a pending workflow activity
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: workflow activity string uuid or integer record id
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: acknowledge message
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowActivityResponse'
        '404':
          $ref: '#/components/responses/NotFound'
  /workflow/setuserchoice/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    put:
      tags:
        - Workflows
      summary: Set user selection value
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: workflow activity string uuid or integer record id
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: forward message
                value:
                  type: string
                  description: value to set
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowActivityResponse'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /statuslines:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - StatusLines
      summary: Get list of status lines
      parameters:
        - $ref: '#/components/parameters/filter'
        - name: with_messages
          in: query
          required: false
          schema:
            type: boolean
          description: true to include output message from parsing of status line
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusLines'
        '500':
          $ref: '#/components/responses/ServerError'
  /statuslines/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - StatusLines
      summary: Get output message of a status line
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: status line integer record id or status line string record uuid
          examples:
            statusLine_200024:
              value: 200024
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: output message from parsing of status line
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /charts/data:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Charts
      summary: Get multiple chart data
      parameters:
        - $ref: '#/components/parameters/filter'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  charts:
                    type: array
                    items: 
                      $ref: '#/components/schemas/ChartData'
        '500':
          $ref: '#/components/responses/ServerError'
  /charts/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Charts
      summary: Get chart as image or json data
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: chart integer record id or string uuid
        - name: width
          in: query
          schema:
            type: integer
          description: chart width
        - name: height
          in: query
          schema:
            type: integer
          description: chart height
        - name: json
          in: query
          schema:
            type: string
          description: if present, return chart as json data, otherwise as image
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    format: byte
                    description: base64 encoded chart image
            image/png:
              schema:
                type: string
                format: binary
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /charts/{id}/data:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Charts
      summary: Get chart data
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: chart integer record id or string uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChartData'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /menutree/{id}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Menutree
      summary: get menu tree by id
      parameters:
        - name: id
          in: path
          required: true
          schema:
            oneOf:
              - type: string
              - type: integer
          description: menu tree integer record id or string uuid
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MenuTree'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /views:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get REST_View schema by name
      parameters:
        - name: $filter
          in: query
          schema:
            type: string
          example: name eq '{view name}' #Replace {view name} with REST view definition name, for e.g tenants
      responses:
        '200':
          description: Successful response
          content:
            application/json:
               schema:
                  type: object
                  properties:
                    views:
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: View identifier
                            example: 1000000
                          uid:
                            type: string
                            format: uuid
                            description: Unique identifier for the view
                            example: 5066d4da-963d-4cc6-8e95-fafa39ab8987
                          name:
                            type: string
                            description: Name of the view
                            example: tenants
                          tableName:
                            type: string
                            description: Name of the database table
                            example: ad_client
                          whereClause:
                            type: string
                            description: SQL WHERE clause for the view
                            example: AD_Client.IsActive='Y' AND AD_Client.AD_Client_ID=@#AD_Client_ID@
                          columns:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                  description: Column identifier
                                  example: 1000030
                                uid:
                                  type: string
                                  format: uuid
                                  description: Unique identifier for the column
                                  example: fe346dce-6a56-4918-a831-247505b48bc2
                                name:
                                  type: string
                                  description: Name of the column
                                  example: value
                                columnName:
                                  type: string
                                  description: Name of the column in the database
                                  example: Value
                                help:
                                  type: string
                                  description: Help text for the column
                                  example: >-
                                    A search key allows you a fast method of finding a
                                    particular record. If you leave the search key empty, the
                                    system automatically creates a numeric number. The document
                                    sequence used for this fallback number is defined in the
                                    "Maintain Sequence" window with the name
                                    "DocumentNo_<TableName>", where TableName is the actual name
                                    of the table (e.g. C_Order).
                          relatedViews:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: integer
                                  description: Related view identifier
                                  example: 1000000
                                uid:
                                  type: string
                                  format: uuid
                                  description: Unique identifier for the related view
                                  example: 1b52d9c1-9669-4fd0-b282-528658af8c9d
                                name:
                                  type: string
                                  description: Name of the related view
                                  example: organizations
                                view:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                      description: View identifier within the related view
                                      example: 1000003
                                    uid:
                                      type: string
                                      format: uuid
                                      description: Unique identifier for the view within the related view
                                      example: cb1bcbd4-0a58-4682-84a0-28797e80261f
                                    name:
                                      type: string
                                      description: Name of the view within the related view
                                      example: organizations
                                autoExpand:
                                  type: boolean
                                  description: Flag indicating if the related view should be auto-expanded
                                  example: true
  /views/{viewName}/yaml:
    get:
      tags:
        - Views
      summary: Get REST_View yaml schema by name
      parameters:
        - name: viewName
          in: path
          schema:
            type: string
          required: true
          description: view name
          example: 'users'
      responses:
        '200':
          description: Successful response
          content:
            application/yaml:
              schema:
                type: string
                description: yaml schema of view
  /views/{viewName}:
    parameters:
      - name: viewName
        in: path
        schema:
          type: string
        description: REST_View name
        required: true
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get records for table.
      description: Get records for table with optional filter, orderBy and pageNo parameter. Default page size is 100.
      parameters:                
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/filter'
        - $ref: '#/components/parameters/orderby'
        - $ref: '#/components/parameters/select'
        - $ref: '#/components/parameters/top'
        - $ref: '#/components/parameters/skip'
        - $ref: '#/components/parameters/valrule'
        - $ref: '#/components/parameters/context'
        - $ref: '#/components/parameters/showsql'
        - $ref: '#/components/parameters/label'
        - $ref: '#/components/parameters/showlabel'
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Views
      summary: Create new record for table
      requestBody:
        content:
          application/json: {}
      responses:
        '201':
          description: Successful response
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
  /views/{viewName}/{id}:
    parameters:
      - name: viewName
        in: path
        schema:
          type: string
        description: REST_View name
        required: true
      - name: id
        in: path
        schema:
          oneOf:
            - type: integer
            - type: string
        description: integer record id or string record uuid
        required: true
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get record by id.
      parameters:                
        - $ref: '#/components/parameters/expand'
        - $ref: '#/components/parameters/select'
        - $ref: '#/components/parameters/showsql'
        - $ref: '#/components/parameters/showlabel'
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Views
      summary: update record by id
      requestBody:
        content:
          application/json: {}
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Views
      summary: delete record by id
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}        
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /views/{viewName}/{id}/{viewColumnName}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get property value of a record
      parameters:
        - name: viewName
          in: path
          schema:
            type: string
          description: REST_View name
          required: true
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
        - name: viewColumnName
          in: path
          schema:
            type: string
          description: REST_ViewColumn name
          required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
  /views/{viewName}/{id}/attachments:
    parameters:
      - name: viewName
        in: path
        schema:
          type: string
        description: REST_View name
        required: true
      - name: id
        in: path
        schema:
          oneOf:
            - type: string
            - type: integer
        description: integer record id or string record uuid
        required: true
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get list of attachment of a record      
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  attachments:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: attachment name
                        contentType:
                          type: string
                          description: attachment content type
                          example: image/png
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Views
      summary: add/update attachment by record id and file name
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: file name
                data:
                  type: string
                  format: byte
                  description: base64 encoded file content
      responses:
        '201':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Views
      summary: Delete attachment of a record
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/ServerError'
  /views/{viewName}/{id}/attachments/zip:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get attachment of a record as zip archive
      parameters:
        - name: viewName
          in: path
          schema:
            type: string
          description: REST_View name
          required: true
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
      responses:
        '200':
          description: Successful response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          $ref: '#/components/responses/NotFound'
  /views/{viewName}/{id}/attachments/{fileName}:
    parameters:
      - $ref: '#/components/parameters/locale'
    get:
      tags:
        - Views
      summary: Get attachment of a record by file name
      parameters:
        - name: viewName
          in: path
          schema:
            type: string
          description: REST_View name
          required: true
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
        - name: fileName
          in: path
          schema:
            type: string
          description: file name
          required: true
      responses:
        '200':
          description: Successful response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '404':
          $ref: '#/components/responses/NotFound'
  /views/{viewName}/{id}/print:
    get:
      tags:
        - Views
      summary: Print document of a record
      parameters:
        - name: viewName
          in: path
          schema:
            type: string
          description: REST_View name
          required: true
        - name: id
          in: path
          schema:
            oneOf:
              - type: string
              - type: integer
          description: integer record id or string record uuid
          required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessInfo'
        '404':
          $ref: '#/components/responses/NotFound'
  /uploads:
    post:
      tags:
        - Uploads
      summary: Initiate new upload session
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadInitiationRequest'
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadInitiationResponse'
        '500':
          $ref: '#/components/responses/ServerError'
    get:
      tags:
        - Uploads
      summary: Retrieves the pending uploads from current user
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: array
                items: { $ref: "#/components/schemas/UploadStatusResponse" }
        '404':
          description: no session found for uploadId
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
  /uploads/{uploadId}/chunks/{chunkOrder}:
    put:
      tags:
        - Uploads
      summary: Upload a chunk for an upload session
      parameters:
        - name: uploadId
          in: path
          schema:
            type: string
          description: REST_Upload uuid
          required: true
        - name: chunkOrder
          in: path
          schema:
            type: integer
          description: integer sequence of chunk (start from 1)
          required: true
        - in: header
          name: X-Total-Chunks
          schema:
            type: integer
          description: Total number of chunks for the upload session
          required: true
        - in: header
          name: X-Content-SHA256
          schema:
            type: string
          description: SHA-256 hash of chunk content, for content integrity verification
          required: true
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadChunkResponse'
        '404':
          description: no session found for uploadId
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
  /uploads/{uploadId}:
    get:
      tags:
        - Uploads
      summary: Retrieves the current status of an ongoing or completed upload
      parameters:
        - name: uploadId
          in: path
          schema:
            type: string
          description: REST_Upload uuid
          required: true
        - name: expiresInSeconds
          in: query
          schema:
            type: integer
          description: Number of seconds after which the presigned URL expires. When provided, a presigned URL will be returned for the upload session.
          required: false
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadStatusResponse'
        '404':
          description: no session found for uploadId
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
    delete:
      tags:
        - Uploads
      summary: Cancels an ongoing/completed upload, cleans up any temporarily stored chunks and associated uploaded file.
      parameters:
        - name: uploadId
          in: path
          schema:
            type: string
          description: REST_Upload uuid
          required: true
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: response message
        '404':
          description: no session found for uploadId
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
  /uploads/{uploadId}/file:
    get:
      tags:
        - Uploads
      summary: Get uploaded file content as binary stream or json
      parameters:
        - name: uploadId
          in: path
          schema:
            type: string
          description: REST_Upload uuid
          required: true
        - name: json
          in: query
          required: false
          schema:
            type: string
          description: if present, return file as json instead of as binary stream
      responses:
        '200':
          description: Successful response
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
            text/html:
              schema:
                type: string
            text/plain:
              schema:
                type: string
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    format: byte
                    description: base64 encoded file content
        '404':
          description: no session found for uploadId
          content:
            application/json: {}
        '400':
          $ref: '#/components/responses/ServerError'
        '500':
          $ref: '#/components/responses/ServerError'
  /uploads/{uploadId}/copy:
    post:
      tags:
        - Uploads
      summary: Copy uploaded file to attachment, image or archive (edited)
      parameters:
        - name: uploadId
          in: path
          schema:
            type: string
          description: REST_Upload uuid
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CopyUploadedFileRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CopyUploadedFileResponse'
        '404':
          description: no session found for uploadId
          content:
            application/json: {}
        '500':
          $ref: '#/components/responses/ServerError'
  /batch:
    post:
      tags:
         - Batch
      summary: Execute batch request
      parameters:
        - name: transaction
          in: query
          schema:
            type: boolean
          description: if true, all requests are processed in a single transaction (default is true)
          required: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchResponse'
        '500':
          $ref: '#/components/responses/ServerError'
  /health:
    get:
      tags:
        - Health
      summary: Health monitoring
      parameters:
        - name: key
          in: query
          required: false
          schema:
            type: string
          description: optional health monitoring key, required if configure at backend
        - name: db
          in: query
          required: false
          schema:
            type: boolean
          description: optional flag to enable/disable database connection check. default is false
      responses:
        '200':
          description: UP response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: 
                      - UP
                  database:
                    type: string
                    enum: 
                      - connected
        '503':
          description: DOWN response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum: 
                      - DOWN
                  database:
                    type: string
                    enum: 
                      - disconnected
