openapi: 3.1.0
info:
  title: Document Management API
  description: Document Management API documentation
  termsOfService: https://a4b.vn/terms-of-service/
  contact:
    name: A4B
    url: https://a4b.vn/contact-us/
    email: contact@a4b.vn
  license:
    name: © 2023 A4B
    url: https://a4b.vn/license/
  version: 1.0.0
servers:
- url: https://{{api_endpoint}}/v1
  description: API Endpoint
tags:
- name: Document API
  description: APIs for working with documents
- name: Object API
  description: APIs for working with objects
- name: Object type API
  description: APIs for working with object types
- name: Document type API
  description: APIs for working with document types
paths:
  /api/object/update:
    post:
      tags:
      - Object API
      summary: Update a object
      operationId: update_8
      parameters:
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateObjCmd'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataVoid'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: POST
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/object/update"
  /api/object/updateRecordStatus:
    post:
      tags:
      - Object API
      summary: Update a object's record status
      operationId: update_9
      parameters:
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateRecordStatusObjCmd'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataVoid'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: POST
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/object/updateRecordStatus"
  /api/object/create:
    post:
      tags:
      - Object API
      summary: Create a object
      operationId: create_4
      parameters:
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateObjCmd'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataString'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: POST
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/object/create"
  /api/doc/upload:
    post:
      tags:
      - Document API
      summary: "Upload a document (metadata & file content), support both multipart/form-data\
        \ and base64 file content"
      operationId: upload_3
      parameters:
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                cmd: {}
              required:
              - file
          application/json:
            schema:
              $ref: '#/components/schemas/UploadBase64DocCmd'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataString'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: POST
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/doc/upload"
  /api/objectType/getByAggId:
    get:
      tags:
      - Object type API
      summary: Get a object type by its aggId
      operationId: getByAggId_5
      parameters:
      - name: aggId
        in: query
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataDmtmObjTypeDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.querystring.aggId: method.request.querystring.aggId
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/objectType/getByAggId"
  /api/objectType/getAll:
    get:
      tags:
      - Object type API
      summary: Get all object types
      operationId: getAll_2
      parameters:
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataListDmtmObjTypeDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/objectType/getAll"
  /api/object/getByCode:
    get:
      tags:
      - Object API
      summary: Get a object by its code and type code
      operationId: getByCode_1
      parameters:
      - name: objCode
        in: query
        required: true
        schema:
          type: string
      - name: objTypeCode
        in: query
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataDmtbObjDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.querystring.objCode: method.request.querystring.objCode
          integration.request.querystring.objTypeCode: method.request.querystring.objTypeCode
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/object/getByCode"
  /api/object/getByAggId:
    get:
      tags:
      - Object API
      summary: Get a object by its aggId
      operationId: getByAggId_6
      parameters:
      - name: aggId
        in: query
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataDmtbObjDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.querystring.aggId: method.request.querystring.aggId
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/object/getByAggId"
  /api/docType/getByAggId:
    get:
      tags:
      - Document type API
      summary: Get a document type by its aggId
      operationId: getByAggId_7
      parameters:
      - name: aggId
        in: query
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataDmtmDocTypeDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.querystring.aggId: method.request.querystring.aggId
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/docType/getByAggId"
  /api/docType/getAll:
    get:
      tags:
      - Document type API
      summary: Get all document types
      operationId: getAll_3
      parameters:
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataListDmtmDocTypeDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/docType/getAll"
  /api/doc/getInfo:
    get:
      tags:
      - Document API
      summary: Get a document information by its identifier
      operationId: resource_2
      parameters:
      - name: identifier
        in: query
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataDocDto'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.querystring.identifier: method.request.querystring.identifier
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/doc/getInfo"
  /api/doc/download:
    get:
      tags:
      - Document API
      summary: Download a document by its identifier
      operationId: download_2
      parameters:
      - name: identifier
        in: query
        required: true
        schema:
          type: string
      - name: inline
        in: query
        required: false
        schema:
          type: boolean
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: string
                format: binary
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.querystring.inline: method.request.querystring.inline
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.querystring.identifier: method.request.querystring.identifier
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: GET
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/doc/download"
  /api/doc/delete:
    delete:
      tags:
      - Document API
      operationId: delete_2
      parameters:
      - name: identifier
        in: query
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        required: false
      - name: Content-Type
        in: header
        required: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseDataString'
        "400":
          description: "400"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "401":
          description: "401"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ValidationProblem'
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "403":
          description: "403"
          content:
            application/problem+json:
              schema:
                example:
                  validation:
                    messages: []
                    validationResults:
                      prop02: constraint_violation_for_prop02
                      prop01: constraint_violation_for_prop01
                  type: https://openapi.a4b.vn/docs/errors/constraint-violation
                  title: validation_exception
                  status: 400
        "500":
          description: "500"
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ThrowableProblem'
                example:
                  type: https://openapi.a4b.vn/docs/errors/problem-with-message
                  title: Internal Server Error
                  status: 500
                  detail: See message logs
      x-amazon-apigateway-integration:
        passthroughBehavior: when_no_match
        requestParameters:
          integration.request.header.Authorization: method.request.header.Authorization
          integration.request.querystring.identifier: method.request.querystring.identifier
          integration.request.header.Content-Type: method.request.header.Content-Type
        responses:
          "200":
            statusCode: "200"
          "400":
            statusCode: "400"
          "401":
            statusCode: "401"
          "500":
            statusCode: "500"
          "403":
            statusCode: "403"
        httpMethod: DELETE
        type: http
        uri: "https://${stageVariables.url}${stageVariables.mcrdms_path}/api/doc/delete"
components:
  schemas:
    AgGridGetRowsRequest:
      properties:
        startRow:
          type: integer
          format: int32
        endRow:
          type: integer
          format: int32
        rowGroupCols:
          type: array
          items:
            $ref: '#/components/schemas/ColumnVO'
        valueCols:
          type: array
          items:
            $ref: '#/components/schemas/ColumnVO'
        pivotCols:
          type: array
          items:
            $ref: '#/components/schemas/ColumnVO'
        pivotMode:
          type: boolean
        groupKeys:
          type: array
          items:
            type: string
        filterModel:
          type: object
          additionalProperties:
            oneOf:
            - $ref: '#/components/schemas/DateColumnFilter'
            - $ref: '#/components/schemas/NumberColumnFilter'
            - $ref: '#/components/schemas/SetColumnFilter'
            - $ref: '#/components/schemas/TextColumnFilter'
        sortModel:
          type: array
          items:
            $ref: '#/components/schemas/SortModel'
    ColumnFilter:
      discriminator:
        propertyName: filterType
      properties:
        includeNull:
          type: boolean
        filterType:
          type: string
      required:
      - filterType
    ColumnVO:
      properties:
        id:
          type: string
        displayName:
          type: string
        field:
          type: string
        aggFunc:
          type: string
        dataType:
          type: string
    DateColumnFilter:
      allOf:
      - $ref: '#/components/schemas/ColumnFilter'
      - type: object
        properties:
          filterType:
            type: string
          type:
            type: string
          dateFrom:
            type: string
            format: date-time
          dateTo:
            type: string
            format: date-time
    NumberColumnFilter:
      allOf:
      - $ref: '#/components/schemas/ColumnFilter'
      - type: object
        properties:
          filterType:
            type: string
          type:
            type: string
          filter:
            type: integer
            format: int32
          filterTo:
            type: integer
            format: int32
    SetColumnFilter:
      allOf:
      - $ref: '#/components/schemas/ColumnFilter'
      - type: object
        properties:
          type:
            type: string
          values:
            type: array
            items:
              type: string
    SortModel:
      properties:
        colId:
          type: string
        sort:
          type: string
    TextColumnFilter:
      allOf:
      - $ref: '#/components/schemas/ColumnFilter'
      - type: object
        properties:
          filterType:
            type: string
          type:
            type: string
          filter:
            type: string
    AgGridGetRowsResponseObject:
      properties:
        data:
          type: array
          items:
            type: object
        lastRow:
          type: integer
          format: int32
        secondaryColumnFields:
          type: array
          items:
            type: string
        secondaryColumns:
          type: array
          items:
            type: string
          writeOnly: true
    ResponseDataAgGridGetRowsResponseObject:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/AgGridGetRowsResponseObject'
      xml:
        name: ResponseData
    ResponseDataLong:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: integer
          format: int64
      xml:
        name: ResponseData
    UpdateObjTypeCmd:
      properties:
        aggId:
          type: string
        objTypeName:
          type: string
        description:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        jsonSchema:
          type: object
          additionalProperties:
            type: object
        storeConfigId:
          type: integer
          format: int64
      required:
      - aggId
      - description
      - objTypeName
    ResponseDataVoid:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: object
      xml:
        name: ResponseData
    UpdateRecordStatusObjTypeCmd:
      properties:
        aggId:
          type: string
        recordStatus:
          type: string
      required:
      - aggId
      - recordStatus
    CreateObjTypeCmd:
      properties:
        objTypeCode:
          type: string
        objTypeName:
          type: string
        description:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        jsonSchema:
          type: object
          additionalProperties:
            type: object
        storeConfigId:
          type: integer
          format: int64
      required:
      - description
      - objTypeCode
      - objTypeName
    UpdateObjCmd:
      properties:
        aggId:
          type: string
        objTypeId:
          type: integer
          format: int64
        objTypeCode:
          type: string
        companyCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        extProps:
          type: object
          additionalProperties:
            type: object
      required:
      - aggId
    UpdateRecordStatusObjCmd:
      properties:
        aggId:
          type: string
        recordStatus:
          type: string
      required:
      - aggId
      - recordStatus
    CreateObjCmd:
      properties:
        code:
          type: string
          pattern: "(?!(^xn--|.+-s3alias$))^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]$"
        objTypeId:
          type: integer
          format: int64
        objTypeCode:
          type: string
        companyCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        extProps:
          type: object
          additionalProperties:
            type: object
      required:
      - code
    ResponseDataString:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: string
      xml:
        name: ResponseData
    UpdateDocTypeCmd:
      properties:
        aggId:
          type: string
        docTypeName:
          type: string
        description:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        jsonSchema:
          type: object
          additionalProperties:
            type: object
        retentionPlanId:
          type: integer
          format: int64
      required:
      - aggId
      - description
      - docTypeName
    UpdateDocTypeRecordStatusCmd:
      properties:
        aggId:
          type: string
        recordStatus:
          type: string
      required:
      - aggId
      - recordStatus
    CreateDocTypeCmd:
      properties:
        docTypeCode:
          type: string
        docTypeName:
          type: string
        description:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        jsonSchema:
          type: object
          additionalProperties:
            type: object
        retentionPlanId:
          type: integer
          format: int64
      required:
      - description
      - docTypeName
    StoreDocCmd:
      properties:
        fileName:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        objCode:
          type: string
        objTypeCode:
          type: string
        docTypeCode:
          type: string
        objId:
          type: string
        objTypeId:
          type: integer
          format: int64
        docTypeId:
          type: integer
          format: int64
        companyCode:
          type: string
        temporary:
          type: boolean
      required:
      - fileName
    UploadBase64DocCmd:
      properties:
        cmd:
          $ref: '#/components/schemas/StoreDocCmd'
        base64Content:
          type: string
    AgGridGetRowsResponseDocDto:
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/DocDto'
        lastRow:
          type: integer
          format: int32
        secondaryColumnFields:
          type: array
          items:
            type: string
        secondaryColumns:
          type: array
          items:
            type: string
          writeOnly: true
    DmtbObjDto:
      properties:
        companyCode:
          type: string
        buId:
          type: integer
          format: int64
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        code:
          type: string
        objTypeId:
          type: integer
          format: int64
        tenantCode:
          type: string
        dmtmObjType:
          $ref: '#/components/schemas/DmtmObjTypeDto'
        props:
          type: object
          additionalProperties:
            type: object
        modNo:
          type: integer
          format: int32
        updateId:
          type: string
        recordStatus:
          type: string
        checkerDate:
          type: string
          format: date-time
        checkerId:
          type: string
        id:
          type: integer
          format: int64
        assignee:
          type: string
        aggId:
          type: string
        extProps:
          type: object
          additionalProperties:
            type: object
        makerId:
          type: string
    DmtmObjTypeDto:
      properties:
        storeConfigId:
          type: integer
          format: int64
        objTypeCode:
          type: string
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        description:
          type: string
        tenantCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        modNo:
          type: integer
          format: int32
        updateId:
          type: string
        recordStatus:
          type: string
        jsonSchema:
          type: object
          additionalProperties:
            type: object
        checkerDate:
          type: string
          format: date-time
        objTypeName:
          type: string
        checkerId:
          type: string
        id:
          type: integer
          format: int64
        aggId:
          type: string
        ftsValue:
          type: string
        dmtmStoreConfig:
          $ref: '#/components/schemas/DmtmStoreConfigDto'
        makerId:
          type: string
    DmtmStoreConfigDto:
      properties:
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        description:
          type: string
        tenantCode:
          type: string
        modNo:
          type: integer
          format: int32
        updateId:
          type: string
        recordStatus:
          type: string
        checkerDate:
          type: string
          format: date-time
        checkerId:
          type: string
        storeName:
          type: string
        definition:
          type: string
        id:
          type: integer
          format: int64
        aggId:
          type: string
        ftsValue:
          type: string
        storeCode:
          type: string
        makerId:
          type: string
    DocDto:
      properties:
        fileName:
          type: string
        mimeType:
          type: string
        size:
          type: number
        id:
          type: integer
          format: int64
        refCode:
          type: string
        storeCode:
          type: string
        makerId:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        updateId:
          type: string
        objId:
          type: string
        obj:
          $ref: '#/components/schemas/DmtbObjDto'
        docTypeId:
          type: integer
          format: int64
        tenantCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        extProps:
          type: object
          additionalProperties:
            type: object
        docType:
          $ref: '#/components/schemas/DocTypeDto'
        recordStatus:
          type: string
        authStat:
          type: string
        modNo:
          type: integer
          format: int32
        permission:
          $ref: '#/components/schemas/DocPermissionDto'
    DocPermissionDto:
      properties:
        delete:
          type: boolean
        download:
          type: boolean
        view:
          type: boolean
    DocTypeDto:
      properties:
        id:
          type: integer
          format: int64
        docTypeCode:
          type: string
        docTypeName:
          type: string
        description:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        jsonSchema:
          type: string
        retentionPlanId:
          type: integer
          format: int64
        tenantCode:
          type: string
    ResponseDataAgGridGetRowsResponseDocDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/AgGridGetRowsResponseDocDto'
      xml:
        name: ResponseData
    ResponseDataListDocDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: array
          items:
            $ref: '#/components/schemas/DocDto'
      xml:
        name: ResponseData
    GetDocsInfoCmd:
      properties:
        refCodes:
          type: array
          items:
            type: string
          maxItems: 100
          minItems: 0
        includePreviewDoc:
          type: boolean
      required:
      - refCodes
    DocInfoRespDto:
      properties:
        refCode:
          type: string
        fileName:
          type: string
        filePath:
          type: string
        storeCode:
          type: string
        mimeType:
          type: string
        previewDoc:
          $ref: '#/components/schemas/PreviewDocInfoRespDto'
    GetDocsInfoRespDto:
      properties:
        docs:
          type: array
          items:
            $ref: '#/components/schemas/DocInfoRespDto'
    PreviewDocInfoRespDto:
      properties:
        fileName:
          type: string
        filePath:
          type: string
        storeCode:
          type: string
        mimeType:
          type: string
    ResponseDataGetDocsInfoRespDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/GetDocsInfoRespDto'
      xml:
        name: ResponseData
    ConfirmStoreDocsCmd:
      properties:
        refCodes:
          type: array
          items:
            type: string
          maxItems: 100
          minItems: 0
      required:
      - refCodes
    ConfirmStoreDocsResp:
      properties:
        cmdStatus:
          type: string
          enum:
          - DONE
          - IN_PROGRESS
        docs:
          type: array
          items:
            $ref: '#/components/schemas/DocDto'
    ResponseDataConfirmStoreDocsResp:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/ConfirmStoreDocsResp'
      xml:
        name: ResponseData
    UpdateCompanyCmd:
      properties:
        aggId:
          type: string
        companyName:
          type: string
        description:
          type: string
      required:
      - aggId
      - companyName
    UpdateRecordStatusCompanyCmd:
      properties:
        aggId:
          type: string
        recordStatus:
          type: string
      required:
      - aggId
      - recordStatus
    CreateCompanyCmd:
      properties:
        companyCode:
          type: string
        companyName:
          type: string
        description:
          type: string
      required:
      - companyCode
      - companyName
    StoreResourceCmd:
      properties:
        fileName:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
      required:
      - fileName
    UploadBase64ResourceCmd:
      properties:
        cmd:
          $ref: '#/components/schemas/StoreResourceCmd'
        base64Content:
          type: string
    ResourceDto:
      properties:
        fileName:
          type: string
        mimeType:
          type: string
        size:
          type: number
          format: double
        id:
          type: integer
          format: int64
        refCode:
          type: string
        storeCode:
          type: string
        makerDate:
          type: string
          format: date-time
        makerId:
          type: string
        remoteRef:
          type: string
        remoteInfo:
          type: string
        remotePersisted:
          type: boolean
        remotePersistTime:
          type: string
          format: date-time
        remotePersistStatus:
          type: string
        category:
          type: string
        subCategory:
          type: string
        tenantCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        extProps:
          type: object
          additionalProperties:
            type: object
    ResponseDataListResourceDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: array
          items:
            $ref: '#/components/schemas/ResourceDto'
      xml:
        name: ResponseData
    CreateObjAthenaCmd:
      properties:
        code:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        extProps:
          type: object
          additionalProperties:
            type: object
        companyCode:
          type: string
        tenantCode:
          type: string
      required:
      - code
    StoreCompositeCmd:
      properties:
        fileName:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        children:
          type: array
          items:
            type: string
      required:
      - children
      - fileName
    UploadBase64CompositeCmd:
      properties:
        cmd:
          $ref: '#/components/schemas/StoreCompositeCmd'
        base64Content:
          type: string
    GetCompositesInfoCmd:
      properties:
        refCodes:
          type: array
          items:
            type: string
          maxItems: 100
          minItems: 0
      required:
      - refCodes
    CompInfoRespDto:
      properties:
        refCode:
          type: string
        fileName:
          type: string
        filePath:
          type: string
        storeCode:
          type: string
        mimeType:
          type: string
        children:
          type: array
          items:
            $ref: '#/components/schemas/DocDto'
    GetCompsInfoRespDto:
      properties:
        docs:
          type: array
          items:
            $ref: '#/components/schemas/CompInfoRespDto'
    ResponseDataGetCompsInfoRespDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/GetCompsInfoRespDto'
      xml:
        name: ResponseData
    FileMetadata:
      properties:
        size:
          type: number
          format: double
        mimetype:
          type: string
    RecordCompositeCmd:
      properties:
        filePath:
          type: string
        fileName:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        children:
          type: array
          items:
            type: string
        tenantCode:
          type: string
        onBehalfOfUser:
          type: string
        metaData:
          $ref: '#/components/schemas/FileMetadata'
      required:
      - children
      - fileName
      - filePath
      - onBehalfOfUser
      - tenantCode
    AwsS3StorageConfig:
      allOf:
      - $ref: '#/components/schemas/StorageConfigDef'
      - type: object
        properties:
          cachingPath:
            type: string
          accessKey:
            type: string
          secretKey:
            type: string
          region:
            type: string
          bucketName:
            type: string
          cacheTimeInSeconds:
            type: integer
            format: int64
          endpoint:
            type: string
    DelegatedStorageConfig:
      allOf:
      - $ref: '#/components/schemas/StorageConfigDef'
      - type: object
        properties:
          ref:
            type: string
    LocalStorageConfig:
      allOf:
      - $ref: '#/components/schemas/StorageConfigDef'
      - type: object
        properties:
          storePath:
            type: string
          temporaryStorePath:
            type: string
    ResponseDataStoreConfigDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/StoreConfigDto'
      xml:
        name: ResponseData
    StorageConfigDef:
      discriminator:
        propertyName: type
      properties:
        type:
          type: string
        useRootPath:
          type: boolean
        permission:
          $ref: '#/components/schemas/StoragePermissionDto'
    StoragePermissionDto:
      properties:
        upload:
          type: boolean
        delete:
          type: boolean
        download:
          type: boolean
    StoreConfigDto:
      properties:
        tenantCode:
          type: string
        storeName:
          type: string
        definition:
          oneOf:
          - $ref: '#/components/schemas/AwsS3StorageConfig'
          - $ref: '#/components/schemas/DelegatedStorageConfig'
          - $ref: '#/components/schemas/LocalStorageConfig'
        id:
          type: integer
          format: int64
        storeCode:
          type: string
    ResponseDataListStoreConfigDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: array
          items:
            $ref: '#/components/schemas/StoreConfigDto'
      xml:
        name: ResponseData
    EntitySchemaDto:
      properties:
        entityName:
          type: string
        properties:
          type: object
          additionalProperties:
            type: object
    ResponseDataEntitySchemaDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/EntitySchemaDto'
      xml:
        name: ResponseData
    ResponseDataDmtmObjTypeDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/DmtmObjTypeDto'
      xml:
        name: ResponseData
    ResponseDataListDmtmObjTypeDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: array
          items:
            $ref: '#/components/schemas/DmtmObjTypeDto'
      xml:
        name: ResponseData
    ObjPermissionDto:
      properties:
        upload:
          type: boolean
    ObjWithPermissionDto:
      properties:
        companyCode:
          type: string
        buId:
          type: integer
          format: int64
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        code:
          type: string
        objTypeId:
          type: integer
          format: int64
        tenantCode:
          type: string
        dmtmObjType:
          $ref: '#/components/schemas/DmtmObjTypeDto'
        props:
          type: object
          additionalProperties:
            type: object
        modNo:
          type: integer
          format: int32
        updateId:
          type: string
        recordStatus:
          type: string
        checkerDate:
          type: string
          format: date-time
        checkerId:
          type: string
        id:
          type: integer
          format: int64
        assignee:
          type: string
        aggId:
          type: string
        extProps:
          type: object
          additionalProperties:
            type: object
        makerId:
          type: string
        permission:
          $ref: '#/components/schemas/ObjPermissionDto'
    ResponseDataListObjWithPermissionDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: array
          items:
            $ref: '#/components/schemas/ObjWithPermissionDto'
      xml:
        name: ResponseData
    ResponseDataDmtbObjDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/DmtbObjDto'
      xml:
        name: ResponseData
    DmtmDocTypeDto:
      properties:
        storeConfigId:
          type: integer
          format: int64
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        description:
          type: string
        tenantCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        modNo:
          type: integer
          format: int32
        docTypeName:
          type: string
        updateId:
          type: string
        recordStatus:
          type: string
        dmtmRetentionPlan:
          $ref: '#/components/schemas/DmtmRetentionPlanDto'
        jsonSchema:
          type: object
          additionalProperties:
            type: object
        checkerDate:
          type: string
          format: date-time
        docTypeCode:
          type: string
        checkerId:
          type: string
        id:
          type: integer
          format: int64
        aggId:
          type: string
        ftsValue:
          type: string
        dmtmStoreConfig:
          $ref: '#/components/schemas/DmtmStoreConfigDto'
        makerId:
          type: string
    DmtmRetentionPlanDto:
      properties:
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        planName:
          type: string
        description:
          type: string
        tenantCode:
          type: string
        planCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        modNo:
          type: integer
          format: int32
        updateId:
          type: string
        recordStatus:
          type: string
        checkerDate:
          type: string
          format: date-time
        dmtmDocTypes:
          type: array
          items:
            $ref: '#/components/schemas/DmtmDocTypeDto'
        checkerId:
          type: string
        id:
          type: integer
          format: int64
        aggId:
          type: string
        ftsValue:
          type: string
        makerId:
          type: string
    ResponseDataDmtmDocTypeDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/DmtmDocTypeDto'
      xml:
        name: ResponseData
    ResponseDataListDmtmDocTypeDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          type: array
          items:
            $ref: '#/components/schemas/DmtmDocTypeDto'
      xml:
        name: ResponseData
    ResponseDataDocDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/DocDto'
      xml:
        name: ResponseData
    DocsByDocTypeDto:
      properties:
        docType:
          $ref: '#/components/schemas/DmtmDocTypeDto'
        docs:
          type: array
          items:
            $ref: '#/components/schemas/DocDto'
    ObjWithGroupedDocsDto:
      properties:
        groupedDocs:
          type: array
          items:
            $ref: '#/components/schemas/DocsByDocTypeDto'
        permission:
          $ref: '#/components/schemas/ObjPermissionDto'
    ResponseDataObjWithGroupedDocsDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/ObjWithGroupedDocsDto'
      xml:
        name: ResponseData
    DmtmCompanyDto:
      properties:
        companyCode:
          type: string
        authStat:
          type: string
        makerDate:
          type: string
          format: date-time
        updateDate:
          type: string
          format: date-time
        companyName:
          type: string
        description:
          type: string
        tenantCode:
          type: string
        modNo:
          type: integer
          format: int32
        updateId:
          type: string
        recordStatus:
          type: string
        checkerDate:
          type: string
          format: date-time
        checkerId:
          type: string
        id:
          type: integer
          format: int64
        aggId:
          type: string
        ftsValue:
          type: object
        makerId:
          type: string
    ResponseDataDmtmCompanyDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/DmtmCompanyDto'
      xml:
        name: ResponseData
    DocActAggByBUDto:
      properties:
        month:
          type: string
        buId:
          type: integer
          format: int64
        buCode:
          type: string
        val:
          type: integer
          format: int64
    DocActAggByMonthGroupByBuDto:
      properties:
        buId:
          type: integer
          format: int64
        name:
          type: string
        total:
          type: array
          items:
            $ref: '#/components/schemas/DocActAggByBUDto'
    DocTotalActAggByActionDto:
      properties:
        key:
          type: string
        month:
          type: string
        action:
          type: string
        val:
          type: integer
          format: int64
    DocAggDataDto:
      properties:
        docNum:
          type: integer
          format: int64
        objNum:
          type: integer
          format: int64
    DetailItemDto:
      properties:
        buId:
          type: integer
          format: int64
        name:
          type: string
        series:
          type: array
          items:
            $ref: '#/components/schemas/DocActAggByDocTypeDto'
    DocActAggByDocTypeDto:
      properties:
        month:
          type: string
        buId:
          type: integer
          format: int64
        buCode:
          type: string
        docTypeId:
          type: integer
          format: int64
        docTypeName:
          type: string
        val:
          type: integer
          format: int64
    DocActAggByDocTypeGroupByBuDto:
      properties:
        total:
          type: array
          items:
            $ref: '#/components/schemas/TotalItemDto'
        bu:
          type: array
          items:
            $ref: '#/components/schemas/DetailItemDto'
    TotalItemDto:
      properties:
        buId:
          type: integer
          format: int64
        buName:
          type: string
        val:
          type: integer
          format: int64
    DetailItemDateRangeDto:
      properties:
        buId:
          type: integer
          format: int64
        name:
          type: string
        series:
          type: array
          items:
            $ref: '#/components/schemas/DocActAggByDocTypeDateRangeDto'
    DocActAggByDocTypeDateRangeDto:
      properties:
        tenantCode:
          type: string
        buId:
          type: integer
          format: int64
        docTypeId:
          type: integer
          format: int64
        docTypeName:
          type: string
        val:
          type: integer
          format: int64
    DocActAggByDocTypeGroupByBuDateRangeDto:
      properties:
        total:
          type: array
          items:
            $ref: '#/components/schemas/TotalItemDto'
        bu:
          type: array
          items:
            $ref: '#/components/schemas/DetailItemDateRangeDto'
    DocActAggByActionGroupByBuDto:
      properties:
        total:
          type: array
          items:
            $ref: '#/components/schemas/TotalItemDto'
        bu:
          type: array
          items:
            $ref: '#/components/schemas/DetailItemDto'
    DocActAggByActionGroupByBuDateRangeDto:
      properties:
        total:
          type: array
          items:
            $ref: '#/components/schemas/TotalItemDto'
        bu:
          type: array
          items:
            $ref: '#/components/schemas/DetailItemDateRangeDto'
    ResponseDataResourceDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/ResourceDto'
      xml:
        name: ResponseData
    CompositeDto:
      properties:
        fileName:
          type: string
        mimeType:
          type: string
        size:
          type: number
          format: double
        id:
          type: integer
          format: int64
        refCode:
          type: string
        storeCode:
          type: string
        makerDate:
          type: string
          format: date-time
        makerId:
          type: string
        remoteRef:
          type: string
        remoteInfo:
          type: string
        remotePersisted:
          type: boolean
        remotePersistTime:
          type: string
          format: date-time
        remotePersistStatus:
          type: string
        category:
          type: string
        subCategory:
          type: string
        tenantCode:
          type: string
        props:
          type: object
          additionalProperties:
            type: object
        extProps:
          type: object
          additionalProperties:
            type: object
        children:
          type: array
          items:
            type: string
    ResponseDataCompositeDto:
      properties:
        status:
          type: integer
          format: int32
        data:
          $ref: '#/components/schemas/CompositeDto'
      xml:
        name: ResponseData
    StatusType:
      properties:
        reasonPhrase:
          type: string
        statusCode:
          type: integer
          format: int32
    ThrowableProblem:
      properties:
        cause:
          $ref: '#/components/schemas/ThrowableProblem'
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              nativeMethod:
                type: boolean
              className:
                type: string
        message:
          type: string
        instance:
          type: string
          format: uri
        type:
          type: string
          format: uri
        parameters:
          type: object
          additionalProperties:
            type: object
        status:
          $ref: '#/components/schemas/StatusType'
        title:
          type: string
        detail:
          type: string
        suppressed:
          type: array
          items:
            type: object
            properties:
              cause:
                type: object
                properties:
                  stackTrace:
                    type: array
                    items:
                      type: object
                      properties:
                        classLoaderName:
                          type: string
                        moduleName:
                          type: string
                        moduleVersion:
                          type: string
                        methodName:
                          type: string
                        fileName:
                          type: string
                        lineNumber:
                          type: integer
                          format: int32
                        nativeMethod:
                          type: boolean
                        className:
                          type: string
                  message:
                    type: string
                  localizedMessage:
                    type: string
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    nativeMethod:
                      type: boolean
                    className:
                      type: string
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: string
    ValidationProblem:
      properties:
        cause:
          $ref: '#/components/schemas/ThrowableProblem'
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              nativeMethod:
                type: boolean
              className:
                type: string
        type:
          type: string
          format: uri
        title:
          type: string
        status:
          $ref: '#/components/schemas/StatusType'
        detail:
          type: string
        instance:
          type: string
          format: uri
        parameters:
          type: object
          additionalProperties:
            type: object
        validation:
          $ref: '#/components/schemas/ValidationResult'
        message:
          type: string
        suppressed:
          type: array
          items:
            type: object
            properties:
              cause:
                type: object
                properties:
                  stackTrace:
                    type: array
                    items:
                      type: object
                      properties:
                        classLoaderName:
                          type: string
                        moduleName:
                          type: string
                        moduleVersion:
                          type: string
                        methodName:
                          type: string
                        fileName:
                          type: string
                        lineNumber:
                          type: integer
                          format: int32
                        nativeMethod:
                          type: boolean
                        className:
                          type: string
                  message:
                    type: string
                  localizedMessage:
                    type: string
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    nativeMethod:
                      type: boolean
                    className:
                      type: string
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: string
    ValidationResult:
      properties:
        messages:
          type: array
          items:
            type: string
        validationResults:
          type: object
          additionalProperties:
            type: string
