OpenAPI (Swagger)

На сервер потрібно надіслати модель Driver, яка виглядає наступним чином:

components:
  schemas:
    Driver:
      type: object
      properties:
        hr_hash:
          type: string
          nullable: true
          description: window.vars.HR_HASH
        email:
          type: string
          format: email
        phone:
          type: string
          pattern: "^1\\d{10}$"
          description: US mobile phone number with country code (1)
        first_name:
          type: string
          minLength: 2
          maxLength: 50
        last_name:
          type: string
          minLength: 2
          maxLength: 50
        photo:
          type: string
          nullable: true
          maxLength: 4096000
          description: Base64 encoded cropped photo
        birth_date:
          type: string
          format: date
          description: Driver's birth date (US date format - m/d/Y)
        ssn:
          type: string
          minLength: 9
          maxLength: 9
          description: Social Security Number (SSN) of the driver
        address:
          type: string
          minLength: 8
          maxLength: 80
          description: Driver's address
        city:
          type: string
          minLength: 2
          maxLength: 40
          description: City where the driver resides
        state_code:
          type: string
          description: State code (e.g., CA, NY). List of values in window.vars.SELECT_VALUES
        zip_code:
          type: string
          pattern: "^\d{5}(-\d{4})?$"
          description: ZIP code (5 digits or ZIP+4 with hyphen and additional digits)
        is_legally_employable_in_us:
          type: boolean
          description: Indicates if the driver is legally employable in the US
        is_currently_employed:
          type: boolean
          description: Indicates if the driver is currently employed
        can_contact_current_employer:
          type: boolean
          nullable: true
          description: Indicates if the current employer can be contacted
        current_employer_phone:
          type: string
          pattern: "^1\\d{10}$"
          nullable: true
          description: Phone number of the current employer
        company_discovery_method_type:
          type: string
          nullable: true
          enum: ['facebook', 'instagram']
          description: Type of company discovery method. List of values in window.vars.SELECT_VALUES
        company_discovery_method_clarification:
          type: string
          nullable: true
          minLength: 2
          maxLength: 120
          description: Clarification for the company discovery method
        has_license_been_revoked_or_suspended:
          type: boolean
          description: Indicates if the driver's license has been revoked or suspended
        license_revocation_or_suspension_date_and_place:
          type: string
          nullable: true
          minLength: 10
          maxLength: 500
          description: Date and place of license revocation or suspension
        reason_for_license_revocation_or_suspension:
          type: string
          nullable: true
          minLength: 10
          maxLength: 500
          description: Reason for license revocation or suspension
        has_been_convicted_of_felony:
          type: boolean
          description: Indicates if the driver has been convicted of a felony
        felony_conviction_date_and_place:
          type: string
          nullable: true
          minLength: 10
          maxLength: 500
          description: Date and place of felony conviction
        reason_for_felony_conviction:
          type: string
          nullable: true
          minLength: 10
          maxLength: 500
          description: Reason for felony conviction
        has_tested_positive_for_drug_or_alcohol:
          type: boolean
          description: Indicates if the driver has tested positive for drugs or alcohol
        employment_history:
          type: array
          minItems: 1
          items:
            type: object
            properties:
              employer_name:
                type: string
                minLength: 2
                maxLength: 50
                description: Employer's name
              contact_name:
                type: string
                minLength: 2
                maxLength: 50
                description: Contact person's name
              contact_phone:
                type: string
                pattern: "^1\\d{10}$"
                description: Contact person's phone number
              enrollment_date:
                type: string
                format: date
                description: Date of enrollment
              leaving_date:
                type: string
                format: date
                description: Date of leaving. Must be after enrollment_date
              job_title:
                type: string
                nullable: true
                minLength: 2
                maxLength: 50
                description: Job title
              salary:
                type: integer
                nullable: true
                minimum: 0
                maximum: 1000000
                description: Salary
              address:
                type: string
                minLength: 8
                maxLength: 80
                description: Employer's address
              city:
                type: string
                minLength: 2
                maxLength: 40
                description: City of employment
              state_code:
                type: string
                description: State code of employment
              zip_code:
                type: string
                pattern: "^\d{5}(-\d{4})?$"
                nullable: true
                description: ZIP code of employment
              leaving_reason:
                type: string
                minLength: 10
                maxLength: 500
                description: Reason for leaving
              was_subject_to_fmcsrs:
                type: boolean
                description: Indicates if subject to FMCSRs
              was_job_safety_sensitive:
                type: boolean
                description: Indicates if the job was safety-sensitive
        licenses:
          type: array
          minItems: 1
          items:
            type: object
            properties:
              state_code:
                type: string
                description: State code of the license
              license_no:
                type: string
                minLength: 5
                maxLength: 20
                description: License number
              license_type:
                type: string
                enum: ['A_CDL', 'B_CDL']
                description: Type of license. List of values in window.vars.SELECT_VALUES
              expiration_date:
                type: string
                format: date
                description: Expiration date of the license
        equipment_experience:
          type: array
          nullable: true
          items:
            type: object
            properties:
              equipment_type:
                type: string
                minLength: 2
                maxLength: 40
                description: Type of equipment experience
              experience_years:
                type: integer
                minimum: 1
                maximum: 40
                description: Years of experience with the equipment
        accidents:
          type: array
          nullable: true
          items:
            type: object
            properties:
              accident_date:
                type: string
                format: date
                description: Date of the accident
        injuries:
                type: string
                minLength: 2
                maxLength: 120
                description: Injuries from the accident
              has_fatalities:
                type: boolean
                description: Indicates if the accident resulted in fatalities
              vehicle_type:
                type: string
                enum: ['A_CDL', 'B_CDL']
                description: Type of vehicle involved in the accident. List of values in window.vars.SELECT_VALUES
        traffic_convictions:
          type: array
          nullable: true
          items:
            type: object
            properties:
              conviction_date:
                type: string
                format: date
                description: Date of the traffic conviction
              place:
                type: string
                minLength: 2
                maxLength: 120
                description: Place of the traffic conviction
              violation:
                type: string
                minLength: 2
                maxLength: 120
                description: Violation in the traffic conviction
              penalty:
                type: string
                minLength: 2
                maxLength: 50
                description: Penalty for the traffic conviction
        accept_terms:
          type: boolean
          description: Indicates if the driver accepts the terms

Скріншоти

Форма виглядає наступним чином:

Крок 1

Крок 2

Крок 3

Крок 4

Поля по умові

На кроці 1:

Currently Employed? == true → show May we contact your present employer?

May we contact your present employer? == true → show Contact

How did you hear about this company? one of [ad, other] → show string input “Please, clarify” (not in the screenshot)

На кроці 3: