openapi: 3.0.0
info:
  title: 'YetiForce API for Webservice App. Type: RestApi'
  description: "Skip the `/webservice` fragment for connections via ApiProxy. There are two ways to connect to API, with or without rewrite, below are examples of both:\n * rewrite\n * - __CRM_URL__/webservice/RestApi/Users/Login\n * - __CRM_URL__/webservice/RestApi/Accounts/RecordRelatedList/117/Contacts\n * without rewrite\n * - __CRM_URL__/webservice.php?_container=RestApi&module=Users&action=Login\n * - __CRM_URL__/webservice.php?_container=RestApi&module=Accounts&action=RecordRelatedList&record=117&param=Contacts"
  termsOfService: 'https://yetiforce.com/'
  contact:
    name: 'Devs API Team'
    url: 'https://yetiforce.com/'
    email: devs@yetiforce.com
  license:
    name: 'YetiForce Public License v3'
    url: 'https://yetiforce.com/en/yetiforce/license'
  version: '0.2'
servers:
  -
    url: 'https://gitdeveloper.yetiforce.com'
    description: 'Demo server of the development version'
  -
    url: 'https://gitstable.yetiforce.com'
    description: 'Demo server of the latest stable version'
paths:
  /webservice/RestApi/Files:
    put:
      tags:
        - BaseAction
      summary: 'Download files'
      description: 'Download files from the system'
      operationId: e7e5964f6f553d84faa1c533f45fb323
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Action parameters to download the file'
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BaseAction_Files_Request'
          application/json:
            schema:
              $ref: '#/components/schemas/BaseAction_Files_Request'
          application/xml:
            schema:
              $ref: '#/components/schemas/BaseAction_Files_Request'
      responses:
        '200':
          description: 'File content, mediaType is dynamic depending on the type of file being downloaded'
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '403':
          description: 'No permissions'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '404':
          description: 'File not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '406':
          description: 'Not Acceptable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  /webservice/RestApi/Modules:
    get:
      tags:
        - BaseAction
      summary: 'The allowed actions of the module list'
      description: 'Get the permitted module list action, along with their translated action'
      operationId: df1ca264d776bc635ad40182dd4e6159
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'List of permitted modules'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseAction_Modules_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseAction_Modules_ResponseBody'
        '401':
          description: '`No sent token` OR `Invalid token`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: 'No permissions for module'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/CustomView':
    get:
      tags:
        - BaseModule
      summary: 'List of custom view'
      description: 'Gets a list of custom view'
      operationId: aac14296f707d0c16ecb78bf67044d48
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
      responses:
        '200':
          description: 'List of custom view'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_CustomView_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_CustomView_Response'
        '401':
          description: '`No sent token`, `Invalid token`, `Token has expired`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: '`No permissions for module`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: '`Invalid method`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/CustomView/{cvId}':
    get:
      tags:
        - BaseModule
      summary: 'Data of custom view'
      description: 'Gets data of custom view'
      operationId: 'Api\RestApi\BaseModule\CustomView::get(cvId)'
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: cvId
          in: path
          description: 'Custom view ID'
          required: true
          schema:
            type: integer
          example: 12
      responses:
        '200':
          description: 'Data of custom view'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_CustomViewById_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_CustomViewById_Response'
        '401':
          description: '`No sent token`, `Invalid token`, `Token has expired`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: '`No permissions to view record` OR `No permissions for module or data provided in the request`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: '`Invalid method`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/Fields':
    get:
      tags:
        - BaseModule
      summary: 'Get data about fields, blocks and inventory'
      description: 'Returns information about fields, blocks and inventory based on the selected module'
      operationId: a2cf7c7b2b5da1f48caf19abe4069b97
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'Fields, blocks and inventory details'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Fields_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Fields_ResponseBody'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/Privileges':
    get:
      tags:
        - BaseModule
      summary: 'Privileges for module actions'
      description: 'Gets the list of actions that the user has access to in the module'
      operationId: 259df69f1738a6b3164a2db69fdaf391
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'Privileges details'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Privileges_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Privileges_ResponseBody'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/Record/{recordId}':
    get:
      tags:
        - BaseModule
      summary: 'Data for the record'
      description: 'Gets the details of a record'
      operationId: getRecord
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: recordId
          in: path
          description: 'Record id'
          required: true
          schema:
            type: integer
          example: 116
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
        -
          name: x-raw-data
          in: header
          description: 'Gets raw data'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: x-parent-id
          in: header
          description: 'Parent record id'
          required: false
          schema:
            type: integer
          example: 5
      responses:
        '200':
          description: 'Gets data for the record'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_Record_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_Record_Response'
        '403':
          description: '`No permissions to remove record` OR `No permissions to view record` OR `No permissions to edit record`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '404':
          description: '`No record id` OR `Record doesn''t exist`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
    put:
      tags:
        - BaseModule
      summary: 'Edit record'
      description: 'Retrieves data for editing a record'
      operationId: 65777ed4b801f8d7f770c48832a5b8d3
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: recordId
          in: path
          description: 'Record id'
          required: true
          schema:
            type: integer
          example: 116
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Contents of the request contains an associative array with the data record.'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Record_Edit_Details'
          application/xml:
            schema:
              $ref: '#/components/schemas/Record_Edit_Details'
      responses:
        '200':
          description: 'Contents of the response contains only id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Put_Record_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Put_Record_Response'
          links:
            GetRecordById:
              $ref: '#/components/links/GetRecordById'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
    delete:
      tags:
        - BaseModule
      summary: 'Delete record'
      description: 'Changes the state of a record, moving it to the trash'
      operationId: 19a8bf7823fc975cdc2a87d35b5560a5
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: recordId
          in: path
          description: 'Record id'
          required: true
          schema:
            type: integer
          example: 116
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'List of records moved to the trash'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Delete_Record_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Delete_Record_Response'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/Record':
    post:
      tags:
        - BaseModule
      summary: 'Create record'
      description: 'Gets data to save record'
      operationId: 770ccd2c1675cd956bb501dcb76aa7ef
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Contents of the request contains an associative array with the data record.'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Record_Edit_Details'
          application/xml:
            schema:
              $ref: '#/components/schemas/Record_Edit_Details'
      responses:
        '200':
          description: 'Contents of the response contains only id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Post_Record_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Post_Record_Response'
          links:
            GetRecordById:
              $ref: '#/components/links/GetRecordById'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/RecordHistory/{recordId}':
    get:
      tags:
        - BaseModule
      summary: 'Record history'
      description: 'Gets the history of the record'
      operationId: 3be62bdf1b0d79699f735984ce3f9b44
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: recordId
          in: path
          description: 'Record id'
          required: true
          schema:
            type: integer
          example: 116
        -
          name: x-row-limit
          in: header
          description: 'Get rows limit, default: 100'
          required: false
          schema:
            type: integer
          example: 50
        -
          name: x-page
          in: header
          description: 'Page number, default: 1'
          required: false
          schema:
            type: integer
          example: 1
        -
          name: x-start-with
          in: header
          description: 'Show history from given ID'
          required: false
          schema:
            type: integer
          example: 5972
        -
          name: x-raw-data
          in: header
          description: 'Gets raw data'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'Recent activities detail'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_RecordHistory_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_RecordHistory_Response'
        '403':
          description: '`No permissions to view record` OR `MadTracker is turned off`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '404':
          description: 'Record doesn''t exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/RecordRelatedList/{recordId}/{relatedModuleName}':
    get:
      tags:
        - BaseModule
      summary: 'Related list of records'
      description: 'Gets a list of related records'
      operationId: ff2e1330b1ef2f8301a5aab71283cfb8
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: recordId
          in: path
          description: 'Record id'
          required: true
          schema:
            type: integer
          example: 116
        -
          name: relatedModuleName
          in: path
          description: 'Related module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: relationId
          in: query
          description: 'Relation id'
          required: false
          style: form
          schema:
            type: integer
        -
          name: cvId
          in: query
          description: 'Custom view id'
          required: false
          style: form
          schema:
            type: integer
        -
          name: x-raw-data
          in: header
          description: 'Gets raw data'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: x-row-limit
          in: header
          description: 'Get rows limit, default: 100'
          required: false
          schema:
            type: integer
          example: 1000
        -
          name: x-row-offset
          in: header
          description: 'Offset, default: 0'
          required: false
          schema:
            type: integer
          example: 0
        -
          name: x-fields
          in: header
          description: 'JSON array in the list of fields to be returned in response'
          required: false
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
                - field_name_1
                - field_name_2
        -
          name: x-condition
          in: header
          description: 'Conditions [Json format]'
          required: false
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conditions-Mix-For-Query-Generator'
        -
          name: x-only-column
          in: header
          description: 'Return only column names'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: x-order-by
          in: header
          description: 'Set the sorted results by columns [Json format]'
          required: false
          content:
            application/json:
              schema:
                title: 'Sort conditions'
                description: 'Multiple or one condition for a query generator'
                type: object
                additionalProperties:
                  description: 'Sort Direction'
                  type: string
                  enum: [ASC, DESC]
              example:
                field_name_1: ASC
                field_name_2: DESC
      responses:
        '200':
          description: 'List of entries'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_RecordRelatedList_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_RecordRelatedList_ResponseBody'
        '400':
          description: 'Relationship does not exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: 'No permissions to view record'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '404':
          description: 'Record doesn''t exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: 'No relation module name'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/RecordsList':
    get:
      tags:
        - BaseModule
      summary: 'List of records'
      description: 'Gets a list of records'
      operationId: 617a14bec66caca8bb41e81e63f6b22b
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
        -
          name: x-raw-data
          in: header
          description: 'Gets raw data'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: x-row-limit
          in: header
          description: 'Get rows limit, default: 100'
          required: false
          schema:
            type: integer
          example: 50
        -
          name: x-row-offset
          in: header
          description: 'Offset, default: 0'
          required: false
          schema:
            type: integer
          example: 0
        -
          name: x-fields
          in: header
          description: 'JSON array in the list of fields to be returned in response'
          required: false
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
                - field_name_1
                - field_name_2
        -
          name: x-condition
          in: header
          description: 'Conditions [Json format]'
          required: false
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conditions-Mix-For-Query-Generator'
        -
          name: x-only-column
          in: header
          description: 'Return only column names'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: x-parent-id
          in: header
          description: 'Parent record id'
          required: false
          schema:
            type: integer
          example: 5
        -
          name: x-cv-id
          in: header
          description: 'Custom view ID'
          required: false
          schema:
            type: integer
          example: 5
        -
          name: x-order-by
          in: header
          description: 'Set the sorted results by columns [Json format]'
          required: false
          content:
            application/json:
              schema:
                title: 'Sort conditions'
                description: 'Multiple or one condition for a query generator'
                type: object
                additionalProperties:
                  title: 'Sort Direction'
                  type: string
                  enum: [ASC, DESC]
              example:
                field_name_1: ASC
                field_name_2: DESC
      responses:
        '200':
          description: 'List of entries'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_RecordsList_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_RecordsList_ResponseBody'
        '400':
          description: 'Incorrect json syntax: x-fields'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '401':
          description: 'No sent token, Invalid token, Token has expired'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: '`No permissions for module` OR `No permissions for custom view: x-cv-id`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/{moduleName}/RelatedModules':
    get:
      tags:
        - BaseModule
      summary: 'Related list of modules'
      description: 'Gets a list of related modules'
      operationId: 71a4571db20bb07554e32ffaf0d2ae7c
      parameters:
        -
          name: moduleName
          in: path
          description: 'Module name'
          required: true
          schema:
            type: string
          example: Contacts
      responses:
        '200':
          description: 'List of related modules'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_RelatedModules_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/BaseModule_Get_RelatedModules_Response'
        '401':
          description: '`No sent token` OR `Invalid token`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: 'No permissions for module'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: 'Method Not Allowed'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  /webservice/RestApi/Users/AccessActivityHistory:
    get:
      tags:
        - Users
      summary: 'History of access activity data'
      description: 'Get user history of access activity'
      operationId: 9411ff6e3e5688bfcee71f6617c382f2
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
        -
          name: x-row-limit
          in: header
          description: 'Get rows limit, default: 50'
          required: false
          schema:
            type: integer
          example: 1000
        -
          name: x-row-offset
          in: header
          description: 'Offset, default: 0'
          required: false
          schema:
            type: integer
          example: 0
        -
          name: x-condition
          in: header
          description: 'Conditions [Json format]'
          required: false
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conditions-For-Native-Query'
      responses:
        '200':
          description: 'User history of access activity'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Get_AccessActivityHistory_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Get_AccessActivityHistory_Response'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  /webservice/RestApi/Users/ChangePassword:
    put:
      tags:
        - Users
      summary: 'User password change'
      description: 'User password change'
      operationId: d1dc376660ea2f2fb3e5a4468281b1b3
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Input data'
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Users_Put_ChangePassword_Request'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Users_Put_ChangePassword_Request'
          application/json:
            schema:
              $ref: '#/components/schemas/Users_Put_ChangePassword_Request'
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Put_ChangePassword_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Put_ChangePassword_Response'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  /webservice/RestApi/Users/Login:
    post:
      tags:
        - Users
      summary: 'Logs user'
      description: 'Logs user into the system'
      operationId: 07c6db55b2af71558ab59bc78681eafb
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Input data format'
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Users_Login_RequestBody'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Users_Login_RequestBody'
          application/json:
            schema:
              $ref: '#/components/schemas/Users_Login_RequestBody'
      responses:
        '200':
          description: 'User details'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Login_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Login_ResponseBody'
        '401':
          description: '`Invalid data access` OR `Invalid user password` OR `No crmid` OR `2FA verification error`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '412':
          description: 'No 2FA TOTP code'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
  /webservice/RestApi/Users/Logout:
    put:
      tags:
        - Users
      summary: 'Logout user'
      description: 'Logout user out the system'
      operationId: cdb50ef2e332551075d55b73fc0f19f8
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'User details'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersLogoutResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/UsersLogoutResponseBody'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  '/webservice/RestApi/Users/Record/{userId}':
    get:
      tags:
        - Users
      summary: 'Data for the user'
      description: 'Gets details about the user'
      operationId: d772610cb13d45f61fd38f99b4841658
      parameters:
        -
          name: userId
          in: path
          description: 'User id'
          required: true
          schema:
            type: integer
          example: 116
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
        -
          name: x-raw-data
          in: header
          description: 'Gets raw data'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
      responses:
        '200':
          description: 'Gets data for the user'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Get_Record_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Get_Record_Response'
        '403':
          description: 'Access denied, access for administrators only'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '404':
          description: 'User doesn''t exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  /webservice/RestApi/Users/RecordsList:
    get:
      tags:
        - Users
      summary: 'List of users'
      description: 'Gets a list of all users'
      operationId: 06283061eb0b2567eb3452326eba3be0
      parameters:
        -
          name: x-raw-data
          in: header
          description: 'Gets raw data'
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
          example: 1
        -
          name: x-row-limit
          in: header
          description: 'Get rows limit, default: 1000'
          required: false
          schema:
            type: integer
          example: 1000
        -
          name: x-row-offset
          in: header
          description: 'Offset, default: 0'
          required: false
          schema:
            type: integer
          example: 0
        -
          name: x-order-by
          in: header
          description: 'Set the sorted results by columns [Json format]'
          required: false
          content:
            application/json:
              schema:
                title: 'Sort conditions'
                description: 'Multiple or one condition for a query generator'
                type: object
                additionalProperties:
                  title: 'Sort Direction'
                  type: string
                  enum: [ASC, DESC]
              example:
                field_name_1: ASC
                field_name_2: DESC
        -
          name: x-fields
          in: header
          description: 'JSON array in the list of fields to be returned in response'
          required: false
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              example:
                - field_name_1
                - field_name_2
        -
          name: x-condition
          in: header
          description: 'Conditions [Json format]'
          required: false
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conditions-Mix-For-Query-Generator'
        -
          name: x-parent-id
          in: header
          description: 'Parent record id'
          required: false
          schema:
            type: integer
          example: 5
      responses:
        '200':
          description: 'List of entries'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_RecordsList_ResponseBody'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_RecordsList_ResponseBody'
        '400':
          description: 'Incorrect json syntax: x-fields'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '401':
          description: 'No sent token, Invalid token, Token has expired'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '403':
          description: 'No permissions for module'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
  /webservice/RestApi/Users/ResetPassword:
    put:
      tags:
        - Users
      summary: 'User password reset-Passwordchange'
      description: 'User password reset - Password change'
      operationId: d95ed76e2118df6c4e85e9c912ff6a65
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Input data'
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Users_Put_ResetPassword_Request'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Users_Put_ResetPassword_Request'
          application/json:
            schema:
              $ref: '#/components/schemas/Users_Put_ResetPassword_Request'
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Put_ResetPassword_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Put_ResetPassword_Response'
        '404':
          description: 'User with this email address does not exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '405':
          description: ERR_TOKEN_DOES_NOT_EXIST
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
    post:
      tags:
        - Users
      summary: 'User password reset-Generatingandsendingaone-timetoken'
      description: 'User password reset - Generating and sending a one-time token'
      operationId: 1afb975ceee34717503a9e5403f49a58
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      requestBody:
        description: 'Input data'
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Users_Post_ResetPassword_Request'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Users_Post_ResetPassword_Request'
          application/json:
            schema:
              $ref: '#/components/schemas/Users_Post_ResetPassword_Request'
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Post_ResetPassword_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Post_ResetPassword_Response'
        '404':
          description: 'User with this email address does not exist'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
  /webservice/RestApi/Users/TwoFactorAuth:
    get:
      tags:
        - Users
      summary: '2FA details'
      description: 'Get two factor authentication details'
      operationId: e559de23e6df4e58325d739f59306392
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'Authentication secret details'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Get_TwoFactorAuth_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Get_TwoFactorAuth_Response'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '500':
          description: 'Two-factor authentication has not been enabled'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
    post:
      tags:
        - Users
      summary: 'Activate 2FA'
      description: 'Activate two factor authentication'
      operationId: 72c912b1b67230fdfc169614345636f2
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'Access details'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_post_TwoFactorAuth_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_post_TwoFactorAuth_Response'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '500':
          description: '`Two-factor authentication has not been enabled` OR `A secret 2FA key has already been generated.`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
    delete:
      tags:
        - Users
      summary: 'Disable 2FA'
      description: 'Disable two factor authentication'
      operationId: f8fb6d3b711bb1143fbcff29f2996a0a
      parameters:
        -
          name: X-ENCRYPTED
          in: header
          required: true
          schema:
            $ref: '#/components/schemas/Header-Encrypted'
      responses:
        '200':
          description: 'Disable two factor authentication response'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Users_Delete_TwoFactorAuth_Response'
            application/xml:
              schema:
                $ref: '#/components/schemas/Users_Delete_TwoFactorAuth_Response'
        '405':
          description: 'Invalid method'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
        '500':
          description: 'Two-factor authentication has not been enabled'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Exception'
            application/xml:
              schema:
                $ref: '#/components/schemas/Exception'
      security:
        -
          basicAuth: []
          ApiKeyAuth: []
          token: []
components:
  schemas:
    BaseAction_Files_Request:
      title: 'Base action - Files request schema'
      description: 'Action parameters to download the file'
      required:
        - module
        - actionName
        - record
      properties:
        module:
          description: 'Module name'
          type: string
          example: Contacts
        actionName:
          description: 'Action name'
          type: string
          enum:
            - MultiImage
            - DownloadFile
          example: MultiImage
        record:
          description: 'Record ID'
          type: integer
          example: 123
        field:
          description: 'Field name. Required for MultiImage action'
          type: string
          example: imagename
        key:
          description: 'Unique key for attachment. Required for MultiImage action'
          type: string
          example: 14f01c4ea4da107c4145f0519ea1b9027fb24aa7MS2AqcUFuC
      type: object
    BaseAction_Modules_ResponseBody:
      title: 'Base action - List of permitted modules'
      description: 'List of available modules'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'List of permitted modules'
          type: object
          additionalProperties:
            description: 'Module name'
            type: string
            example: Accounts
      type: object
    BaseModule_Get_CustomView_Response:
      title: 'Base module - Response action - data of custom view list'
      description: 'Module action - Data of custom view list - response body'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'List of custom view'
          type: object
          additionalProperties:
            $ref: '#/components/schemas/BaseModule_CustomViewById_Result'
      type: object
    BaseModule_Get_CustomViewById_Response:
      title: 'Base module - Response action - data of custom view by specific ID'
      description: 'Module action - custom view for specific ID - response body'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          $ref: '#/components/schemas/BaseModule_CustomViewById_Result'
      type: object
    BaseModule_CustomViewById_Result:
      title: 'Data of custom view by specific ID'
      description: 'Module action - custom view for specific ID - response data'
      required:
        - cvid
        - viewname
        - entitytype
        - sequence
        - description
        - color
        - isFeatured
        - isDefault
      properties:
        cvid:
          description: 'Custom view ID'
          type: integer
          example: 12
        viewname:
          description: 'Custom view name'
          type: string
          example: 'Test 1'
        entitytype:
          description: 'Module name'
          type: string
          example: Accounts
        sequence:
          description: Sequence
          type: integer
          example: 1
        description:
          description: 'Custom view description'
          type: string
          example: Description
        color:
          description: 'Color for custom view'
          type: string
          example: '#c28306'
        isFeatured:
          description: 'Custom view is in favorites'
          type: boolean
          example: false
        isDefault:
          description: 'Custom view is default'
          type: boolean
          example: false
      type: object
    BaseModule_Fields_ResponseBody:
      title: 'Base module - Response action fields'
      description: 'Fields, blocks and inventory details'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Fields parameters'
          required:
            - fields
            - blocks
          properties:
            fields:
              title: 'List of all available fields in the module'
              required:
                - name
                - label
                - type
                - mandatory
                - defaultvalue
                - presence
                - quickcreate
                - masseditable
                - header_field
                - maxlengthtext
                - maximumlength
                - maxwidthcolumn
                - tabindex
                - fieldtype
                - id
                - uitype
                - isEditable
                - isViewable
                - isReadOnly
                - isEditableReadOnly
                - sequence
                - fieldparams
                - blockId
                - helpInfo
                - dbStructure
                - queryOperators
              type: object
              additionalProperties:
                properties:
                  name: { description: 'Field name', type: string, example: subject }
                  label: { description: 'Field label translated into the user''s language', type: string, example: Subject }
                  type: { description: 'Field type', type: string, example: string }
                  mandatory: { description: 'Check if field is mandatory', type: boolean, example: true }
                  defaultvalue: { description: 'Default field value', type: string, example: '' }
                  presence: { description: 'Check if field is active', type: boolean, example: true }
                  quickcreate: { description: 'Check if field is active', type: boolean, example: true }
                  masseditable: { description: 'Check if field is quick create enabled', type: boolean, example: true }
                  header_field: { title: 'Field configuration available in the header', properties: { type: { description: Type, type: string, example: value }, class: { description: 'Gui class', type: string, example: badge-info } }, type: object }
                  maxlengthtext: { description: 'Max length text', type: integer, example: 0 }
                  maximumlength: { description: 'Maximum field range', type: string, example: '-2147483648,2147483647' }
                  maxwidthcolumn: { description: 'Max width column', type: integer, example: 0 }
                  tabindex: { description: 'Field tab index', type: integer, example: 0 }
                  fieldtype: { description: 'Field short data type', type: string, example: V }
                  picklistvalues: { title: 'Picklist values, available only for type of field: picklist, multipicklist, multiowner, multiReferenceValue, inventoryLimit, languages, currencyList, fileLocationType, taxes, multiListFields, mailScannerFields, country, modules, sharedOwner, categoryMultipicklist, tree', type: object }
                  date-format: { title: 'Date format, available only for type of field: date, datetime', type: string }
                  time-format: { title: 'Time format, available only for type of field: time', type: string }
                  currency_symbol: { title: 'Currency symbol, available only for type of field: currency', type: string }
                  decimal_separator: { title: 'Currency decimal separator, available only for type of field: currency', type: string }
                  group_separator: { title: 'Currency group separator, available only for type of field: currency', type: string }
                  restrictedDomains: { title: 'Email restricted domains, available only for type of field: email', properties: { yeti.com: { description: 'List of domains reserved by email', example: yeti.com } }, type: object }
                  limit: { title: 'Limit the amount of images, available only for type of field: multiImage, image', type: integer }
                  formats: { title: 'File Format, available only for type of field: multiImage, image', properties: { jpg: { description: 'List of file data formats', example: jpg } }, type: object }
                  id: { description: 'Field ID', type: integer, example: 24862 }
                  uitype: { description: 'Field UiType', type: integer, example: 1 }
                  isEditable: { description: 'Check if record is editable', type: boolean, example: true }
                  isViewable: { description: 'Check if record is viewable', type: boolean, example: true }
                  isReadOnly: { description: 'Check if record is read only (based on profiles)', type: boolean, example: false }
                  isEditableReadOnly: { description: 'Check if record is editable or read only (based on the field type)', type: boolean, example: false }
                  sequence: { description: 'Sequence field', type: integer, example: 24862 }
                  fieldparams: { description: 'Field params', type: object }
                  blockId: { description: 'Field block id', type: integer, example: 280 }
                  helpInfo: { description: 'Additional field description', type: string, example: 'Edit,Detail' }
                  dbStructure: { description: 'Info about field structure in database', type: object }
                  queryOperators: { description: 'Field query operators', type: object }
                  isEmptyPicklistOptionAllowed: { description: 'Defines empty picklist element availability', type: boolean, example: false }
                  referenceList: { title: 'List of related modules, available only for reference field', type: object, additionalProperties: { description: 'Tree item', type: string, example: Accounts } }
                  treeValues: { title: 'Tree items, available only for tree field', type: object, additionalProperties: { title: 'Tree item', properties: { id: { description: 'Number tree without prefix', type: integer, example: 1 }, tree: { description: 'Tree id', type: string, example: T10 }, parent: { description: 'Parent tree id', type: string, example: T1 }, text: { description: 'Tree value', type: string, example: 'Tree value' } }, type: object } }
                type: object
            blocks:
              title: 'List of all available blocks in the module'
              type: object
              additionalProperties:
                title: 'Block details'
                required:
                  - id
                  - tabid
                  - label
                  - sequence
                  - showtitle
                  - visible
                  - increateview
                  - ineditview
                  - indetailview
                  - display_status
                  - iscustom
                  - icon
                  - name
                properties:
                  id: { description: 'Block id', type: integer, example: 195 }
                  tabid: { description: 'Module id', type: integer, example: 9 }
                  label: { description: 'Block label', type: string, example: 'Account details' }
                  sequence: { description: 'Block sequence', type: integer, example: 1 }
                  showtitle: { description: 'Specifies whether the title should be visible', type: integer, example: 0 }
                  visible: { description: 'Determines the visibility', type: integer, example: 0 }
                  increateview: { description: 'Determines the visibility in creat view', type: integer, example: 0 }
                  ineditview: { description: 'Determines the visibility in edit view', type: integer, example: 0 }
                  indetailview: { description: 'Determines the visibility in detail view', type: integer, example: 0 }
                  display_status: { description: 'Determines whether the block should be expanded', type: integer, example: 2 }
                  iscustom: { description: 'Determines if the block has been added by the user', type: integer, example: 0 }
                  icon: { description: 'Block icon class', type: string, example: 'far fa-calendar-alt' }
                  name: { description: 'Block name translated into the user''s language', type: string, example: 'Informacje podstawowe o firmie' }
                type: object
            inventory:
              title: 'Inventory field group, available depending on the type of module'
              properties:
                '1':
                  title: 'Inventory field list'
                  type: object
                  additionalProperties: { title: 'Inventory field details', required: [label, type, columnname, isSummary, isVisibleInDetail], properties: { label: { description: 'Field label translated into the user''s language', type: string, example: 'Unit price' }, type: { description: 'Field type', type: string, example: UnitPrice }, columnname: { description: 'Field column name in db', type: string, example: price }, isSummary: { description: 'Is the field contains summary', type: boolean, example: false }, isVisibleInDetail: { description: 'Check if field is visible in detail view', type: boolean, example: true } }, type: object }
              type: object
          type: object
      type: object
    BaseModule_Privileges_ResponseBody:
      title: 'Base module - Privileges response schema'
      description: 'Get privileges for module.'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'List of module privileges'
          type: object
          example:
            EditView: true
            Delete: true
            DetailView: true
            CreateView: true
          additionalProperties:
            description: Action
            type: boolean
      type: object
    BaseModule_Get_Record_Response:
      title: 'Base module - Response body for Record'
      description: 'Get record detail.'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Record data'
          required:
            - name
            - id
            - fields
            - data
          properties:
            name:
              description: 'Record name'
              type: string
              example: 'Driving school'
            id:
              description: 'Record Id'
              type: integer
              example: 152
            fields:
              title: 'System field names and field labels'
              type: object
              example:
                field_name_1: 'Field label 1'
                field_name_2: 'Field label 2'
                assigned_user_id: 'Assigned user'
                createdtime: 'Created time'
              additionalProperties:
                description: 'Field label'
                type: string
            data:
              $ref: '#/components/schemas/Record_Display_Details'
            privileges:
              title: 'Parameters determining checking of editing rights and moving to the trash'
              required:
                - isEditable
                - moveToTrash
              properties:
                isEditable:
                  description: 'Check if record is editable'
                  type: boolean
                  example: true
                moveToTrash:
                  description: 'Permission to delete'
                  type: boolean
                  example: false
              type: object
            inventory:
              description: 'Value inventory data'
              type: object
            summaryInventory:
              description: 'Value summary inventory data'
              type: object
            rawData:
              $ref: '#/components/schemas/Record_Raw_Details'
            rawInventory:
              description: 'Inventory data'
              type: object
          type: object
      type: object
    BaseModule_Delete_Record_Response:
      title: 'Base module - Transfer to the trash'
      description: 'List of records moved to the trash'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'Status of successful transfer of the record to the recycle bin'
          type: boolean
      type: object
    BaseModule_Put_Record_Response:
      title: 'Base module - Response body for Record'
      description: 'Contents of the response contains only id'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Record data'
          description: 'Created record id and name.'
          required:
            - id
            - name
          properties:
            id:
              description: 'Id of the newly created record'
              type: integer
              example: 22
            name:
              description: 'Id of the newly created record'
              type: string
              example: 'YetiForce Name'
            skippedData:
              description: 'List of parameters passed in the request that were skipped in the write process'
              type: object
          type: object
      type: object
    Record_Edit_Details:
      title: 'General - Record edit details'
      description: 'Record data in user format for edit view'
      type: object
      example:
        field_name_1: Tom
        field_name_2: Kowalski
        assigned_user_id: 1
        createdtime: '2014-09-24 20:51:12'
    Record_Raw_Details:
      title: 'General - Record raw details'
      description: 'Record data in the system format as stored in a database'
      type: object
      example:
        id: 11
        field_name_1: Tom
        field_name_2: Kowalski
        assigned_user_id: 1
        createdtime: '2014-09-24 20:51:12'
    Record_Display_Details:
      title: 'General - Record display details'
      description: 'Record data in user format for preview'
      type: object
      example:
        id: 11
        field_name_1: Tom
        field_name_2: Kowalski
        assigned_user_id: 'YetiForce Administrator'
        createdtime: '2014-09-24 20:51'
    BaseModule_Post_Record_Response:
      title: 'Base module - Created records'
      description: 'Contents of the response contains only id'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Record data'
          description: 'Created record id and name.'
          required:
            - id
            - name
          properties:
            id:
              description: 'Id of the newly created record'
              type: integer
              example: 22
            name:
              description: 'Id of the newly created record'
              type: string
              example: 'YetiForce Name'
            skippedData:
              description: 'List of parameters passed in the request that were skipped in the write process'
              type: object
          type: object
      type: object
    BaseModule_Get_RecordHistory_Response:
      title: 'Base module - Response action history record'
      description: 'Action module for recent activities in CRM'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Returns recent activities that took place in CRM'
          required:
            - records
            - isMorePages
          properties:
            records:
              title: 'Entires of recent record activities'
              type: object
              additionalProperties:
                title: 'Key indicating the number of changes made to a given record'
                required:
                  - time
                  - owner
                  - status
                properties:
                  time: { description: 'Showing the exact date on which the change took place', type: string, example: '2019-10-07 08:32:38' }
                  owner: { description: 'Username of the user who made the change', type: string, example: 'System Admin' }
                  status: { description: 'Name of the action that was carried out', type: string, example: changed }
                  rawTime: { description: 'Showing the exact date on which the change took place', type: string, example: '2019-10-07 08:32:38' }
                  rawOwner: { description: 'User ID of the user who made the change', type: integer, example: 1 }
                  rawStatus: { description: 'The name of the untranslated label', type: string, example: LBL_UPDATED }
                  data: { title: 'Additional information', oneOf: [{ title: 'Record data create', type: object, additionalProperties: { required: [label, value, raw], properties: { label: { description: 'Translated field label', type: string, example: Name }, value: { description: 'Value, the data type depends on the field type', type: string, example: 'Jan Kowalski' }, raw: { description: 'Value in database format, only available in `x-raw-data`', type: string, example: 'Jan Kowalski' } }, type: object } }, { title: 'Record data change', description: 'Edit, conversation', type: object, additionalProperties: { required: [label, from, to], properties: { label: { description: 'Translated field label', type: string, example: Name }, from: { description: 'Value before change, the data type depends on the field type', type: string, example: 'Jan Kowalski' }, to: { description: 'Value after change, the data type depends on the field type', type: string, example: 'Jan Nowak' }, rawFrom: { description: 'Value before change, value in database format, only available in `x-raw-data`', type: string, example: 'Jan Kowalski' }, rawTo: { description: 'Value after change, value in database format, only available in `x-raw-data`', type: string, example: 'Jan Nowak' } }, type: object } }, { title: 'Operations on related records', description: 'Adding relations, removing relations, transferring records', required: [targetModule, targetModuleLabel, targetLabel], properties: { targetModule: { description: 'The name of the target related module', type: string, example: Contacts }, targetModuleLabel: { description: 'Translated module name', type: string, example: Kontakt }, targetLabel: { description: 'The label name of the target related module', type: string, example: 'Jan Kowalski' }, targetId: { description: 'Id of the target related module', type: integer, example: 394 } }, type: object }] }
                type: object
            isMorePages:
              type: boolean
              example: true
          type: object
      type: object
    BaseModule_RecordRelatedList_ResponseBody:
      title: 'Base module - Response action related record list'
      description: 'Module action related record list response body'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'List of related records'
          required:
            - headers
            - records
            - permissions
            - numberOfRecords
            - isMorePages
          properties:
            headers:
              title: 'Fields names'
              type: object
              example:
                field_name_1: 'Field label 1'
                field_name_2: 'Field label 2'
                assigned_user_id: 'Assigned user'
                createdtime: 'Created time'
              additionalProperties:
                description: 'Field name'
                type: string
            records:
              title: 'Records display details'
              type: object
              additionalProperties:
                $ref: '#/components/schemas/Record_Display_Details'
            permissions:
              title: 'Records action permissions'
              type: object
              additionalProperties:
                title: 'Record action permissions'
                required:
                  - isEditable
                  - moveToTrash
                properties:
                  isEditable: { description: 'Check if record is editable', type: boolean, example: true }
                  moveToTrash: { description: 'Permission to delete', type: boolean, example: true }
                type: object
            rawData:
              title: 'Records raw details, dependent on the header `x-raw-data`'
              type: object
              additionalProperties:
                $ref: '#/components/schemas/Record_Raw_Details'
            numberOfRecords:
              description: 'Number of records on the page'
              type: integer
              example: 20
            isMorePages:
              description: 'There are more pages'
              type: boolean
              example: true
            numberOfAllRecords:
              description: 'Number of all records, dependent on the header `x-row-count`'
              type: integer
              example: 54
          type: object
      type: object
    BaseModule_RecordsList_ResponseBody:
      title: 'Base module - Response action record list'
      description: 'Module action record list response body'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'List of records'
          required:
            - headers
            - records
            - permissions
            - numberOfRecords
            - isMorePages
          properties:
            headers:
              title: 'Fields names'
              type: object
              example:
                field_name_1: 'Field label 1'
                field_name_2: 'Field label 2'
                assigned_user_id: 'Assigned user'
                createdtime: 'Created time'
              additionalProperties:
                description: 'Field name'
                type: string
            records:
              title: 'Records display details'
              type: object
              additionalProperties:
                $ref: '#/components/schemas/Record_Display_Details'
            permissions:
              title: 'Records action permissions'
              type: object
              additionalProperties:
                title: 'Record action permissions'
                required:
                  - isEditable
                  - moveToTrash
                properties:
                  isEditable: { type: boolean, example: true }
                  moveToTrash: { type: boolean, example: true }
                type: object
            rawData:
              title: 'Records raw details, dependent on the header `x-raw-data`'
              type: object
              additionalProperties:
                $ref: '#/components/schemas/Record_Raw_Details'
            numberOfRecords:
              description: 'Number of records on the page'
              type: integer
              example: 20
            isMorePages:
              description: 'There are more pages'
              type: boolean
              example: true
            numberOfAllRecords:
              description: 'Number of all records, dependent on the header `x-row-count`'
              type: integer
              example: 54
          type: object
      type: object
    BaseModule_Get_RelatedModules_Response:
      title: 'Base module - Response action related modules list'
      description: 'Module action related modules list response body'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'List of related records'
          required:
            - base
            - related
          properties:
            base:
              title: 'Base list'
              type: object
              additionalProperties:
                required:
                  - type
                  - label
                  - icon
                properties:
                  type: { description: Type, type: string, example: Summary }
                  label: { description: 'Translated label', type: string, example: Summary }
                  icon: { description: 'Icon class', type: string, example: 'fas fa-desktop' }
                type: object
            related:
              title: 'Base list'
              type: object
              additionalProperties:
                required:
                  - label
                  - relationId
                  - relatedModuleName
                  - icon
                  - actions
                  - viewType
                  - customView
                properties:
                  label: { description: 'Translated label', type: string, example: Documents }
                  relationId: { description: 'Relation ID', type: integer, example: 3 }
                  relatedModuleName: { description: 'Related module name', type: string, example: Documents }
                  icon: { description: 'Icon class', type: string, example: yfm-Documents }
                  actions: { description: Actions, type: array, items: { type: string }, example: [add, select] }
                  viewType: { description: 'View types', type: array, items: { type: string }, example: [RelatedTab, DetailBottom] }
                  customView: { description: 'Custom view', type: array, items: { type: string }, example: [relation, all] }
                type: object
          type: object
      type: object
    Users_Get_AccessActivityHistory_Response:
      title: 'Users module - History of access activity data'
      description: 'Get user history of access activity.'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'User data'
          type: object
          additionalProperties:
            title: 'Condition details'
            properties:
              time:
                description: 'Date time in user format'
                type: string
                example: '2021-06-01 11:57'
              status:
                description: 'Operation name'
                type: string
                example: 'Signed in'
              agent:
                description: 'User agent'
                type: string
                example: PostmanRuntime/7.28.0
              ip:
                description: 'IP address'
                type: string
                example: 127.0.0.1
            type: object
      type: object
    Users_Put_ChangePassword_Request:
      title: 'Users module - Users password change request body'
      required:
        - currentPassword
        - newPassword
      properties:
        currentPassword:
          title: 'Current password'
          type: string
        newPassword:
          title: 'New password'
          type: string
      type: object
    Users_Put_ChangePassword_Response:
      title: 'Users module - Users password change response body'
      description: 'Put method.'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'Password change status'
          type: boolean
          example: false
      type: object
    Header-Encrypted:
      title: 'Header - Encrypted'
      description: 'Is the content request is encrypted'
      type: integer
      default: 0
      enum:
        - 0
        - 1
    Conditions-Mix-For-Query-Generator:
      title: 'General - Mix conditions for query generator'
      description: 'Multiple or one condition for a query generator'
      type: object
      oneOf:
        -
          $ref: '#/components/schemas/Condition-For-Query-Generator'
        -
          $ref: '#/components/schemas/Conditions-For-Query-Generator'
    Condition-For-Query-Generator:
      title: 'General - Condition for query generator'
      description: 'One condition for query generator'
      required:
        - fieldName
        - value
        - operator
      properties:
        fieldName:
          description: 'Field name'
          type: string
          example: lastname
        value:
          description: 'Search value'
          type: string
          example: Kowalski
        operator:
          description: 'Field operator'
          type: string
          example: e
        group:
          description: 'Condition group if true is AND'
          type: boolean
          example: true
      type: object
    Conditions-For-Query-Generator:
      title: 'General - Conditions for query generator'
      description: 'Multiple conditions for query generator'
      type: object
      additionalProperties:
        description: 'Condition details'
        type: object
    Conditions-For-Native-Query:
      title: 'General - Conditions for native query'
      description: 'Conditions for native query, based on YII 2'
      type: object
      externalDocs:
        description: 'Database communication engine'
        url: 'https://yetiforce.com/en/knowledge-base/documentation/developer-documentation/item/new-db-communication-engine'
      example:
        column_name1: 'searched value 1'
        column_name2: 'searched value 2'
    Users_Login_RequestBody:
      title: 'Users module - Users login request body'
      description: 'JSON or form-data'
      required:
        - userName
        - password
      properties:
        userName:
          description: 'Webservice user name'
          type: string
        password:
          description: 'Webservice user password'
          type: string
        code:
          description: '2FA TOTP code (optional property), Pass code length = 6, Code period = 30'
          type: string
        params:
          description: 'Additional parameters sent by the user, extending the current settings, e.g. language'
          properties:
            language:
              description: 'Users language'
              type: string
              example: pl-PL
          type: object
      type: object
    Users_Login_ResponseBody:
      title: 'Users module - Users login response body'
      description: 'Users login response body'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'Content of responses from a given method'
          required:
            - token
            - name
            - lastLoginTime
            - lastLogoutTime
            - language
            - type
            - login_method
            - preferences
          properties:
            token:
              type: string
              maxLength: 40
              minLength: 40
            name:
              type: string
            lastLoginTime:
              type: string
              example: '2019-10-07 08:32:38'
            lastLogoutTime:
              type: string
              example: ''
            language:
              type: string
              example: pl-PL
            type:
              type: integer
            login_method:
              type: string
              enum:
                - PLL_PASSWORD
                - PLL_PASSWORD_2FA
              example: PLL_PASSWORD_2FA
            logged:
              type: boolean
            preferences:
              required:
                - hour_format
                - start_hour
                - end_hour
                - date_format
                - time_zone
                - currency_id
                - currency_grouping_pattern
                - currency_decimal_separator
                - currency_grouping_separator
                - currency_symbol_placement
                - no_of_currency_decimals
                - currency_name
                - currency_code
                - currency_symbol
                - conv_rate
              properties:
                hour_format:
                  type: string
                  example: '24'
                start_hour:
                  type: string
                  example: '08:00'
                end_hour:
                  type: string
                  example: '16:00'
                date_format:
                  type: string
                  example: yyyy-mm-dd
                time_zone:
                  type: string
                  example: Europe/Warsaw
                currency_id:
                  type: integer
                  example: 1
                currency_grouping_pattern:
                  type: string
                  example: '123,456,789'
                currency_decimal_separator:
                  type: string
                  example: .
                currency_grouping_separator:
                  type: string
                  example: ' '
                currency_symbol_placement:
                  type: string
                  example: 1.0$
                no_of_currency_decimals:
                  type: integer
                  example: 2
                currency_name:
                  type: string
                  example: 'Poland, Zlotych'
                currency_code:
                  type: string
                  example: PLN
                currency_symbol:
                  type: string
                  example: zł
                conv_rate:
                  type: number
                  format: float
                  example: 1
              type: object
            authy_methods:
              type: string
              enum:
                - ''
                - PLL_AUTHY_TOTP
              example: PLL_AUTHY_TOTP
            2faObligatory:
              type: boolean
              example: true
          type: object
      type: object
    Exception:
      title: 'General - Error exception'
      description: 'Post method.'
      required:
        - status
        - error
      properties:
        status:
          title: '0 - error'
          type: integer
          enum:
            - 0
          example: 0
        error:
          description: 'Error  details'
          required:
            - message
            - code
          properties:
            message:
              description: 'To show more details turn on: config\Debug.php apiShowExceptionMessages = true'
              type: string
              example: 'Invalid method'
            code:
              type: integer
              example: 405
            file:
              description: 'default disabled to enable set: config\Debug.php apiShowExceptionBacktrace = true'
              type: string
              example: api\webservice\RestApi\BaseAction\Files.php
            line:
              description: 'default disabled to enable set: config\Debug.php apiShowExceptionBacktrace = true'
              type: integer
              example: 101
            previous:
              description: 'Previous exception'
              type: object
            backtrace:
              description: 'default disabled to enable set: config\Debug.php apiShowExceptionBacktrace = true'
              type: string
              example: '#0 api\webservice\RestApi\BaseAction\Files.php (101) ....'
          type: object
      type: object
    UsersLogoutResponseBody:
      title: 'Users module - Users logout response body'
      description: 'JSON data'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'Content of responses from a given method'
          type: boolean
      type: object
    Users_Get_Record_Response:
      title: 'Users module - Response body for user'
      description: 'Get user detail.'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'User data'
          properties:
            name:
              description: 'User label'
              type: string
              example: 'System Admin'
            id:
              description: 'User Id'
              type: integer
              example: 1
            fields:
              title: 'System field names and field labels'
              type: object
              example:
                field_name_1: 'Field label 1'
                field_name_2: 'Field label 2'
              additionalProperties:
                description: 'Field label'
                type: string
            data:
              description: 'User data'
              type: object
            privileges:
              description: 'Parameters determining checking of editing rights and moving to the trash'
              properties:
                isEditable:
                  description: 'Check if user is editable'
                  type: boolean
                  example: true
                moveToTrash:
                  description: 'Permission to delete'
                  type: boolean
                  example: false
              type: object
            rawData:
              description: 'Raw user data'
              type: object
          type: object
      type: object
    Users_RecordsList_ResponseBody:
      title: 'Users module - Response action users list'
      description: 'Module action record list response body'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'List of records'
          properties:
            headers:
              description: 'Column names'
              type: object
              additionalProperties: {  }
            records:
              description: 'Records display details'
              type: object
              additionalProperties:
                $ref: '#/components/schemas/Record_Display_Details'
            rawData:
              description: 'Records raw details'
              type: object
              additionalProperties:
                $ref: '#/components/schemas/Record_Raw_Details'
            count:
              type: integer
              example: 54
            isMorePages:
              type: boolean
              example: true
          type: object
      type: object
    Users_Post_ResetPassword_Request:
      title: 'Users module - Users password reset request body'
      required:
        - userName
      properties:
        userName:
          description: 'User name / email'
          type: string
      type: object
    Users_Post_ResetPassword_Response:
      title: 'Users module - Users password reset response body'
      description: 'Post method.'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Content of responses from a given method'
          properties:
            expirationDate:
              type: string
              example: '2019-10-07 08:32:38'
            mailerStatus:
              type: boolean
              example: true
          type: object
      type: object
    Users_Put_ResetPassword_Request:
      title: 'Users module - Users password reset request body'
      required:
        - token
        - password
      properties:
        token:
          description: 'A one-time password reset token'
          type: string
        password:
          description: 'New password'
          type: string
      type: object
    Users_Put_ResetPassword_Response:
      title: 'Users module - Users password reset response body'
      description: 'Put method.'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Password reset status'
          type: boolean
          example: false
      type: object
    Users_Get_TwoFactorAuth_Response:
      title: 'Users module - Authentication secret details'
      description: 'Get two factor authentication details.'
      required:
        - status
        - result
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          title: 'Content of responses from a given method'
          required:
            - authMethods
            - secretKey
          properties:
            authMethods:
              type: string
              example: TOTP
            secretKey:
              type: string
              example: LJUJWCOEGUKP6WS2
          type: object
      type: object
    Users_post_TwoFactorAuth_Response:
      title: 'Users module - Activate two factor authentication'
      description: 'Activate two factor authentication response body'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success , 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'Content of responses from a given method'
          type: string
      type: object
    Users_Delete_TwoFactorAuth_Response:
      title: 'Users module - Disable two factor authentication'
      description: 'Disable two factor authentication response'
      properties:
        status:
          description: 'A numeric value of 0 or 1 that indicates whether the communication is valid. 1 - success, 0 - error'
          type: integer
          enum:
            - 0
            - 1
        result:
          description: 'Status of successful'
          type: boolean
      type: object
  securitySchemes:
    basicAuth:
      type: http
      description: 'Basic Authentication header'
      scheme: basic
    ApiKeyAuth:
      type: apiKey
      description: 'Webservice api key header'
      name: X-API-KEY
      in: header
    token:
      type: apiKey
      description: 'Webservice api token by user header'
      name: X-TOKEN
      in: header
  links:
    GetRecordById:
      operationId: getRecord
      parameters:
        recordId: '$response.body#/result/id'
      description: 'The `id` value returned in the response can be used as the `recordId` parameter in `GET /webservice/{moduleName}/Record/{recordId}`.'
tags:
  -
    name: BaseModule
    description: 'Access to record methods'
  -
    name: BaseAction
    description: 'Access to user methods'
  -
    name: Products
    description: 'Products methods'
  -
    name: Users
    description: 'Access to user methods'
