openapi: 3.0.0
info:
  title: 'Psychometrist API'
  contact:
    email: support@psychometrist.ir
  version: 1.0.0
servers:
  -
    url: v1
paths:
  /me:
    get:
      tags:
        - Account
      summary: 'Get info'
      description: 'Returns account information'
      operationId: getInfo
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /plans:
    get:
      tags:
        - Account
      summary: 'Get active plans'
      description: 'Returns active plans'
      operationId: getPlans
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /token:
    post:
      tags:
        - Account
      summary: 'Generate API Token'
      description: 'Generate token by username and password, username could be email/mobile number'
      operationId: generateToken
      requestBody:
        description: 'List of required parameters'
        required: true
        content:
          application/json:
            schema:
              properties:
                username:
                  description: 'The username(email|mobile number) in string (clear text)'
                password:
                  description: 'The password for login in string(clear text)'
              type: object
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
  /credit:
    get:
      tags:
        - Financial
      summary: 'Get current credit'
      description: 'Returns the credit of current user'
      operationId: getCredit
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /downloadPdf:
    get:
      tags:
        - Assessments
      summary: 'Get the PDF for a specific test'
      description: 'Download pdf for a specific test by uuid'
      operationId: downloadPdf
      parameters:
        -
          name: uuid
          in: query
          description: "The UUID of the test result, it returned in test result calculation - find it in \n                    /result/calc endpoint response"
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /provinces:
    get:
      tags:
        - Locations
      summary: 'Get provinces list'
      description: 'Returns all provinces'
      operationId: getProvinces
      responses:
        '200':
          description: Done
      security:
        -
          bearerAuth: []
  '/provinces/{uuid}/cities':
    get:
      tags:
        - Locations
      summary: 'Get cities list'
      description: 'Returns all cities of a province'
      operationId: getProvinceCities
      parameters:
        -
          name: uuid
          in: path
          description: 'Province UUID'
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Done
        '404':
          description: 'Province not found'
      security:
        -
          bearerAuth: []
  /logistic/shipping-methods:
    get:
      tags:
        - Logistic
      summary: 'Get shipping methods list'
      description: 'Returns all shipping methods'
      operationId: getShippingMethods
      responses:
        '200':
          description: Done
      security:
        -
          bearerAuth: []
  /orders:
    get:
      tags:
        - Orders
      summary: 'Get orders list'
      description: 'Returns all orders'
      operationId: getOrders
      parameters:
        -
          name: filters
          in: query
          description: 'JSON array of filter objects [{"field":"created_at","value":{"from":"2026-01-22","to":"2026-01-23"}}]'
          required: false
          schema:
            type: string
        -
          name: page
          in: query
          description: 'Page number for pagination'
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
        -
          name: limit
          in: query
          description: 'Limit results per page'
          required: false
          schema:
            type: integer
            default: 10
        -
          name: type
          in: query
          description: 'Filter by item types (product, event, questionnaire, test, subscription)'
          required: false
          schema:
            type: array
            items:
              type: string
        -
          name: status
          in: query
          description: 'Filter by order status'
          required: false
          schema:
            type: array
            items:
              type: string
        -
          name: search
          in: query
          description: 'Search keyword'
          required: false
          schema:
            type: string
        -
          name: match_mode
          in: query
          description: 'Match modes for filters/search. Example: match_mode[search]=contains'
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: string
              enum:
                - contains
                - equals
                - not_equals
                - starts_with
                - ends_with
                - regex
                - greater_than
                - less_than
        -
          name: 'with[]'
          in: query
          description: 'Include additional fields in response'
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - payments
                - shipping
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
    post:
      tags:
        - Orders
      summary: 'Create an order'
      description: 'Create an order'
      operationId: createOrder
      requestBody:
        description: 'List of required or optional parameters'
        required: true
        content:
          application/json:
            schema:
              properties:
                items:
                  description: 'The order items array'
                  type: array
                  items: { properties: { price_uuid: { description: 'The product price UUID', type: string, format: uuid }, quantity: { description: 'The quantity of the product price in integer', type: integer } }, type: object }
                details:
                  description: 'Details is optional and can be used to store extra information about the order, json object with max 2 levels of nesting'
                  type: array
                  items: { type: object }
              type: object
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  '/orders/{uuid}':
    get:
      tags:
        - Orders
      summary: 'Get order'
      description: 'Returns a single order'
      operationId: getOrder
      parameters:
        -
          name: uuid
          in: path
          description: 'Order UUID'
          required: true
          schema:
            type: string
            format: uuid
        -
          name: 'with[]'
          in: query
          description: 'Include additional fields in response'
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - payments
                - shipping
      responses:
        '200':
          description: Done
        '404':
          description: 'Order not found'
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
    put:
      tags:
        - Orders
      summary: 'Update an order'
      description: 'Update an order'
      operationId: updateOrder
      parameters:
        -
          name: uuid
          in: path
          description: 'Order UUID'
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: 'List of optional parameters'
        required: true
        content:
          application/json:
            schema:
              properties:
                status:
                  description: 'The order status'
                  type: string
                  enum: [pending, confirmed, canceled, ready_to_send, sent, delivered]
                details:
                  description: 'Extra information about the order'
                  type: object
                shipping:
                  description: 'The shipping address information'
                  properties: { first_name: { type: string }, last_name: { type: string }, mobile: { type: string }, address: { type: string }, city_uuid: { type: string, format: uuid }, province_uuid: { type: string, format: uuid }, postal_code: { type: string } }
                  type: object
              type: object
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
        '404':
          description: 'Order not found'
      security:
        -
          bearerAuth: []
  /packages:
    get:
      tags:
        - Packages
      summary: 'Get active packages'
      description: 'Returns active packages'
      operationId: getPackages
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /payment/gates:
    get:
      tags:
        - Financial
      summary: 'Get payment gates'
      description: 'Get list of active payment gates'
      operationId: getPaymentGates
      responses:
        '200':
          description: Done
          content:
            application/json:
              schema:
                properties:
                  status: { type: boolean }
                  data: { type: array, items: { properties: { uuid: { type: string, format: uuid }, title: { type: string }, logo: { type: string }, type: { type: string } }, type: object } }
                type: object
      security:
        -
          bearerAuth: []
  /payment:
    post:
      tags:
        - Financial
      summary: 'Create a payment request'
      description: 'To create a payment request and redirect to payment gateway, first create an order then use orderId in this endpoint to create payment request'
      operationId: createPayment
      requestBody:
        description: 'List of required and optional parameters'
        required: true
        content:
          application/json:
            schema:
              properties:
                order_id:
                  description: 'The order ID in integer'
                callback:
                  description: 'The optional callback URL in string'
              type: object
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /products:
    get:
      tags:
        - Products
      summary: 'Get products list'
      description: 'Returns all products'
      operationId: getProducts
      parameters:
        -
          name: 'with[]'
          in: query
          description: 'Include additional fields in response'
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - prices
                - active_prices
                - summary
                - description
                - images
                - tags
        -
          name: search
          in: query
          description: 'Search keyword'
          required: false
          schema:
            type: string
        -
          name: match_mode
          in: query
          description: 'Match modes for filters/search. Example: match_mode[search]=contains'
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: string
              enum:
                - contains
                - equals
                - not_equals
                - starts_with
                - ends_with
                - regex
                - greater_than
                - less_than
        -
          name: filters
          in: query
          description: 'JSON array of filter objects [{"field":"status","value":["active"]}, {"field":"created_at","value":{"from":"2026-01-22","to":"2026-01-23"}}]'
          required: false
          schema:
            type: string
        -
          name: 'sort[by]'
          in: query
          description: 'Field to sort by (created_at, display_rank, title, slug)'
          required: false
          schema:
            type: string
        -
          name: 'sort[order]'
          in: query
          description: 'Sort order (asc, desc)'
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        -
          name: page
          in: query
          description: 'Page number for pagination'
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
        -
          name: limit
          in: query
          description: 'Limit results per page'
          required: false
          schema:
            type: integer
            default: 10
        -
          name: tags
          in: query
          description: 'Filter by one or more tags'
          required: false
          schema:
            type: array
            items:
              type: string
      responses:
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
    post:
      tags:
        - Products
      summary: 'Create product'
      description: 'Create a new product with prices and tags'
      operationId: createProduct
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                title:
                  description: 'Product title'
                  type: string
                title_en:
                  description: 'Product title in English'
                  type: string
                summary:
                  description: 'Product summary'
                  type: string
                description:
                  description: 'Product description'
                  type: string
                status:
                  description: 'Product status'
                  type: string
                  enum: [draft, active, inactive, out_of_stock]
                display_rank:
                  description: 'Display rank for sorting'
                  type: integer
                prices:
                  description: 'Product prices to create'
                  type: array
                  items: { type: object }
                tags:
                  description: 'Product tags (tag titles)'
                  type: array
                  items: { type: string }
              type: object
      responses:
        '201':
          description: 'Product created successfully'
        '400':
          description: 'Invalid input'
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  '/products/meets/{uuid}':
    get:
      tags:
        - Products
      summary: 'Get meet products list'
      description: 'Returns all meet products'
      operationId: getMeets
      parameters:
        -
          name: search
          in: query
          description: 'Search keyword'
          required: false
          schema:
            type: string
        -
          name: match_mode
          in: query
          description: 'Match modes for filters/search. Example: match_mode[search]=contains'
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: string
              enum:
                - contains
                - equals
                - not_equals
                - starts_with
                - ends_with
                - regex
                - greater_than
                - less_than
        -
          name: filters
          in: query
          description: 'JSON array of filter objects [{"field":"status","value":["active"]}, {"field":"created_at","value":{"from":"2026-01-22","to":"2026-01-23"}}]'
          required: false
          schema:
            type: string
        -
          name: 'sort[by]'
          in: query
          description: 'Field to sort by (created_at, display_rank, title, slug)'
          required: false
          schema:
            type: string
        -
          name: 'sort[order]'
          in: query
          description: 'Sort order (asc, desc)'
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
        -
          name: page
          in: query
          description: 'Page number for pagination'
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
        -
          name: limit
          in: query
          description: 'Limit results per page'
          required: false
          schema:
            type: integer
            default: 10
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  '/products/{uuid}':
    get:
      tags:
        - Products
      summary: 'Get product by UUID'
      description: 'Returns a single product by its UUID'
      operationId: getProductByUuid
      parameters:
        -
          name: uuid
          in: path
          description: 'Product UUID'
          required: true
          schema:
            type: string
            format: uuid
        -
          name: 'with[]'
          in: query
          description: 'Include additional fields in response'
          required: false
          schema:
            type: array
            items:
              type: string
              enum:
                - prices
                - active_prices
                - summary
                - description
                - images
      responses:
        '200':
          description: 'Product found'
        '404':
          description: 'Product not found'
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  '/products/{id}':
    put:
      tags:
        - Products
      summary: 'Update product'
      description: 'Update a product and its prices. If the product is public and not owned by the user, it will be cloned.'
      operationId: updateProduct
      parameters:
        -
          name: id
          in: path
          description: 'Product ID'
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                product:
                  description: 'Product attributes to update'
                  type: object
                prices:
                  description: 'Product prices to update or create'
                  type: array
                  items: { type: object }
              type: object
      responses:
        '200':
          description: 'Product updated successfully'
        '404':
          description: 'Product not found'
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /tests:
    get:
      tags:
        - Assessments
      summary: 'Get assessments list'
      description: 'Returns all the active assessments(tests)'
      operationId: getTests
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /tests/scales:
    get:
      tags:
        - Assessments
      summary: 'Get scales for a specific test'
      description: 'Returns all scales for a specific assessment'
      operationId: getTestScales
      parameters:
        -
          name: id
          in: query
          description: 'The testType or testId of a specific test'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /testPrices:
    get:
      tags:
        - Financial
      summary: 'Get prices for a specific test'
      description: 'Returns all prices for a specific assessment'
      operationId: getTestsPrices
      parameters:
        -
          name: id
          in: query
          description: 'The testType or testId of a specific test'
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /questions:
    get:
      tags:
        - Assessments
      summary: 'Get questions for a specific test'
      description: 'Returns all the questions for a specific assessment'
      operationId: getQuestions
      parameters:
        -
          name: id
          in: query
          description: 'The testType or testId of a specific test'
          required: true
          schema:
            type: string
        -
          name: qn
          in: query
          description: 'Returns specific question by passing question number'
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /result/calc:
    post:
      tags:
        - Assessments
      summary: 'Calculate result for a specific test'
      description: 'Returns result of a specific test'
      operationId: calculateResult
      requestBody:
        description: 'List of optional/required parameters'
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestResultRequest'
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /users:
    get:
      tags:
        - Users
      summary: 'Get users'
      description: 'Returns all users with optional filtering and sorting'
      operationId: getUsers
      parameters:
        -
          name: page
          in: query
          description: 'Page number for pagination'
          required: false
          schema:
            type: integer
            default: 0
        -
          name: limit
          in: query
          description: 'Number of items per page (max 1000)'
          required: false
          schema:
            type: integer
            default: 10
        -
          name: search
          in: query
          description: 'Search term for filtering by name, email, or mobile'
          required: false
          schema:
            type: string
        -
          name: filters
          in: query
          description: 'Array of filter objects. Example: [{"field":"roles","value":["User"]}, {"field":"first_name","value":"John"}, {"field":"created_at","value":{"from":"2026-01-22","to":"2026-01-23"}}]'
          required: false
          style: deepObject
          explode: true
          schema:
            type: array
            items:
              properties:
                field:
                  type: string
                  example: roles
                value:
                  type: mixed
                  example: [User]
              type: object
        -
          name: 'sort[by]'
          in: query
          description: 'Field to sort by (created_at, email, first_name, last_name, mobile, birthday, gender)'
          required: false
          schema:
            type: string
            default: created_at
        -
          name: 'sort[order]'
          in: query
          description: 'Sort order (asc or desc)'
          required: false
          schema:
            type: string
            default: desc
            enum:
              - asc
              - desc
        -
          name: match_mode
          in: query
          description: 'Match modes for filters/search. Example: match_mode[search]=contains or match_mode=starts_with'
          required: false
          style: deepObject
          explode: true
          schema:
            type: object
            additionalProperties:
              type: string
              enum:
                - contains
                - equals
                - not_equals
                - starts_with
                - ends_with
                - regex
                - greater_than
                - less_than
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
    post:
      tags:
        - Users
      summary: 'Create user'
      description: 'Create a new sub-user (child) for the partner'
      operationId: createUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              description: 'At least one of email or mobile must be provided'
              required:
                - first_name
                - last_name
                - gender
                - birthdate
              properties:
                national_code:
                  description: 'Optional Iranian national code'
                  type: string
                  example: '0123456789'
                first_name:
                  type: string
                  example: John
                last_name:
                  type: string
                  example: Doe
                gender:
                  type: string
                  enum: [male, female]
                  example: male
                birthdate:
                  description: 'Birthdate in Y-m-d format'
                  type: string
                  format: date
                  example: '1990-01-01'
                mobile:
                  description: 'Mobile number (required if email is not provided)'
                  type: string
                  example: '9123456789'
                country_code:
                  description: 'Country code for mobile'
                  type: string
                  example: '+98'
                email:
                  description: 'Email address (required if mobile is not provided)'
                  type: string
                  format: email
                  example: john.doe@example.com
                roles:
                  description: 'Optional roles (restricted by permissions)'
                  type: array
                  items: { type: string }
                settings:
                  properties: { ai: { properties: { api_key: { type: string }, model: { type: string }, enable_pdf: { type: boolean } }, type: object }, cover_info_css: { type: string }, pay_for_my_users: { type: boolean }, activate_api_test_mode: { type: boolean }, manual_pay_for_my_users: { type: boolean }, only_accept_phone_number: { type: boolean }, used_parent_credit_count: { type: boolean }, only_accept_persian_chars: { type: boolean }, dont_display_pdf_first_page: { type: boolean }, send_notification_to_parent: { type: boolean }, dont_show_prices_to_sub_users: { type: boolean }, display_detail_pdf_every_pages: { type: boolean }, dont_display_title_in_first_page: { type: boolean }, dont_show_interpret_to_sub_users: { type: boolean }, first_availability: { type: integer }, date_format: { type: string }, timezone: { type: string } }
                  type: object
              type: object
      responses:
        '200':
          description: 'User created successfully'
          content:
            application/json:
              schema:
                properties:
                  success: { type: boolean }
                  return: { properties: { id: { type: integer } }, type: object }
                type: object
        '403':
          description: Forbidden
        '422':
          description: 'Validation failed'
      security:
        -
          bearerAuth: []
  '/users/{uuid}':
    get:
      tags:
        - Users
      summary: 'Get user by UUID'
      description: 'Returns a single user by UUID'
      operationId: getUserByUuid
      parameters:
        -
          name: uuid
          in: path
          description: 'User UUID'
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
    put:
      tags:
        - Users
      summary: 'Update user information'
      description: 'Update a userInfo'
      operationId: updateUser
      requestBody:
        description: 'List of required parameters'
        required: true
        content:
          application/json:
            schema:
              properties:
                first_name:
                  description: 'The first name in string, e.g., John'
                last_name:
                  description: 'The last name in string, e.g., Smith'
                email:
                  description: 'The email in string, e.g., user@example.com'
                mobile:
                  description: 'The mobile number in string, e.g., 09121234567'
                gender:
                  description: 'The gender in string, e.g., male or female'
                birthdate:
                  description: 'The birthdate in string, e.g., 1990-01-01'
                country_code:
                  description: 'The country code in string, e.g., +98'
                national_code:
                  description: 'The national code is optional in string'
                avatar:
                  description: 'The avatar is optional and in string (base64 encoded image data)'
                roles:
                  description: 'Optional roles (restricted by permissions)'
                  type: array
                  items: { type: string }
                settings:
                  properties: { ai: { properties: { api_key: { type: string }, model: { type: string }, enable_pdf: { type: boolean } }, type: object }, cover_info_css: { type: string }, pay_for_my_users: { type: boolean }, activate_api_test_mode: { type: boolean }, manual_pay_for_my_users: { type: boolean }, only_accept_phone_number: { type: boolean }, used_parent_credit_count: { type: boolean }, only_accept_persian_chars: { type: boolean }, dont_display_pdf_first_page: { type: boolean }, send_notification_to_parent: { type: boolean }, dont_show_prices_to_sub_users: { type: boolean }, display_detail_pdf_every_pages: { type: boolean }, dont_display_title_in_first_page: { type: boolean }, dont_show_interpret_to_sub_users: { type: boolean }, first_availability: { type: integer }, date_format: { type: string }, timezone: { type: string } }
                  type: object
              type: object
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /users/trappists:
    get:
      tags:
        - Users
      summary: 'Get trappist users'
      description: 'Returns all trappist users'
      operationId: getTrappistUsers
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
      security:
        -
          bearerAuth: []
  /users/change-password:
    post:
      tags:
        - Users
      summary: 'Change password'
      description: 'Change user password using OTP or old password'
      operationId: changePassword
      requestBody:
        description: 'List of required parameters'
        required: true
        content:
          application/json:
            schema:
              properties:
                code:
                  description: 'The OTP code (if old_password is not provided)'
                old_password:
                  description: 'The old password (if code is not provided)'
                password:
                  description: 'The new password'
                password_confirmation:
                  description: 'The new password confirmation'
              type: object
      responses:
        '200':
          description: Done
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
        '422':
          description: 'Unprocessable Entity'
      security:
        -
          bearerAuth: []
components:
  schemas:
    BeckBai:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:0, 2:1, 3:0, 4:3, 5:2, 6:2, 7:2, 8:1, 9:1, 10:3, 11:3, 12:1, 13:1, 14:1, 15:2, 16:2, 17:2, 18:1, 19:0, 20:1, 21:0}'
      type: object
    BeckBdi:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:2, 2:2, 3:2, 4:2, 5:2, 6:4, 7:3, 8:2, 9:1, 10:2, 11:2, 12:2, 13:3, 14:3, 15:3, 16:3, 17:1, 18:1, 19:1, 20:1, 21:2}"'
      type: object
    Cattell16Pf:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:0, 2:0, 3:1, 4:0, 5:0, 6:0, 7:2, 8:1, 9:2, 10:2, 11:2, 12:0, 13:2, 14:2, 15:2, 16:0, 17:1, 18:2, 19:2, 20:0, 21:2, 22:0, 23:0, 24:0, 25:1, 26:0, 27:2, 28:2, 29:2, 30:0, 31:0, 32:0, 33:1, 34:2, 35:0, 36:0, 37:0, 38:0, 39:2, 40:2, 41:0, 42:0, 43:0, 44:0, 45:2, 46:2, 47:2, 48:2, 49:1, 50:2, 51:0, 52:2, 53:1, 54:2, 55:2, 56:2, 57:0, 58:2, 59:0, 60:0, 61:1, 62:2, 63:0, 64:0, 65:0, 66:0, 67:1, 68:0, 69:0, 70:2, 71:0, 72:2, 73:1, 74:2, 75:2, 76:2, 77:2, 78:2, 79:0, 80:2, 81:0, 82:0, 83:2, 84:0, 85:2, 86:0, 87:0, 88:0, 89:0, 90:0, 91:0, 92:2, 93:2, 94:0, 95:1, 96:0, 97:2, 98:1, 99:2, 100:2, 101:2, 102:2, 103:0, 104:1, 105:2, 106:2, 107:0, 108:2, 109:0, 110:0, 111:0, 112:2, 113:1, 114:2, 115:0, 116:0, 117:0, 118:1, 119:2, 120:2, 121:0, 122:1, 123:1, 124:2, 125:2, 126:0, 127:1, 128:2, 129:2, 130:2, 131:2, 132:1, 133:0, 134:2, 135:2, 136:2, 137:2, 138:2, 139:1, 140:0, 141:2, 142:0, 143:0, 144:0, 145:0, 146:1, 147:1, 148:0, 149:0, 150:0, 151:2, 152:0, 153:2, 154:0, 155:0, 156:0, 157:2, 158:0, 159:2, 160:1, 161:2, 162:1, 163:2, 164:2, 165:0, 166:0, 167:2, 168:0, 169:0, 170:0, 171:0, 172:0, 173:1, 174:2, 175:0, 176:0, 177:0, 178:2, 179:2, 180:2, 181:0, 182:1, 183:0, 184:0, 185:1, 186:0, 187:0}}'
      type: object
    Disc:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:{most:1, least:8}, 2:{most:2, least:5}, 3:{most:4, least:6}, 4:{most:1, least:8}, 5:{most:3, least:6}, 6:{most:4, least:5}, 7:{most:3, least:6}, 8:{most:1, least:8}, 9:{most:3, least:7}, 10:{most:2, least:6}, 11:{most:3, least:6}, 12:{most:4, least:6}, 13:{most:2, least:6}, 14:{most:4, least:7}, 15:{most:1, least:8}, 16:{most:2, least:8}, 17:{most:1, least:6}, 18:{most:2, least:5}, 19:{most:4, least:7}, 20:{most:4, least:8}, 21:{most:1, least:5}, 22:{most:1, least:7}, 23:{most:3, least:5}, 24:{most:2, least:7}, 25:{most:2, least:6}, 26:{most:1, least:8}, 27:{most:4, least:6}, 28:{most:3, least:6}}'
      type: object
    Gardner:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:4, 2:3, 3:3, 4:2, 5:3, 6:3, 7:1, 8:2, 9:1, 10:3, 11:4, 12:4, 13:3, 14:4, 15:3, 16:4, 17:4, 18:2, 19:2, 20:1, 21:2, 22:3, 23:2, 24:4, 25:2, 26:2, 27:2, 28:4, 29:2, 30:3, 31:1, 32:0, 33:1, 34:3, 35:4, 36:2, 37:3, 38:3, 39:3, 40:1, 41:3, 42:2, 43:2, 44:2, 45:3, 46:2, 47:1, 48:3, 49:2, 50:3, 51:4, 52:2, 53:3, 54:2, 55:1, 56:2, 57:3, 58:3, 59:1, 60:1, 61:2, 62:4, 63:1, 64:3, 65:2, 66:2, 67:1, 68:2, 69:1, 70:4, 71:1, 72:2, 73:2, 74:2, 75:3, 76:2, 77:3, 78:2, 79:2, 80:2}'
      type: object
    Ghq:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:3, 2:1, 3:2, 4:2, 5:0, 6:0, 7:1, 8:2, 9:2, 10:2, 11:2, 12:3, 13:1, 14:2, 15:2, 16:0, 17:2, 18:2, 19:0, 20:0, 21:2, 22:0, 23:3, 24:2, 25:0, 26:1, 27:1, 28:0}'
      type: object
    Mbti:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:1, 2:1, 3:2, 4:2, 5:2, 6:1, 7:2, 8:2, 9:1, 10:2, 11:2, 12:2, 13:2, 14:2, 15:2, 16:1, 17:1, 18:1, 19:1, 20:2, 21:1, 22:1, 23:2, 24:1, 25:2, 26:1, 27:1, 28:2, 29:2, 30:1, 31:2, 32:1, 33:1, 34:1, 35:1, 36:1, 37:2, 38:2, 39:1, 40:2, 41:2, 42:2, 43:2, 44:2, 45:2, 46:1, 47:1, 48:2, 49:1, 50:2, 51:1, 52:1, 53:1, 54:1, 55:1, 56:2, 57:2, 58:2, 59:1, 60:2, 61:2, 62:1, 63:2, 64:2, 65:2, 66:1, 67:2, 68:2, 69:2, 70:2, 71:1, 72:2, 73:2, 74:1, 75:1, 76:2, 77:2, 78:2, 79:2, 80:2, 81:2, 82:2, 83:2, 84:1, 85:2, 86:1, 87:1, 88:2}'
      type: object
    Mcmi3:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:1, 2:1, 3:0, 4:1, 5:0, 6:1, 7:1, 8:0, 9:1, 10:1, 11:1, 12:1, 13:0, 14:1, 15:1, 16:1, 17:0, 18:0, 19:0, 20:1, 21:1, 22:0, 23:0, 24:0, 25:1, 26:0, 27:1, 28:0, 29:0, 30:0, 31:0, 32:0, 33:0, 34:0, 35:0, 36:1, 37:0, 38:0, 39:0, 40:1, 41:0, 42:1, 43:1, 44:1, 45:1, 46:1, 47:1, 48:1, 49:0, 50:0, 51:0, 52:0, 53:1, 54:0, 55:1, 56:0, 57:1, 58:0, 59:0, 60:1, 61:1, 62:0, 63:0, 64:0, 65:0, 66:0, 67:0, 68:1, 69:1, 70:0, 71:0, 72:1, 73:0, 74:1, 75:1, 76:1, 77:0, 78:0, 79:1, 80:1, 81:1, 82:1, 83:0, 84:1, 85:1, 86:1, 87:0, 88:1, 89:0, 90:0, 91:0, 92:1, 93:0, 94:1, 95:0, 96:1, 97:1, 98:1, 99:0, 100:0, 101:0, 102:0, 103:1, 104:0, 105:1, 106:1, 107:0, 108:0, 109:1, 110:0, 111:1, 112:1, 113:0, 114:1, 115:0, 116:0, 117:0, 118:0, 119:0, 120:1, 121:1, 122:0, 123:1, 124:1, 125:0, 126:0, 127:0, 128:1, 129:1, 130:1, 131:0, 132:1, 133:1, 134:1, 135:1, 136:0, 137:1, 138:1, 139:1, 140:0, 141:0, 142:0, 143:0, 144:0, 145:1, 146:1, 147:1, 148:1, 149:0, 150:0, 151:0, 152:0, 153:1, 154:1, 155:0, 156:0, 157:0, 158:0, 159:0, 160:0, 161:0, 162:0, 163:0, 164:0, 165:0, 166:0, 167:0, 168:1, 169:0, 170:1, 171:0, 172:0, 173:1, 174:0, 175:0}'
      type: object
    Mmpi370:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:0, 2:1, 3:0, 4:1, 5:0, 6:1, 7:1, 8:1, 9:1, 10:1, 11:0, 12:0, 13:0, 14:1, 15:1, 16:1, 17:0, 18:1, 19:0, 20:0, 21:0, 22:0, 23:0, 24:0, 25:0, 26:1, 27:1, 28:1, 29:0, 30:0, 31:1, 32:0, 33:1, 34:0, 35:0, 36:1, 37:0, 38:0, 39:0, 40:0, 41:1, 42:0, 43:1, 44:0, 45:1, 46:1, 47:1, 48:0, 49:0, 50:1, 51:1, 52:0, 53:0, 54:0, 55:1, 56:1, 57:0, 58:1, 59:1, 60:1, 61:1, 62:0, 63:0, 64:0, 65:0, 66:0, 67:0, 68:0, 69:1, 70:0, 71:0, 72:0, 73:0, 74:0, 75:1, 76:1, 77:1, 78:1, 79:1, 80:0, 81:1, 82:0, 83:1, 84:0, 85:0, 86:0, 87:1, 88:0, 89:1, 90:1, 91:1, 92:0, 93:1, 94:1, 95:1, 96:0, 97:0, 98:1, 99:1, 100:1, 101:0, 102:1, 103:1, 104:1, 105:1, 106:1, 107:0, 108:0, 109:1, 110:1, 111:1, 112:1, 113:1, 114:0, 115:0, 116:0, 117:1, 118:1, 119:1, 120:1, 121:0, 122:0, 123:0, 124:1, 125:1, 126:1, 127:0, 128:1, 129:1, 130:0, 131:0, 132:1, 133:0, 134:0, 135:1, 136:1, 137:1, 138:1, 139:0, 140:1, 141:1, 142:0, 143:0, 144:0, 145:0, 146:0, 147:1, 148:1, 149:1, 150:0, 151:0, 152:1, 153:1, 154:1, 155:1, 156:1, 157:1, 158:1, 159:1, 160:0, 161:0, 162:0, 163:1, 164:0, 165:0, 166:1, 167:0, 168:0, 169:0, 170:0, 171:0, 172:0, 173:1, 174:1, 175:0, 176:1, 177:1, 178:0, 179:0, 180:0, 181:0, 182:1, 183:1, 184:1, 185:0, 186:0, 187:1, 188:1, 189:1, 190:0, 191:1, 192:0, 193:0, 194:0, 195:1, 196:1, 197:0, 198:0, 199:0, 200:1, 201:0, 202:1, 203:1, 204:1, 205:1, 206:1, 207:0, 208:0, 209:1, 210:1, 211:0, 212:0, 213:1, 214:0, 215:0, 216:0, 217:0, 218:1, 219:1, 220:0, 221:0, 222:0, 223:1, 224:1, 225:0, 226:0, 227:1, 228:0, 229:0, 230:0, 231:0, 232:0, 233:1, 234:0, 235:1, 236:0, 237:0, 238:0, 239:1, 240:0, 241:1, 242:0, 243:0, 244:0, 245:1, 246:1, 247:0, 248:0, 249:1, 250:0, 251:0, 252:0, 253:0, 254:1, 255:0, 256:0, 257:0, 258:0, 259:0, 260:0, 261:1, 262:0, 263:1, 264:0, 265:1, 266:1, 267:0, 268:0, 269:0, 270:1, 271:0, 272:1, 273:0, 274:0, 275:1, 276:1, 277:0, 278:1, 279:1, 280:1, 281:1, 282:0, 283:1, 284:1, 285:0, 286:1, 287:0, 288:1, 289:0, 290:1, 291:0, 292:1, 293:0, 294:0, 295:0, 296:0, 297:1, 298:0, 299:1, 300:0, 301:1, 302:1, 303:0, 304:0, 305:1, 306:1, 307:0, 308:1, 309:1, 310:1, 311:0, 312:1, 313:0, 314:1, 315:1, 316:0, 317:0, 318:1, 319:0, 320:0, 321:1, 322:0, 323:0, 324:0, 325:0, 326:1, 327:0, 328:0, 329:0, 330:0, 331:0, 332:0, 333:0, 334:0, 335:1, 336:0, 337:1, 338:1, 339:0, 340:0, 341:0, 342:1, 343:1, 344:1, 345:1, 346:1, 347:0, 348:0, 349:1, 350:1, 351:0, 352:1, 353:0, 354:1, 355:0, 356:0, 357:0, 358:1, 359:0, 360:0, 361:0, 362:0, 363:1, 364:0, 365:1, 366:0, 367:1, 368:0, 369:1, 370:1}'
      type: object
    Mmpi567:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:1, 2:0, 3:1, 4:0, 5:0, 6:1, 7:1, 8:1, 9:0, 10:1, 11:1, 12:1, 13:1, 14:0, 15:1, 16:1, 17:0, 18:1, 19:1, 20:1, 21:1, 22:0, 23:0, 24:0, 25:0, 26:0, 27:0, 28:0, 29:1, 30:0, 31:0, 32:1, 33:0, 34:1, 35:1, 36:0, 37:0, 38:1, 39:0, 40:0, 41:0, 42:1, 43:0, 44:0, 45:0, 46:1, 47:0, 48:0, 49:0, 50:0, 51:1, 52:1, 53:1, 54:1, 55:0, 56:0, 57:1, 58:1, 59:1, 60:1, 61:1, 62:1, 63:1, 64:0, 65:0, 66:0, 67:0, 68:0, 69:1, 70:1, 71:1, 72:1, 73:1, 74:1, 75:0, 76:0, 77:0, 78:0, 79:0, 80:1, 81:0, 82:0, 83:0, 84:0, 85:1, 86:0, 87:0, 88:0, 89:0, 90:1, 91:0, 92:1, 93:0, 94:0, 95:1, 96:0, 97:0, 98:1, 99:1, 100:0, 101:1, 102:1, 103:1, 104:0, 105:1, 106:1, 107:1, 108:1, 109:0, 110:1, 111:0, 112:1, 113:0, 114:0, 115:1, 116:0, 117:0, 118:0, 119:1, 120:0, 121:1, 122:0, 123:0, 124:0, 125:0, 126:0, 127:1, 128:0, 129:1, 130:0, 131:0, 132:0, 133:0, 134:0, 135:1, 136:1, 137:0, 138:1, 139:0, 140:0, 141:1, 142:0, 143:0, 144:0, 145:0, 146:1, 147:1, 148:1, 149:0, 150:0, 151:0, 152:0, 153:0, 154:0, 155:1, 156:1, 157:1, 158:0, 159:0, 160:0, 161:0, 162:1, 163:1, 164:0, 165:1, 166:1, 167:1, 168:1, 169:1, 170:1, 171:1, 172:0, 173:0, 174:1, 175:0, 176:0, 177:0, 178:0, 179:1, 180:0, 181:1, 182:0, 183:0, 184:1, 185:1, 186:0, 187:0, 188:1, 189:0, 190:0, 191:0, 192:1, 193:0, 194:1, 195:0, 196:0, 197:1, 198:1, 199:0, 200:1, 201:1, 202:1, 203:1, 204:0, 205:1, 206:1, 207:1, 208:0, 209:1, 210:1, 211:0, 212:0, 213:0, 214:0, 215:1, 216:1, 217:0, 218:1, 219:0, 220:0, 221:1, 222:0, 223:1, 224:0, 225:0, 226:1, 227:0, 228:0, 229:0, 230:1, 231:1, 232:1, 233:0, 234:0, 235:1, 236:1, 237:0, 238:0, 239:0, 240:1, 241:1, 242:0, 243:1, 244:1, 245:1, 246:1, 247:0, 248:1, 249:0, 250:1, 251:1, 252:0, 253:1, 254:0, 255:0, 256:1, 257:1, 258:0, 259:0, 260:1, 261:0, 262:1, 263:1, 264:1, 265:1, 266:0, 267:1, 268:1, 269:0, 270:0, 271:1, 272:0, 273:1, 274:0, 275:0, 276:0, 277:0, 278:0, 279:1, 280:0, 281:0, 282:0, 283:0, 284:1, 285:1, 286:0, 287:0, 288:1, 289:1, 290:1, 291:0, 292:1, 293:1, 294:0, 295:1, 296:0, 297:0, 298:0, 299:1, 300:0, 301:1, 302:1, 303:0, 304:0, 305:1, 306:0, 307:1, 308:0, 309:0, 310:1, 311:0, 312:0, 313:0, 314:1, 315:1, 316:0, 317:0, 318:0, 319:0, 320:1, 321:0, 322:1, 323:0, 324:0, 325:1, 326:0, 327:0, 328:1, 329:0, 330:1, 331:1, 332:0, 333:0, 334:0, 335:1, 336:1, 337:1, 338:1, 339:1, 340:1, 341:0, 342:0, 343:1, 344:0, 345:0, 346:0, 347:0, 348:1, 349:0, 350:0, 351:1, 352:0, 353:0, 354:1, 355:0, 356:1, 357:1, 358:0, 359:0, 360:1, 361:0, 362:1, 363:1, 364:0, 365:0, 366:0, 367:0, 368:0, 369:0, 370:1, 371:1, 372:1, 373:0, 374:1, 375:1, 376:0, 377:0, 378:1, 379:0, 380:1, 381:1, 382:0, 383:1, 384:1, 385:0, 386:1, 387:0, 388:0, 389:1, 390:0, 391:1, 392:1, 393:0, 394:1, 395:1, 396:0, 397:1, 398:1, 399:0, 400:1, 401:1, 402:1, 403:0, 404:1, 405:0, 406:0, 407:0, 408:1, 409:1, 410:0, 411:0, 412:1, 413:0, 414:0, 415:1, 416:0, 417:1, 418:0, 419:1, 420:0, 421:1, 422:1, 423:0, 424:0, 425:0, 426:1, 427:1, 428:0, 429:1, 430:1, 431:0, 432:0, 433:1, 434:0, 435:0, 436:1, 437:0, 438:1, 439:1, 440:1, 441:0, 442:1, 443:1, 444:0, 445:0, 446:0, 447:0, 448:1, 449:0, 450:1, 451:0, 452:0, 453:0, 454:0, 455:0, 456:0, 457:1, 458:1, 459:1, 460:0, 461:1, 462:1, 463:0, 464:1, 465:1, 466:0, 467:1, 468:0, 469:0, 470:0, 471:0, 472:1, 473:0, 474:1, 475:1, 476:0, 477:0, 478:1, 479:0, 480:0, 481:0, 482:1, 483:0, 484:0, 485:1, 486:0, 487:0, 488:1, 489:0, 490:0, 491:0, 492:0, 493:0, 494:1, 495:0, 496:1, 497:0, 498:1, 499:1, 500:1, 501:1, 502:0, 503:0, 504:1, 505:1, 506:1, 507:0, 508:1, 509:0, 510:0, 511:1, 512:1, 513:1, 514:0, 515:1, 516:0, 517:1, 518:1, 519:1, 520:0, 521:0, 522:1, 523:0, 524:0, 525:0, 526:1, 527:1, 528:1, 529:0, 530:1, 531:1, 532:1, 533:0, 534:0, 535:1, 536:0, 537:0, 538:1, 539:0, 540:1, 541:1, 542:0, 543:0, 544:0, 545:1, 546:0, 547:0, 548:1, 549:0, 550:0, 551:0, 552:1, 553:0, 554:1, 555:1, 556:0, 557:1, 558:0, 559:0, 560:0, 561:0, 562:1, 563:0, 564:0, 565:0, 566:1, 567:1}'
      type: object
    Mmpi71:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:1, 2:1, 3:1, 4:1, 5:1, 6:1, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:0, 14:0, 15:0, 16:0, 17:0, 18:0, 19:0, 20:1, 21:0, 22:0, 23:1, 24:1, 25:0, 26:0, 27:0, 28:1, 29:1, 30:0, 31:1, 32:0, 33:0, 34:0, 35:1, 36:0, 37:1, 38:0, 39:0, 40:1, 41:1, 42:1, 43:0, 44:0, 45:1, 46:1, 47:1, 48:0, 49:0, 50:0, 51:0, 52:0, 53:1, 54:1, 55:1, 56:0, 57:0, 58:0, 59:0, 60:0, 61:1, 62:0, 63:1, 64:0, 65:1, 66:0, 67:1, 68:0, 69:0, 70:0, 71:1}'
      type: object
    Neo240:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:4, 2:3, 3:4, 4:0, 5:4, 6:0, 7:0, 8:1, 9:2, 10:1, 11:4, 12:4, 13:1, 14:1, 15:4, 16:0, 17:3, 18:3, 19:3, 20:0, 21:3, 22:3, 23:3, 24:1, 25:4, 26:0, 27:0, 28:1, 29:4, 30:0, 31:0, 32:0, 33:3, 34:3, 35:0, 36:4, 37:4, 38:3, 39:1, 40:3, 41:0, 42:0, 43:3, 44:3, 45:0, 46:4, 47:4, 48:4, 49:4, 50:4, 51:0, 52:1, 53:1, 54:1, 55:1, 56:4, 57:1, 58:3, 59:1, 60:4, 61:4, 62:4, 63:4, 64:0, 65:4, 66:0, 67:0, 68:2, 69:1, 70:0, 71:4, 72:4, 73:3, 74:0, 75:4, 76:0, 77:2, 78:4, 79:4, 80:0, 81:4, 82:3, 83:4, 84:1, 85:4, 86:0, 87:0, 88:3, 89:3, 90:0, 91:0, 92:0, 93:1, 94:3, 95:1, 96:4, 97:4, 98:4, 99:0, 100:4, 101:3, 102:1, 103:3, 104:4, 105:0, 106:4, 107:3, 108:3, 109:3, 110:4, 111:3, 112:1, 113:0, 114:3, 115:0, 116:4, 117:3, 118:3, 119:1, 120:4, 121:4, 122:4, 123:0, 124:1, 125:3, 126:0, 127:0, 128:1, 129:3, 130:0, 131:1, 132:4, 133:1, 134:1, 135:4, 136:0, 137:0, 138:1, 139:1, 140:1, 141:4, 142:4, 143:4, 144:3, 145:4, 146:0, 147:0, 148:1, 149:3, 150:0, 151:1, 152:4, 153:1, 154:3, 155:0, 156:4, 157:4, 158:1, 159:0, 160:0, 161:0, 162:0, 163:0, 164:3, 165:4, 166:4, 167:0, 168:2, 169:0, 170:4, 171:1, 172:2, 173:0, 174:0, 175:0, 176:4, 177:4, 178:4, 179:4, 180:4, 181:3, 182:1, 183:3, 184:3, 185:3, 186:3, 187:0, 188:0, 189:0, 190:4, 191:0, 192:3, 193:4, 194:4, 195:4, 196:1, 197:1, 198:3, 199:2, 200:4, 201:0, 202:1, 203:3, 204:3, 205:0, 206:3, 207:1, 208:1, 209:3, 210:4, 211:0, 212:3, 213:4, 214:3, 215:4, 216:0, 217:4, 218:1, 219:1, 220:0, 221:0, 222:0, 223:1, 224:4, 225:3, 226:1, 227:3, 228:3, 229:0, 230:3, 231:3, 232:4, 233:4, 234:1, 235:3, 236:4, 237:1, 238:2, 239:1, 240:4}'
      type: object
    Neo60:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:2, 2:2, 3:2, 4:4, 5:4, 6:1, 7:4, 8:4, 9:2, 10:4, 11:4, 12:2, 13:3, 14:4, 15:2, 16:2, 17:3, 18:2, 19:4, 20:5, 21:2, 22:4, 23:2, 24:5, 25:4, 26:1, 27:4, 28:2, 29:4, 30:2, 31:2, 32:3, 33:2, 34:4, 35:4, 36:2, 37:4, 38:4, 39:4, 40:4, 41:2, 42:1, 43:4, 44:1, 45:1, 46:4, 47:4, 48:2, 49:5, 50:3, 51:1, 52:4, 53:2, 54:4, 55:1, 56:2, 57:2, 58:2, 59:1, 60:4}'
      type: object
    Riasec30:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:2, 3, 7, 8, 10, 2:4, 8, 9, 10, 11, 3:1, 3, 4, 4:1, 2, 7, 8, 10, 5:3, 4, 5, 6, 11, 6:1, 7, 7:7, 9, 8:1, 5, 6, 7, 8, 9, 9:6, 10:1, 2, 3, 9, 11, 11:1, 3, 9, 10, 11, 12:1, 5, 6, 7, 8, 9, 13:1, 3, 8, 12, 14:8, 11, 12, 15:3, 6, 11, 16:6, 8, 9, 17:2, 3, 10, 11, 18:10, 19:3, 20:2, 21:5, 22:4, 23:2, 24:2, 25:4, 26:1, 27:4, 28:2, 29:4, 30:3}'
      type: object
    Scl90R:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:0, 2:2, 3:3, 4:0, 5:0, 6:2, 7:1, 8:2, 9:4, 10:1, 11:3, 12:2, 13:4, 14:2, 15:0, 16:0, 17:2, 18:3, 19:0, 20:2, 21:4, 22:1, 23:0, 24:1, 25:0, 26:2, 27:0, 28:0, 29:0, 30:3, 31:3, 32:0, 33:0, 34:4, 35:1, 36:2, 37:0, 38:0, 39:0, 40:0, 41:0, 42:0, 43:3, 44:0, 45:2, 46:3, 47:0, 48:0, 49:1, 50:3, 51:0, 52:2, 53:1, 54:4, 55:1, 56:0, 57:3, 58:0, 59:0, 60:4, 61:0, 62:0, 63:1, 64:0, 65:4, 66:4, 67:0, 68:4, 69:2, 70:4, 71:1, 72:0, 73:4, 74:0, 75:0, 76:3, 77:3, 78:0, 79:0, 80:2, 81:0, 82:4, 83:3, 84:0, 85:0, 86:2, 87:0, 88:1, 89:0, 90:2}'
      type: object
    Separationdesire25:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:1, 2:2, 3:3, 4:1, 5:4, 6:1, 7:0, 8:0, 9:0, 10:0, 11:0, 12:0, 13:3, 14:0, 15:2, 16:0, 17:1, 18:0, 19:4, 20:1, 21:2, 22:0, 23:1, 24:1, 25:0}'
      type: object
    Sternberg45:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:8, 2:7, 3:7, 4:8, 5:7, 6:7, 7:7, 8:7, 9:8, 10:7, 11:7, 12:7, 13:6, 14:8, 15:7, 16:7, 17:7, 18:5, 19:7, 20:6, 21:8, 22:8, 23:7, 24:8, 25:1, 26:8, 27:8, 28:8, 29:8, 30:7, 31:7, 32:8, 33:7, 34:7, 35:8, 36:8, 37:8, 38:8, 39:8, 40:8, 41:8, 42:8, 43:8, 44:8, 45:8}'
      type: object
    TestResultRequest:
      properties:
        id:
          description: 'The testType or testId of a specific test'
          type: string
          example: 'id can be either test type e.g. MMPI71 or test id'
        firstName:
          description: 'The first name of the customer'
          type: string
          example: John
        lastName:
          description: 'The last name of the customer'
          type: string
          example: Doe
        gender:
          description: 'The last name of the customer'
          type: string
          enum:
            - male
            - female
          example: Doe
        birthdate:
          description: 'Birthdate must be a valid gregorian date greater than 1850-01-01'
          type: string
          format: date
          example: '1987-12-22'
        duration:
          description: 'Duration in seconds'
          type: integer
          example: 3117
        answers:
          description: 'A JSON string representing questionNumber: answers'
          type: string
          format: json
          oneOf:
            -
              $ref: '#/components/schemas/Mmpi71'
            -
              $ref: '#/components/schemas/Mmpi370'
            -
              $ref: '#/components/schemas/Mmpi567'
            -
              $ref: '#/components/schemas/Neo240'
            -
              $ref: '#/components/schemas/Neo60'
            -
              $ref: '#/components/schemas/Mcmi3'
            -
              $ref: '#/components/schemas/Scl90R'
            -
              $ref: '#/components/schemas/Cattell16Pf'
            -
              $ref: '#/components/schemas/Ysq205'
            -
              $ref: '#/components/schemas/Mbti'
            -
              $ref: '#/components/schemas/Ghq'
            -
              $ref: '#/components/schemas/Disc'
            -
              $ref: '#/components/schemas/Riasec30'
            -
              $ref: '#/components/schemas/Gardner'
            -
              $ref: '#/components/schemas/BeckBai'
            -
              $ref: '#/components/schemas/BeckBdi'
      type: object
    Ysq205:
      properties:
        answers:
          description: 'Find the answers range in /questions endpoint (choice)'
          type: string
          format: json
          example: '{1:2, 2:5, 3:3, 4:4, 5:2, 6:2, 7:4, 8:4, 9:4, 10:1, 11:1, 12:1, 13:4, 14:2, 15:2, 16:1, 17:4, 18:1, 19:2, 20:5, 21:5, 22:5, 23:2, 24:5, 25:2, 26:1, 27:2, 28:4, 29:4, 30:2, 31:1, 32:2, 33:2, 34:2, 35:2, 36:3, 37:2, 38:2, 39:2, 40:2, 41:2, 42:4, 43:4, 44:5, 45:2, 46:5, 47:2, 48:2, 49:3, 50:3, 51:4, 52:4, 53:5, 54:2, 55:2, 56:1, 57:1, 58:1, 59:1, 60:1, 61:1, 62:1, 63:1, 64:2, 65:5, 66:1, 67:4, 68:3, 69:4, 70:1, 71:1, 72:1, 73:1, 74:1, 75:4, 76:2, 77:2, 78:2, 79:1, 80:1, 81:1, 82:1, 83:1, 84:1, 85:2, 86:1, 87:2, 88:1, 89:3, 90:1, 91:1, 92:3, 93:3, 94:1, 95:1, 96:4, 97:2, 98:3, 99:2, 100:5, 101:2, 102:2, 103:1, 104:1, 105:1, 106:1, 107:1, 108:4, 109:2, 110:1, 111:2, 112:3, 113:1, 114:1, 115:1, 116:4, 117:1, 118:4, 119:5, 120:2, 121:2, 122:2, 123:2, 124:2, 125:4, 126:2, 127:2, 128:4, 129:2, 130:1, 131:3, 132:2, 133:1, 134:3, 135:4, 136:4, 137:5, 138:4, 139:4, 140:5, 141:5, 142:4, 143:4, 144:4, 145:4, 146:4, 147:4, 148:4, 149:5, 150:5, 151:3, 152:2, 153:2, 154:4, 155:2, 156:2, 157:2, 158:2, 159:2, 160:2, 161:3, 162:4, 163:2, 164:2, 165:5, 166:4, 167:4, 168:2, 169:3, 170:5, 171:4, 172:4, 173:2, 174:3, 175:3, 176:3, 177:2, 178:2, 179:2, 180:3, 181:2, 182:2, 183:4, 184:2, 185:4, 186:4, 187:2, 188:2, 189:2, 190:4, 191:2, 192:2, 193:3, 194:1, 195:2, 196:2, 197:1, 198:2, 199:4, 200:3, 201:2, 202:2, 203:2, 204:2, 205:2}'
      type: object
  securitySchemes:
    bearerAuth:
      type: http
      bearerFormat: JWT
      scheme: bearer
tags:
  -
    name: Account
    description: Account
  -
    name: Financial
    description: Financial
  -
    name: Assessments
    description: Assessments
  -
    name: Locations
    description: Locations
  -
    name: Logistic
    description: Logistic
  -
    name: Orders
    description: Orders
  -
    name: Packages
    description: Packages
  -
    name: Products
    description: Products
  -
    name: Users
    description: Users
