---
openapi: 3.0.0
info:
  title: Evidence of Insurability (EOI) API
  description: "# Summary \nEvidence of Insurability (EOI) API facilitate EOI form submission for Group\ninsurance products for partners, and provide status of the submitted EOI\ntransaction using transaction ID.\n\n# Versioning  \nGroup EOI API uses url path prefixing to maintain different versions of the\napi. The format used is a 'v' followed by the version number. Current version is v3.\n\nGuardian APIs follow the life cycle dictated below.\n<a\nref=\"http://epamdevportal.eastus.cloudapp.azure.com/epamdp/web/sites/default/files/2019-09/image2019-2-7_13-24-5.png\">\n  <img src=\"http://epamdevportal.eastus.cloudapp.azure.com/epamdp/web/sites/default/files/2019-09/image2019-2-7_13-24-5.png\" />\n</a>\n\n# Status Codes \nStatus Code      | Description \n-----------------|-------------\n200              | Request is processed as expected. See response if    applicable.\n400              | Bad Request. See error response with message. \n401              | Not a valid API key. See error response with message. \n402              | Request failed. See error response with message.\n404              | Resource Not Found. Either no API endpoint was found or there were no results for given parameters.\n500              | Internal Server Error. Something blew up on our side.\nThis shouldn't happen. We logged the error and we will try to fix it ASAP.  \n\n\n# Authentication and Authorization \nGroup EOI API leverages Guardian's Apigee Gateway to provide secure access\nusing the OAuth 2.0 client credentials grant. \n\n\n# Change Log\nDate         | Change\n-------------|----------------------------\n06/01/2019   | Updated Response with Error object \n06/07/2019   | Added Enum for State, Place of Birth, Country, Gender \n06/10/2019   | Updated 400 Error with response for POST endpoint\n06/11/2019   | Added child_covered in Cancer Coverage\n06/11/2019   | In EOICoverageStatus defined employee and spouse elements as array  \n07/23/2019   | Sync the place of birth enum with state enum \n09/24/2020   | Version 3, JWT\n"
  termsOfService: /terms-and-conditions
  contact:
    name: API Support
    email: API_Admin@glic.com
  version: v3
  x-logo:
    url: http://epamdevportal.eastus.cloudapp.azure.com/epamdp/web/sites/default/files/2019-09/eoiimage_0.png
    altText: Group Insurance EOI API logo
externalDocs:
  description: Find out how to do something with Guardian APIs.
  url: https://www.guardianlife.com
tags:
- name: EOI
  description: Evidence of Insurability
- name: Push Notification
  description: Push EOI Status
- name: eoi_model
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/EvidenceOfInsurability" />
  x-displayName: Evidence of Insurability
- name: coverage_model
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Coverage" />
  x-displayName: Coverage
- name: personal_info_model
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/PersonalInformation" />
  x-displayName: Personal Info
- name: error_model
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Error" />
  x-displayName: Error
paths:
  /v3/policies/{group_policy_id}/employees/eoi:
    post:
      tags:
      - EOI
      summary: Submit Employee EOI Request.
      description: Submit employee and dependent information with elected benefits to prefill the EOI form, data should be passed in JSON Format in the request.
      parameters:
      - name: group_policy_id
        in: path
        description: The group policy number.
        required: true
        style: simple
        explode: false
        schema:
          maxLength: 8
          type: string
          example: "00123456"
      - name: nonce
        in: query
        required: true
        style: form
        explode: false
        schema:
          type: string
          example: eoim7
      requestBody:
        description: Request object
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EvidenceOfInsurability'
        required: true
      responses:
        "200":
          description: Request is processed as expected. See response if applicable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EOIFormResponse'
        "400":
          description: Bad Request. See error response with message.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EOIFormResponse'
        "401":
          description: Not a valid API key. See error response with message.
        "402":
          description: Request failed. See error response with message.
        "404":
          description: Resource Not Found. Either no API endpoint was found or there were no results for given parameters.
        "500":
          description: Internal Server Error. Something blew up on our side. This shouldn't happen. We logged the error and we will try to fix it ASAP.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v3/policies/{group_policy_id}/employees/eoi/{transaction_id}/status:
    get:
      tags:
      - EOI
      summary: Get EOI Status.
      description: EOI Status API Returns EOI adjudication status for employees, spouse and children according to the transaction id passed within the url.
      parameters:
      - name: group_policy_id
        in: path
        description: The group policy number.
        required: true
        style: simple
        explode: false
        schema:
          maxLength: 8
          type: string
          example: "00123456"
      - name: source
        in: query
        description: Carrier assigned TPA Code
        required: true
        style: form
        explode: false
        schema:
          maxLength: 4
          type: string
          example: GRDN
      - name: nonce
        in: query
        required: true
        style: form
        explode: false
        schema:
          type: string
          example: eoim7
      - name: transaction_id
        in: path
        description: The transaction id to retrieve EOI status for an already submitted EOI form.
        required: true
        style: simple
        explode: false
        schema:
          type: string
          example: "20170627072736078789"
      responses:
        "200":
          description: Request is processed as expected. See response if applicable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EOIStatusResponse'
        "400":
          description: Bad Request. See error response with message.
        "401":
          description: Not a valid API key. See error response with message.
        "402":
          description: Request failed. See error response with message.
        "404":
          description: Resource Not Found. Either no API endpoint was found or there were no results for given parameters.
        "500":
          description: Internal Server Error. Something blew up on our side. This shouldn't happen. We logged the error and we will try to fix it ASAP.
        default:
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusError'
  /eoi-status-notification:
    post:
      tags:
      - Push Notification
      summary: Eoi Status Wrapper.
      description: An endpoint like this should exist on Ben Admin's side to intake the EOI status notification that Guardian will push to.
      requestBody:
        description: Data to be Pushed to Ben Admin
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/eoistatusnotification_body'
        required: true
      responses:
        "200":
          description: Request is processed as expected. See response if applicable.
        "400":
          description: Bad Request. See error response with message.
        "401":
          description: Not a valid API key. See error response with message.
        "402":
          description: Request failed. See error response with message.
        "404":
          description: Resource Not Found. Either no API endpoint was found or there were no results for given parameters.
        "500":
          description: Internal Server Error. Something blew up on our side. This shouldn't happen. We logged the error and we will try to fix it ASAP.
        default:
          description: Unexpected error
components:
  schemas:
    EvidenceOfInsurability:
      required:
      - class_id
      - coverage_elections
      - event_details
      - personal_information
      - source
      type: object
      properties:
        source:
          maxLength: 4
          type: string
          description: TPA Code to identify the client, provided by Guardian. If Guardian provided you a code then the code is required to be entered
          example: GRDN
        eoi_verification_required_flag:
          type: boolean
          description: 'EOI Verification Required Flag, If Guardian needs to verify the EOI process, then the flag is set to true otherwise flag should be set to false or empty. IF Guardian provided a TPA code, this element should be false or blank. '
          example: false
        class_id:
          maxLength: 4
          type: string
          description: Class ID represents categories of members who are eligible for the same coverages and benefits. Note, Each Guardian group may include 1 or more classes, all classes must be set up so all members can use eEOI webservice
          example: "0002"
        event_details:
          $ref: '#/components/schemas/event_details'
        coverage_elections:
          $ref: '#/components/schemas/coverage_elections'
        personal_information:
          $ref: '#/components/schemas/PersonalInformation'
    event_details:
      required:
      - event_date
      - event_type
      - sign_date
      type: object
      properties:
        event_type:
          type: string
          description: Event type ('E' for enrollment/add dependent and 'U' for update benefits)
          example: U
          enum:
          - E
          - U
        event_date:
          type: string
          description: Effective date of event (Event date is required in case of life event transaction such as add dependent due to reason of marriage, newborn etc.)
          format: date
          example: 2022-09-01
        sign_date:
          type: string
          description: The date the EOI link is selected by the customer.
          format: date
          example: 2022-09-01
    coverage_elections:
      type: object
      properties:
        basic_life:
          $ref: '#/components/schemas/Coverage'
        voluntary_life:
          $ref: '#/components/schemas/Coverage'
        basic_critical_illness:
          $ref: '#/components/schemas/Coverage'
        voluntary_critical_illness:
          $ref: '#/components/schemas/Coverage'
        long_term_disability:
          $ref: '#/components/schemas/DisabilityCoverage'
        short_term_disability:
          $ref: '#/components/schemas/DisabilityCoverage'
        cancer:
          $ref: '#/components/schemas/CancerCoverage'
      description: At least one coverage is required in the coverage_elections to submit the EOI request.
    employee_covered:
      type: boolean
      description: If EOI is for the employee electing coverage, then the flag MUST be set to true otherwise flag should be set to false or empty
      example: true
    spouse_covered:
      type: boolean
      description: If EOI is for the spouse electing coverage, then the flag MUST be set to true otherwise flag should be set to false or empty
      example: true
    child_covered:
      type: boolean
      description: If EOI is for the child electing coverage, then the flag MUST be set to true otherwise flag should be set to false or empty
      example: true
    employee_effective_date:
      type: string
      description: If the employee_covered is set to true THEN effective date of coverage is required. This date must equal the first of the month from when the EOI link is selected. IF EOI link is selected date equals 20XX-08-25 THEN date should be displayed as 20XX-09-01 OR IF employee is newly eligible with a future effective date THEN date should be displayed with future effective date i.e. Voluntary Life effective 20XX-10-01, THEN date should equal 20XX-10-01.
      format: date
      example: 2022-09-01
    spouse_effective_date:
      type: string
      description: If the spouse_covered is set to true THEN effective date of coverage is required. This date must equal the first of the month from when the EOI link is selected. IF EOI link is selected date equals 20XX-08-25 THEN date should be displayed as 20XX-09-01 OR IF employee is newly eligible with a future effective date THEN date should be displayed with future effective date i.e. Voluntary Life effective 20XX-10-01, THEN date should equal 20XX-10-01.
      format: date
      example: 2022-09-01
    child_effective_date:
      type: string
      description: If the child_covered is set to true THEN effective date of coverage is required. This date must equal the first of the month from when the EOI link is selected. IF EOI link is selected date equals 20XX-08-25 THEN date should be displayed as 20XX-09-01 OR IF employee is newly eligible with a future effective date THEN date should be displayed with future effective date i.e. Voluntary Life effective 20XX-10-01, THEN date should equal 20XX-10-01.
      format: date
      example: 2022-09-01
    Coverage:
      type: object
      properties:
        employee_covered:
          $ref: '#/components/schemas/employee_covered'
        spouse_covered:
          $ref: '#/components/schemas/spouse_covered'
        child_covered:
          $ref: '#/components/schemas/child_covered'
        employee_insured_amount:
          type: number
          description: 'The amount that is Guaranteed for a new applicant or the amount currently inforce, format Decimal (12,2). If the employee_covered is set to true THEN this element is required. '
          format: double
          example: 100000
        employee_excess_amount:
          type: number
          description: The coverage requested amount that required an EOI, format Decimal (12,2). If the employee_covered is set to true THEN this element is required.
          format: double
          example: 100000
        spouse_insured_amount:
          type: number
          description: The amount that is Guaranteed for a new applicant or the amount currently inforce, format Decimal (12,2). If the spouse_covered is set to true THEN this element is required.
          format: double
          example: 100000
        spouse_excess_amount:
          type: number
          description: The coverage requested amount that required an EOI, format Decimal (12,2). If the spouse_covered is set to true THEN this element is required.
          format: double
          example: 100000
        child_insured_amount:
          type: number
          description: The amount that is Guaranteed for a new applicant or the amount currently inforce, format Decimal (12,2). If the child_covered is set to true THEN this element is required.
          format: double
          example: 100000
        child_excess_amount:
          type: number
          description: The coverage requested amount that required an EOI, format Decimal (12,2). If the child_covered is set to true THEN this element is required.
          format: double
          example: 100000
        employee_effective_date:
          $ref: '#/components/schemas/employee_effective_date'
        spouse_effective_date:
          $ref: '#/components/schemas/spouse_effective_date'
        child_effective_date:
          $ref: '#/components/schemas/child_effective_date'
        employee_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
        spouse_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
        child_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
      description: All coverages needing EOI. Note, Each coverage will be added as its own separate element section (Cancer coverage is shown below) Refer to YAML spec
    DisabilityCoverage:
      type: object
      properties:
        elected:
          type: boolean
          description: If EOI is for the employee electing coverage, then the flag MUST be set to true otherwise flag should be set to false or empty
          format: "true"
          example: true
        insured_amount:
          type: number
          description: The amount that is Guaranteed for a new applicant or the amount currently inforce, format Decimal (12,2). If the elected is set to true THEN this element is required.
          format: double
          example: 450
        excess_amount:
          type: number
          description: The coverage requested amount that required an EOI, format Decimal (12,2). If the elected is set to true THEN this element is required.
          format: double
          example: 1500
        effective_date:
          type: string
          description: If the elected is set to true THEN effective date of coverage is required. This date must equal the first of the month from when the EOI link is selected. IF EOI link is selected date equals 20XX-08-25 THEN date should be displayed as 20XX-09-01 OR IF employee is newly eligible with a future effective date THEN date should be displayed with future effective date i.e. ShorTerm disability effective 20XX-10-01, THEN date should equal 20XX-10-01.
          format: date
        employee_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
    CancerCoverage:
      type: object
      properties:
        employee_covered:
          $ref: '#/components/schemas/employee_covered'
        spouse_covered:
          $ref: '#/components/schemas/spouse_covered'
        child_covered:
          $ref: '#/components/schemas/child_covered'
        tpa_benefit_code_employee:
          type: string
          description: List the TPA benefit code for Employee
          format: CANM2018
          example: CANM2018
        tpa_benefit_code_spouse:
          type: string
          description: List the TPA benefit code for spouse
          format: CANS2018
          example: CANS2018
        tpa_benefit_code_child:
          type: string
          description: List the TPA benefit code for Child
          format: CANC2018
          example: CAMC2018
        employee_effective_date:
          $ref: '#/components/schemas/employee_effective_date'
        spouse_effective_date:
          $ref: '#/components/schemas/spouse_effective_date'
        child_effective_date:
          $ref: '#/components/schemas/child_effective_date'
        employee_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
        spouse_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
        child_coverage_details:
          $ref: '#/components/schemas/CoverageDetails'
    CoverageDetails:
      type: object
      properties:
        guarantee_issue_amount:
          type: number
          description: 'Amount Guaranteed without needing EOI. The standard method for underwriting the applicant and is not required to answer health questions to qualify for amounts up to and including the guarantee issue amount. Format Decimal(12,2). This MUST show the guarantee issue amount or 0. '
          format: double
          example: 100000
        additional_amount:
          type: number
          description: The additional amount correlates with the health question that is asked when the plan has a guarantee issue amount.  The member will receive the guarantee issue, as well as the additional amount if they answer no to a specific question on the application. If they answer yes, the member will only get the guarantee issue and the underwriter will have to approve any amount over the guarantee issue amount. Note, this field is uncommon, and values MUST show 0 unless Guardian confirms a plan has additional issue amounts. Format Decimal(12,2)
          format: double
          example: 100000
        conditional_amount:
          type: number
          description: The conditional amount correlates with the conditional issue concept.  Conditional issue means that the member will receive at least the conditional amount of insurance if they answer no to a specific question on the application.  If they answer yes, then the Underwriter must approve all amounts of insurance.  The actual conditional non-medical amount should be coded in this field. Note, this field is uncommon, and values MUST show 0 unless Guardian confirms a plan has conditional amounts. Format Decimal(12,2)
          format: double
          example: 100000
        existing_amount:
          type: number
          description: The volume amount a member currently has inforce.  Format Decimal(12,2). IF employee_covered or elected equals true THEN this is element is required.
          format: double
          example: 100000
        elected_amount:
          type: number
          description: Total volume amount member is requesting for coverage. Format Decimal(12,2). IF employee_covered or elected equals true THEN this is element is required.
          format: double
          example: 100000
        max_amount:
          type: number
          description: The maximum volume amount allowed. Format Decimal(12,2) IF employee_covered or elected equals true THEN this is element is required.
          format: double
          example: 100000
        late_entrant:
          type: string
          description: If member enrolls outside of their initial enrollment period Then the value MUST = Y, otherwise display N.
          example: "Y"
        ben_desc_cd:
          type: string
          description: The benefit that ties back to the coverage details. BasicLife, VoluntaryLife, CriticalIllness. LongTerm, ShortTerm or Cancer
          example: BasicLife
        open_enrollment_ind:
          type: string
          description: If member enrolls during an open enrollment period value MUST = Y, otherwise display N.
          example: "Y"
        grandfather_ind:
          type: string
          description: 'At initial enrollment member was allowed to have coverage without EOI. (Example: take over members have existing coverage with another carrier – it was agreed to grandfather those members and not require EOI for that amount.) Value MUST display Y, otherwise display N.'
          example: "Y"
        grandfather_amount:
          type: number
          description: The initial amount allowed to have coverage without EOI. This field is required if grandfather_indicator value is Y. Format Decimal(12,2). This should equal or be greater than 0
          format: double
          example: 100000
    FirstName:
      type: string
      description: First name is required and will not be editable once in the EOI site.
      example: John
    MiddleInitial:
      type: string
      description: Middle initial will not be editable once in the EOI site.
      example: "N"
    LastName:
      type: string
      description: Last name is required and will not be editable once in the EOI site.
      example: Doe
    Weight:
      type: integer
      description: Weight in lbs, this will be an editable element within the EOI site for the individual to update.
      format: int32
      example: 160
    HeightFeet:
      type: integer
      description: Physical height feet, this will be an editable element within the EOI site for the individual to update.
      format: int32
      example: 5
    HeightInches:
      type: integer
      description: Physical height inches, this will be an editable element within the EOI site for the individual to update.
      format: int32
      example: 8
    Gender:
      type: string
      description: Gender.
      example: F
      enum:
      - M
      - F
    DOB:
      type: string
      description: Date of birth is required and specific on their birth document, the date received will not be editable once in the EOI site
      format: date
      example: 2000-08-01
    Sequence:
      type: integer
      description: Need to sequence out the number of children. Each child should have their own number.
      format: int32
      example: 1
    PersonalInformation:
      required:
      - employee
      type: object
      properties:
        employee:
          $ref: '#/components/schemas/Employee'
        spouse:
          $ref: '#/components/schemas/Spouse'
        child:
          type: array
          items:
            $ref: '#/components/schemas/Child'
    Employee:
      required:
      - dob
      - first_name
      - last_name
      - ssn1
      - ssn2
      - ssn3
      type: object
      properties:
        weight:
          $ref: '#/components/schemas/Weight'
        height_feet:
          $ref: '#/components/schemas/HeightFeet'
        height_inches:
          $ref: '#/components/schemas/HeightInches'
        first_name:
          $ref: '#/components/schemas/FirstName'
        middle_initial:
          $ref: '#/components/schemas/MiddleInitial'
        last_name:
          $ref: '#/components/schemas/LastName'
        gender:
          $ref: '#/components/schemas/Gender'
        dob:
          $ref: '#/components/schemas/DOB'
        place_of_birth:
          type: string
          description: The state where the employee was born in, this will be an editable element within the EOI site for the individual to update.
          example: KY
          enum:
          - AL
          - AK
          - AZ
          - AR
          - CA
          - CO
          - CT
          - DE
          - DC
          - FL
          - GA
          - HI
          - ID
          - IL
          - IN
          - IA
          - KS
          - KY
          - LA
          - ME
          - MD
          - MA
          - MI
          - MN
          - MS
          - MO
          - MT
          - NE
          - NV
          - NH
          - NJ
          - NM
          - NY
          - NC
          - ND
          - OH
          - OK
          - OR
          - PA
          - RI
          - SC
          - SD
          - TN
          - TX
          - UT
          - VT
          - VA
          - WA
          - WV
          - WI
          - WY
          - GU
        ssn1:
          type: string
          description: The 1st, 2nd, and 3rd numbers of the social security number.
          example: "612"
        ssn2:
          type: string
          description: The 4th and 5th numbers of the social security number.
          example: "12"
        ssn3:
          type: string
          description: The 6th, 7th, 8th and 9th numbers of the social security number.
          example: "6121"
        address_line1:
          type: string
          description: The address field allows alphabets, numbers and spaces only. If invalid characters are included, they will receive an error message in the EOI “Please enter letters and numbers only” you will not be able to update them in EOI. You will need to close out and correct the address in TPA and start EOI process again. The address will be an editable element within the EOI site for the individual to update.
          example: 1 Federal Dr
        address_line2:
          type: string
          description: The address field allows carrier over from address_line1.
          example: 'APT #2'
        city:
          type: string
          description: The city component of an address.
          example: Louisville
        state:
          type: string
          description: The state component of an address.
          example: KY
          enum:
          - AL
          - AK
          - AZ
          - AR
          - CA
          - CO
          - CT
          - DE
          - DC
          - FL
          - GA
          - HI
          - ID
          - IL
          - IN
          - IA
          - KS
          - KY
          - LA
          - ME
          - MD
          - MA
          - MI
          - MN
          - MS
          - MO
          - MT
          - NE
          - NV
          - NH
          - NJ
          - NM
          - NY
          - NC
          - ND
          - OH
          - OK
          - OR
          - PA
          - RI
          - SC
          - SD
          - TN
          - TX
          - UT
          - VT
          - VA
          - WA
          - WV
          - WI
          - WY
          - GU
        country:
          type: string
          description: The country component of an address.
          example: USA
          enum:
          - USA
          - CAN
          - OTH
        zip_code:
          type: string
          description: The zip/postal code of an address.
          example: "00612"
        other_country:
          type: string
          description: If country = OTH.
          example: OTH
        email_address:
          type: string
          description: Employee email address, this will be an editable element within the EOI site for the individual to update.
          format: email
          example: johndoe@acme.com
        home_phone1:
          type: string
          description: Employee Area code of the home phone number. This will be an editable element within the EOI site for the individual to update.
          example: "312"
        home_phone2:
          type: string
          description: Employee home phone number. This will be an editable element within the EOI site for the individual to update.
          example: "123"
        home_phone3:
          type: string
          description: Employee home phone number. This will be an editable element within the EOI site for the individual to update.
          example: "3121"
        cell_phone1:
          type: string
          description: Employee Area code of the cell phone number. This will be an editable element within the EOI site for the individual to update.
          example: "312"
        cell_phone2:
          type: string
          description: Employee cell phone number. This will be an editable element within the EOI site for the individual to update.
          example: "345"
        cell_phone3:
          type: string
          description: Employee cell phone number. This will be an editable element within the EOI site for the individual to update.
          example: "3121"
        contact_method:
          type: string
          description: Employee preferred contact method. This will be an editable element within the EOI site for the individual to update.
          example: H
          enum:
          - H
          - C
          - E
        salary:
          type: number
          description: Employee annual salary. Format Decimal(12,2) This will be an editable element within the EOI site for the individual to update.
          format: double
          example: 100000
        date_of_hire:
          type: string
          description: The Employee's date of hire, this is a required element that needs to be received.
          format: date
        employee_identifier:
          maxLength: 15
          minLength: 5
          type: string
          description: If the employee has an additional Employer issued ID, enter the value here. Alphanumeric.
          example: ABC123456789
      description: Employee demographic details.
    Spouse:
      required:
      - dob
      - first_name
      - last_name
      type: object
      properties:
        weight:
          $ref: '#/components/schemas/Weight'
        height_feet:
          $ref: '#/components/schemas/HeightFeet'
        height_inches:
          $ref: '#/components/schemas/HeightInches'
        first_name:
          $ref: '#/components/schemas/FirstName'
        middle_initial:
          $ref: '#/components/schemas/MiddleInitial'
        last_name:
          $ref: '#/components/schemas/LastName'
        gender:
          $ref: '#/components/schemas/Gender'
        dob:
          $ref: '#/components/schemas/DOB'
      description: Spouse details.
    Child:
      required:
      - dob
      - first_name
      - last_name
      type: object
      properties:
        sequence:
          $ref: '#/components/schemas/Sequence'
        weight:
          $ref: '#/components/schemas/Weight'
        height_feet:
          $ref: '#/components/schemas/HeightFeet'
        height_inches:
          $ref: '#/components/schemas/HeightInches'
        first_name:
          $ref: '#/components/schemas/FirstName'
        middle_initial:
          $ref: '#/components/schemas/MiddleInitial'
        last_name:
          $ref: '#/components/schemas/LastName'
        gender:
          $ref: '#/components/schemas/Gender'
        dob:
          $ref: '#/components/schemas/DOB'
      description: child details.
    EOIFormResponse:
      type: object
      properties:
        eoi_required:
          type: string
          description: Guarantee issue, additional, and conditional amount in the coverage details node is used to determine if EOI is required. Value can be Y or N.
          example: "Y"
          enum:
          - "Y"
          - "N"
        submit_success:
          $ref: '#/components/schemas/SubmitSuccess'
        error_responses:
          $ref: '#/components/schemas/ErrorResponses'
      description: EOI form submission response.
    SubmitSuccess:
      type: object
      properties:
        web_form_link:
          type: string
          description: URL to EOI web site. Client should access this URL from a web browser.
          example: https://www.eoisite.com/eoi/eoiwebform.process?p=hHGPabcd_abcdef==&amp;u=Ladadad_Gbv-aadadsadrew==
        transaction_id:
          $ref: '#/components/schemas/TransactionID'
      description: EOI form submission Successful
    EOIStatusResponse:
      type: object
      properties:
        eoi_coverage_status:
          $ref: '#/components/schemas/EOICoverageStatus'
      description: EOI status response.
    EOICoverageStatus:
      type: object
      properties:
        employee:
          $ref: '#/components/schemas/EmployeeCoverageStatus'
        spouse:
          $ref: '#/components/schemas/SpouseCoverageStatus'
        child:
          type: array
          items:
            $ref: '#/components/schemas/ChildCoverageStatus'
        group_policy_id:
          $ref: '#/components/schemas/GroupPolicyId'
      description: Node to return coverage status
    SpouseCoverageStatus:
      type: object
      properties:
        cov_details:
          type: array
          items:
            $ref: '#/components/schemas/CoverageStatusDetails'
        first_name:
          $ref: '#/components/schemas/FirstName'
        last_name:
          $ref: '#/components/schemas/LastName'
    ChildCoverageStatus:
      type: object
      properties:
        sequence:
          $ref: '#/components/schemas/Sequence'
        cov_details:
          type: array
          items:
            $ref: '#/components/schemas/CoverageStatusDetails'
        first_name:
          $ref: '#/components/schemas/FirstName'
        last_name:
          $ref: '#/components/schemas/LastName'
    EmployeeCoverageStatus:
      type: object
      properties:
        cov_details:
          type: array
          items:
            $ref: '#/components/schemas/CoverageStatusDetails'
        first_name:
          $ref: '#/components/schemas/FirstName'
        last_name:
          $ref: '#/components/schemas/LastName'
    GroupPolicyId:
      maxLength: 8
      type: string
      description: Group Policy Number in which the member is part of.
      example: "00123456"
    CoverageName:
      type: string
      description: "# \nAn abbreviation of the coverage name\nCoverage Name                        | -\n-------------------------------------|---\nCancer                               |\nCritical Illness                     |\nLife                                 |\nLTD                                  |\nSTD                                  |\nVoluntary LTD                        |\nVoluntary Life                       |\nVoluntary STD                        |\nVoluntary Critical Illness           |\n"
      example: Voluntary Life
    CoverageStatus:
      type: string
      description: "# \nThe status of the coverage election\nStatus Code      |    Description\n-----------------|-------------\nAPPR             | Request has been approved\nDECL             | Request has been declined\nTEST             | EOI pending testing from applicant \nCEMS             | EOI closed due to medical records requested not received \nCTST             | EOI closed due to testing not received. Can be reopened if received. \nCSUS             | EOI closed due to additional information not received. \nCEET             | EOI closed. Employee has been terminated. \nSUSP             | EOI pending requested information from applicant\nREVW             | EOI pending underwriting review. \n"
      example: APPR
    CoverageCode:
      type: string
      description: "# \nAn abbreviation of the coverage name\nCoverage Code      |    Description\n-------------------|-------------\nCAM                | Cancer\nCIL                | Critical Illness\nLIF                | Life \nLTD                | Lonhg term Disability \nSTD                | Short term Disability \nVLD                | Voluntary Long Term Diability \nVLI                | Voluntary Life \nVSD                | Voluntary Short Term Disability\nVCI                | Voluntary Critical Illness.\n"
      example: VLI
    CoverageApprovedAmount:
      type: number
      description: The amount elected. Note, when verifying status, this field will show the total amount elected. The amount should only be update if the status is APPR. format decimal(12,2)
      format: double
      example: 100000
    CoverageEffectiveDate:
      type: string
      description: The effective date of the coverage. Note, when verifying status, this field will appear with null if not approved.
      format: date
    CoverageStatusDetails:
      type: object
      properties:
        coverage_name:
          $ref: '#/components/schemas/CoverageName'
        coverage_status:
          $ref: '#/components/schemas/CoverageStatus'
        coverage_code:
          $ref: '#/components/schemas/CoverageCode'
        coverage_approved_amount:
          $ref: '#/components/schemas/CoverageApprovedAmount'
        coverage_effective_date:
          $ref: '#/components/schemas/CoverageEffectiveDate'
      description: Coverage status details
    TransactionID:
      type: string
      description: Transaction ID returned by EOI form Submit API, accepts only 1 Transaction ID.
      example: "20120702152352737374"
    ErrorResponses:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/Error'
    Error:
      required:
      - code
      - message
      type: object
      properties:
        code:
          type: string
          description: Code associated with the error
          example: "101"
        field_name:
          type: string
          description: Element that caused the error
          example: weight
        value:
          type: string
          description: Data received in the message
          example: 100kg
        message:
          type: string
          description: Error Message
          example: Please enter numbers only.
    StatusError:
      required:
      - code
      - message
      type: object
      properties:
        code:
          type: string
          description: Code associated with the error
        message:
          type: string
          description: Error Message
    Transmission:
      required:
      - Transmission_GUID
      type: object
      properties:
        Transmission_GUID:
          type: string
          description: Global unique identifier created by the orignator for this instance of the electronic transmission
          example: 030c89b1-8732-492b-b69a-2239e14264e5
        SenderName:
          type: string
          description: Name of the company sending electronic benefit records on behalf of a group
          example: ABCCompany
        SenderPlatformName:
          type: string
          description: Identifies the SenderPlatform system that is providing the data for this data set.
          example: ClientName
        ReceiverName:
          type: string
          description: Name of the company receiving electronic benefit records on behalf of a group.
          example: ABCCompany
        CreationDateTime:
          type: string
          description: UTC date and time the transmission was created.
          example: 2019-10-10T15:36:40.881
        TestProductionCode:
          type: string
          description: Indicates the elements contained in this data set are production or test data
          example: Test
        TransmissionTypeCode:
          type: string
          description: The type of data contained within the data set
          example: Fullfile
        SchemaVersionIdentifier:
          type: string
          description: Identifies the version of the standard that is being adhered to in this data set.
          example: 1.0.0
        Employer:
          type: array
          items:
            $ref: '#/components/schemas/Employer'
        Audit:
          $ref: '#/components/schemas/Audit'
    Employer:
      required:
      - MasterAgreementNumber
      type: object
      properties:
        EmployerPartyId:
          type: string
          description: A unique identifier for each instance of an Employee established within the context of a given transaction.
          example: E001
        MasterAgreementNumber:
          type: string
          description: An eight digit Carrier assigned group number with leading zeros. All individual policies or certificates at the group level would roll up to this master group number. This may be the same as the policy number.
          example: "00123456"
        EmployerName:
          type: string
          description: This is the name of the entity tied to the MasterAgreementNumber.
          example: ABC Company
        Employee:
          type: array
          items:
            $ref: '#/components/schemas/EmployeeInfo'
    EmployeeInfo:
      type: object
      properties:
        EmployeePartyId:
          type: string
          description: A unique identifier for each instance of an Employee established within the context of a given transaction.
          example: E001
        EmployeeSocialSecurityNumber:
          $ref: '#/components/schemas/SocialSecurityNumber'
        EmployeeIdentifier:
          type: string
          description: Employer or Plan Sponsor Issued Identifier.
        EmployeeIndividualTaxpayerIdentificationNumber:
          type: string
          description: A tax processing number only available for certain non-resident and resident aliens, who cannot get a Social Security Number (SSN).
        EmployeeName:
          $ref: '#/components/schemas/FullName'
        Dependent:
          type: array
          items:
            $ref: '#/components/schemas/Dependent'
        Coverage:
          type: array
          items:
            $ref: '#/components/schemas/CoverageInfo'
    FullName:
      required:
      - first_name
      - last_name
      type: object
      properties:
        first_name:
          $ref: '#/components/schemas/FirstName'
        middle_name:
          $ref: '#/components/schemas/MiddleName'
        last_name:
          $ref: '#/components/schemas/LastName'
    Dependent:
      type: object
      properties:
        DependentPartyID:
          type: string
          description: An unique identifier for each instance of an object established within the context of a given transaction.
        DependentSocialSecurityNumber:
          type: string
          description: A numerical identifier assigned to U.S. citizens and some residents to track their income.
        DependentIdentifier:
          type: string
          description: Unique identifier assigned by the employee.
        DependentIndividualTaxpayerIdentificationNumber:
          type: string
          description: A tax processing number only available for certain non-resident and resident aliens, who cannot get a Social Security Number (SSN).
        DependentName:
          $ref: '#/components/schemas/FullName'
        DependentRelationshipTypeCode:
          type: string
          description: Relationship of the dependent to the employee.
          example: Child
          enum:
          - Child
          - Grandchild
          - Other
          - Partner
          - Spouse
    CoverageInfo:
      type: object
      properties:
        CoverageId:
          type: string
          description: A unique identifier for each instance of a Coverage established within the context of a given transaction.
          example: Coverage123
        GroupPolicyNumber:
          type: string
          description: Carrier assigned number for the group policy / agreement for which the coverage may be associated.
        IndividualPolicyNumber:
          type: string
          description: Carrier specific identifier indicating the benefit/product elected by the member (this could be associated to one benefit or many)
        ProductTypeCode:
          type: string
          description: Universal identifier for a specific logical product group that may be elected by a member.
          example: Accident
          enum:
          - Accident
          - AD&D
          - Cancer
          - Critical Illness
          - Dental
          - Life
          - LTD
          - STD
          - Vision
        BenefitPlanIdentifier:
          type: string
          description: Carrier specific identifier used to denote the plan being elected by the member based on the product being purchased.
        CoverageTierCode:
          $ref: '#/components/schemas/CoverageTier'
        BenefitAmount:
          type: string
          description: Value of approved coverage, based on the defined plan rules for the enrolling person.
        BenefitFactor:
          type: string
          description: The benefit multiple or percentage factor for the defined type (e.g., approved), when the benefit is not a flat dollar amount.
        ElectedCoverage:
          $ref: '#/components/schemas/ElectedCoverage'
        CoverageInsured:
          type: array
          items:
            $ref: '#/components/schemas/CoverageInsured'
        UnderwritingStatus:
          $ref: '#/components/schemas/UnderwritingStatus'
    ElectedCoverage:
      type: object
      properties:
        ElectedCoverageTierCode:
          $ref: '#/components/schemas/CoverageTier'
        ElectedBenefitAmount:
          type: string
          description: Value of the coverage being asked for (aka elected) based on the defined plan rules for the enrolling person.
        ElectedBenefitFactor:
          type: string
          description: The benefit multiple or percentage factor for the defined type (e.g., elected), when the benefit is not a flat dollar amount.
        ElectedCoverageInsured:
          type: array
          items:
            $ref: '#/components/schemas/ElectedCoverageInsured'
    CoverageInsured:
      type: object
      properties:
        InsuredPartyID:
          type: string
          description: A unique identifier for each instance of an object established within the context of a given transaction.
          example: E001
        PrimaryInsuredIndicator:
          type: boolean
          description: A yes/no flag that indicates whether the Insured associated with the Benefit Plan is the primary insured.
          example: true
        TobaccoUseIndicator:
          type: boolean
          description: Denotes if the Employee and/or Spouse is a tobacco user.
        InsuredCoverageEffectiveDate:
          type: string
          description: Date the employee or dependent's current coverage is active due to initial or changed enrollment.
          example: 2020-01-01
        InsuredCoverageTerminationDate:
          type: string
          description: The last date that the coverage is in effect for a given insured.
    UnderwritingStatus:
      type: object
      properties:
        UnderwritingDecisionCode:
          type: string
          description: Indicates the underwriting decision made by the carrier after reviewing the evidence of insurability (EOI) and application
          enum:
          - Approved
          - Closed
          - Declined
        UnderwritingDecisionReasonCode:
          type: string
          description: Describes the reason behind the Carrier's underwriting decision.
        UnderwritingDecisionEffectiveDate:
          type: string
          description: The effective date of the coverage based on the underwriting decision; effective dates for approval decisions may be later than the effective date of the guaranteed issue at enrollment.
          example: 2020-01-01
        UnderwritingDecisionCoverageTierCode:
          $ref: '#/components/schemas/CoverageTier'
        UnderwritingApprovedBenefitAmount:
          type: string
          description: The amount that the carrier has approved for the insured, during the EOI underwriting process.
          example: "100000"
        UnderwritingApprovedBenefitFactor:
          type: string
          description: The benefit multiple or percentage factor for the defined type (e.g., approved), when the benefit is not a flat dollar amount.
        TotalBenefitAmount:
          type: string
          description: The total inforce amount that the carrier has currently approved for the insured. This is not just the dollar amount that was underwritten, but the entire approved amount.
        TotalBenefitFactor:
          type: string
          description: The total benefit multiple or percentage factor that the carrier has currently approved for the insured. This is not just the factor that was underwritten, but the entire approved factor.
        EvidenceChannelCode:
          type: string
          description: The medium for initial questions and answers requested by the Carrier.
          enum:
          - ChildOnly
          - Employee
        ApplicationStatusCode:
          type: string
          description: Describes the status of the application with the Carrier.
          enum:
          - Completed
          - NotStarted
          - NotSubmitted
          - Pending
        ApplicationStatusReasonCode:
          type: string
          description: Describes the why behind the ApplicationStatusCode, which may be used by the Technology Partner to further describe to the member a more granular definition of where their EOI application is at in the process.
          enum:
          - CarrierIsReviewing
          - IncompleteSubmission
          - WaitingOnApplicantAction
        ApplicationStatusDateTime:
          type: string
          description: Date and time the EOI Application status was set.
    ElectedCoverageInsured:
      type: object
      properties:
        InsuredPartyID:
          type: string
          description: An unique identifier for each instance of an object established within the context of a given transaction.
        PrimaryInsuredIndicator:
          type: boolean
          description: A flag that indicates whether the Insured associated with the Benefit Plan is the primary insured.
        TobaccoUseIndicator:
          type: boolean
          description: Denotes if the Employee and/or Spouse is a tobacco user.
        InsuredCoverageEffectiveDate:
          type: string
          description: Date the employee or dependent's current coverage is active due to initial or changed enrollment.
        InsuredCoverageTerminationDate:
          type: string
          description: The last date that the coverage is in effect for a given insured.
    CoverageTier:
      type: string
      description: Universal level of coverage being elected by the employee (including dependents) or provided by the group based on the selected benefit plan type.
      example: Employee
      enum:
      - ChildOnly
      - Employee
      - EmployeeChildren
      - EmployeeDependent
      - Employee2Dependents
      - EmployeeFamily
      - EmployeeSpouse
      - SpouseChildren
      - SpouseDependent
      - SpouseOnly
    Audit:
      type: object
      properties:
        AuditId:
          type: string
          description: A unique identifier created by the originator for this instance of the electronic transmission
        EmployerRecordQuantity:
          type: integer
          description: A count of Employer records included in the electronic transmission.
        EmployeeRecordQuantity:
          type: integer
          description: A count of Employee records included in the electronic transmission.
        DependentRecordQuantity:
          type: integer
          description: A count of Dependent records included in the electronic transmission.
        CoverageRecordQuantity:
          type: integer
          description: A count of Coverage records included in the electronic transmission.
        UnderwritingStatusRecordQuantity:
          type: integer
          description: A count of UnderwritingDecision records included in the electronic transmission.
    MiddleName:
      type: string
      description: The additional names given to a person, usually at birth, and which appear sequentially between the first name and last name.
      example: M
    SocialSecurityNumber:
      type: string
      description: A numerical identifier assigned to U.S. citizens and some residents to track their income. Guardian mandatory field.
      example: "123456789"
    eoistatusnotification_eoisMetaData:
      required:
      - payloadType
      - receiverName
      - schemaVersionIdentifier
      - senderName
      - senderPlatformName
      - transmissionGUID
      type: object
      properties:
        transmissionGUID:
          type: string
          description: Global Unique identifier created by the originator for this LDExEOIS payload.
          format: uuid
          example: d290f1ee-6c54-4b01-90e6-d701748f0851
        senderName:
          type: string
          description: Name of the company sending electronic benefit records in this LDExEOIS payload. May be required to be a value recognized by the Receiver.
          example: Guardian Life Insurace Company
        senderPlatformName:
          type: string
          description: Identifies the Sender's system that is providing the data for this LDExEOIS payload.
          example: Policy API
        receiverName:
          type: string
          description: Name of the company receiving LDExEOIS payload. May be required to be a value recognized by the Receiver.
          example: insurance carrier name
        schemaVersionIdentifier:
          type: string
          description: Identifies the version of the standard that is being adhered to in this LDExEOIS payload.
          example: 1.0.2020.12.04
        payloadType:
          type: string
          example: JSON
          enum:
          - XML
          - JSON
        compression:
          type: string
          enum:
          - None
          - Zip
      description: Meta data describing LDExEOIS payload. Describes payload type (XML or JSON), spec version, and information about the sender and receiver.
    eoistatusnotification_body:
      required:
      - eoisMetaData
      - eoisPayload
      properties:
        eoisMetaData:
          $ref: '#/components/schemas/eoistatusnotification_eoisMetaData'
        eoisPayload:
          type: string
          description: Payload is in the Transmission Schema
          example: '{"Transmission_GUID":"ffb15f96-7ed2-4cd4-b295-f093fe228577","SenderName":"The Guardian Life Insurance Company of America" ...'
  parameters:
    transaction_id:
      name: transaction_id
      in: path
      description: Transaction ID returned by EOI form Submit API, accepts only 1 Transaction ID.
      required: true
      style: simple
      explode: false
      schema:
        type: string
x-tagGroups:
- name: API Reference
  tags:
  - EOI
  - Push Notification
- name: Models
  tags:
  - eoi_model
  - coverage_model
  - personal_info_model
  - error_model
