openapi: 3.0.0
info:
  title: travel-qa.api.lifeishard.ro
  description: TravelApi documentation
  contact:
    email: api.support@lifeishard.ro
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  version: '1.0'
servers:
  - url: https://travel.api.lifeishard.ro
    description: Production server
  - url: https://travel-qa.api.lifeishard.ro
    description: Development server
paths:
  /nomenclature/country:
    get:
      tags:
        - Nomenclature
      summary: List of countries
      operationId: 5be125a85101b27af76964f705123fcc
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of countries
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        id:
                          type: string
                          example: '1'
                        name:
                          type: string
                          example: GRECIA
                        iso2:
                          type: string
                          example: GR
                        iso3:
                          type: integer
                          example: GRC
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/county:
    get:
      tags:
        - Nomenclature
      summary: List of countries
      operationId: 34c277fe7661e94ecd088ccf318557a1
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of countries
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        county_code:
                          type: string
                          example: CJ
                        name:
                          type: string
                          example: CLUJ
                        siruta:
                          type: integer
                          example: '127'
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/locality/{county_code}:
    get:
      tags:
        - Nomenclature
      summary: List of localities filtered by county code
      operationId: 91c90c925243b8196dd110e3bad922b0
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
        - name: county_code
          in: path
          description: County code
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: List of localities
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        nume:
                          type: string
                          example: CLUJ-NAPOCA
                        cod_judet:
                          type: string
                          example: CJ
                        cod_siruta:
                          type: integer
                          example: '54984'
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/travel-purpose:
    get:
      tags:
        - Nomenclature
      summary: List of travel purposes
      operationId: f4eb231519bf9c48d83110b2797d2e18
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of travel purposes
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      type: string
                      example: travel
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/transportation-method:
    get:
      tags:
        - Nomenclature
      summary: List of transportation methods
      operationId: 61b5a9a428237ed811b39dfd18b2858a
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of transportation methods
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      type: string
                      example: plane
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/insured-sum:
    get:
      tags:
        - Nomenclature
      summary: List of insured amounts
      operationId: 6c21f9debc1a6fd5cc850e35871fd796
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of insured amounts
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      type: string
                      example: '10000'
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /async-offer:
    post:
      tags:
        - Products
      summary: Generate offer asynchronously
      description: >-
        This endpoint allows clients to submit offer requests without waiting
        for immediate processing.<br />The client will receive a correlation ID
        that can be used to track the status of the request.
      operationId: asyncOffer
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        description: JSON format body
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncOfferRequest'
      responses:
        '200':
          description: Async offer response
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: integer
                    example: '200'
                  data:
                    properties:
                      correlation_id:
                        description: Correlation ID
                        type: string
                        example: c1e7b3d0-7b7b-4b7b-8b7b-9b7b7b7b7b7b
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /quick-offer:
    post:
      tags:
        - Products
      summary: Generate quick offer
      description: Generate a quick offer based on the input fields
      operationId: getQuickOffer
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        description: JSON format body
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuickQuotationRequest'
      responses:
        '200':
          description: Offer response
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: integer
                    example: '200'
                  data:
                    properties:
                      provider:
                        properties:
                          organization:
                            properties:
                              businessName:
                                type: string
                                example: NUME_SAS
                            type: object
                        type: object
                      product:
                        properties:
                          name:
                            type: string
                            example: PRODUS_SAS
                        type: object
                      offers:
                        type: array
                        items:
                          $ref: '#/components/schemas/QuickOffer'
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /offer:
    post:
      tags:
        - Products
      summary: Generate offer
      description: Generate an offer based on the input fields
      operationId: getOffer
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        description: JSON format body
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiQuotationRequest'
      responses:
        '200':
          description: Offer response
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: integer
                    example: '200'
                  data:
                    properties:
                      provider:
                        properties:
                          organization:
                            properties:
                              businessName:
                                type: string
                                example: NUME_SAS
                            type: object
                        type: object
                      product:
                        properties:
                          name:
                            type: string
                            example: PRODUS_SAS
                        type: object
                      offers:
                        type: array
                        items:
                          $ref: '#/components/schemas/Offer'
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /offer/{id}:
    get:
      tags:
        - Products
      summary: Offer PDF file
      description: Retrive offer PDF file
      operationId: getOfferPdf
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: Offer identification number
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Offer PDF file
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: integer
                    example: '200'
                  data:
                    properties:
                      files:
                        type: array
                        items:
                          $ref: '#/components/schemas/File'
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /policy:
    get:
      tags:
        - Products
      summary: Policy PDF file
      description: Retrieve policy PDF file
      operationId: getPolicyPdfBySeriesAndNumber
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
        - name: series
          in: query
          description: Policy series
          required: true
          schema:
            type: string
          example: AXT
        - name: number
          in: query
          description: Policy number
          required: true
          schema:
            type: string
          example: '1234567890'
      responses:
        '200':
          description: Policy PDF file
          content:
            application/json:
              schema:
                properties:
                  data:
                    properties:
                      files:
                        type: array
                        items:
                          $ref: '#/components/schemas/File'
                    type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
    post:
      tags:
        - Products
      summary: Issue offer
      description: Issuing a selected offer
      operationId: getPolicy
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        description: JSON formatted body
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiPolicyRequest'
      responses:
        '200':
          description: Response
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: integer
                    example: '200'
                  data:
                    properties:
                      policies:
                        type: array
                        items:
                          $ref: '#/components/schemas/Policy'
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /policy/{id}:
    get:
      tags:
        - Products
      summary: Policy PDF file
      description: Retrieve policy PDF file
      operationId: getPolicyPdf
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
        - name: id
          in: path
          description: Policy identification number
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Policy PDF file
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: integer
                    example: '200'
                  data:
                    properties:
                      files:
                        type: array
                        items:
                          $ref: '#/components/schemas/File'
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/allianz/voiaj/organizations:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of organizations
      operationId: c8bbb5b93b44018b0f42ca8b898c9a42
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of organizations
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        id:
                          type: number
                          example: '7866211'
                        name:
                          type: string
                          example: IMNOS AAIIILLMNNOS
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/allianz-unit/travel/plane-companies:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of plane companies
      operationId: 4192b60431d58df908c8ec1720e0b39b
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of plane companies
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: number
                          example: '100'
                        name:
                          type: string
                          example: Alte companii
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/eurolife/travel/managers:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of managers
      operationId: 662fa70c94ff25bdd38c963d912b7028
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of managers
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        id:
                          type: string
                          example: '1'
                        name:
                          type: string
                          example: Eurolife0
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/generali/travel/extreme-sports:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of extreme sports
      operationId: fb475e4cd15ceffb539db6a247879f0a
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of extreme sports
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: number
                          example: '2'
                        name:
                          type: string
                          example: Adventure race
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/phoenix/travel/trip-purposes:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of travel trip purposes
      operationId: b13a29bb4cc7c780e646031ecf0cd98b
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of travel trip purposes
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        id:
                          type: number
                          example: '3'
                        name:
                          type: string
                          example: Lucrativ
                        sector:
                          type: string
                          example: Sectorul agricol
                        subType:
                          type: string
                          example: Agricultura
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/phoenix/travel/packages:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of travel packages sums
      operationId: 4efde724f9b41e7041a2a5eecad9744c
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of travel packages sums
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        name:
                          type: string
                          example: STANDARD
                        insuredSum:
                          type: integer
                          example: '20000'
                        insuredSumCurrency:
                          type: string
                          example: EUR
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/phoenix/travel/age-groups:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of travel age groups
      operationId: 9dca433a992fbb451197dbd73380e223
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of travel age groups
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        fromAge:
                          type: integer
                          example: '65'
                        toAge:
                          type: integer
                          example: '70'
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/phoenix/travel/package-covers:
    post:
      tags:
        - Insurer Nomenclatures
      summary: List of available travel packages and their coverages
      operationId: f503bffa5cfc52f81dc311fdda3956fc
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NomenclatureProviderAuthorization'
      responses:
        '200':
          description: List of travel age groups
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        name:
                          type: string
                          example: PREMIUM
                        covers:
                          type: array
                          items:
                            properties:
                              text:
                                type: string
                                example: Transportul medical
                              sumInsured:
                                type: string
                                example: '10000'
                            type: object
                      type: object
                type: object
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /auth:
    post:
      tags:
        - Authentication
      summary: Authenticate
      description: Authenticate an account by account/password
      operationId: authPost
      parameters:
        - name: account
          in: query
          description: Account
          required: true
          schema:
            type: string
        - name: password
          in: query
          description: Password
          required: true
          schema:
            type: string
      responses:
        '200':
          $ref: '#/components/responses/ApiCoreLibAuthResponse200'
    delete:
      tags:
        - Authentication
      summary: Deautenticate
      description: Deautenticate an existing and valid auth token
      operationId: authDelete
      responses:
        '202':
          description: Deleted
    patch:
      tags:
        - Authentication
      summary: Renew token
      description: Renew an authentication token
      operationId: authPatch
      parameters:
        - name: Token
          in: header
          description: >-
            The Refresh token received from the `POST /auth` or `PATCH /auth`
            endpoint's response field name `refresh_token`.
          required: true
          schema:
            type: string
            example: Refresh [refresh_token]
          example: Refresh [refresh_token]
      responses:
        '200':
          $ref: '#/components/responses/ApiCoreLibAuthResponse200'
components:
  schemas:
    NomenclatureProviderAuthorization:
      title: NomenclatureProviderAuthorization
      properties:
        provider:
          required:
            - authentication
          properties:
            authentication:
              $ref: '#/components/schemas/Authentication'
          type: object
      type: object
    ApiQuotationRequest:
      title: ApiQuotationRequest
      description: Request an offer
      required:
        - provider
        - product
      properties:
        provider:
          required:
            - organization
            - authentication
          properties:
            organization:
              required:
                - businessName
              properties:
                businessName:
                  type: string
                  example: eurolife
              type: object
            authentication:
              $ref: '#/components/schemas/Authentication'
          type: object
        product:
          required:
            - name
            - currency
            - travel
            - policyholder
          properties:
            name:
              type: string
              example: Travel
            currency:
              type: string
              enum:
                - RON
              example: RON
            travel:
              $ref: '#/components/schemas/Travel'
            customer:
              $ref: '#/components/schemas/Person'
            policyholder:
              oneOf:
                - $ref: '#/components/schemas/Person'
                - type: array
                  items:
                    $ref: '#/components/schemas/Person'
            additionalData:
              properties:
                rafCode:
                  description: RAF code. Must have the format RAFNNNNN (max. 10 digits).
                  type: string
                  example: RAF12345
              type: object
              anyOf:
                - $ref: '#/components/schemas/AllianzVoiajQuotationRequest'
                - $ref: '#/components/schemas/AllianzMyTravelQuotationRequest'
                - $ref: '#/components/schemas/AsiromEasyTravelQuotationRequest'
                - $ref: '#/components/schemas/EurolifeTravelQuotationRequest'
                - $ref: '#/components/schemas/GeneraliTravelQuotationRequest'
                - $ref: '#/components/schemas/GroupamaTravelHealthQuotationRequest'
                - $ref: '#/components/schemas/SignalIdunaTravelQuotationRequest'
                - $ref: '#/components/schemas/SignalIdunaPostTravelQuotationRequest'
                - $ref: '#/components/schemas/UniqaTravelQuotationRequest'
                - $ref: >-
                    #/components/schemas/OmniasigMedicasAdditionalDataQuotationRequest
                - $ref: '#/components/schemas/MondialAssistanceTravelQuotationRequest'
                - $ref: >-
                    #/components/schemas/ColonnadeTravelAdditionalDataQuotationRequest
                - $ref: '#/components/schemas/PhoenixTravelQuotationRequest'
          type: object
        agreements:
          $ref: '#/components/schemas/Agreements'
      type: object
    ApiPolicyRequest:
      title: ApiPolicyRequest
      description: Policy issuance request
      required:
        - offerId
        - payment
      properties:
        offerId:
          type: integer
          example: '23'
        payment:
          $ref: '#/components/schemas/Payment'
        additionalData:
          description: If the product does not exist in the list, this field is ignored.
          anyOf:
            - $ref: '#/components/schemas/AllianzVoiajTransformOfferRequest'
            - $ref: '#/components/schemas/SignalIdunaTravelTransformOfferRequest'
            - $ref: '#/components/schemas/OmniasigSafeTravelTransformOfferRequest'
      type: object
    Authentication:
      required:
        - account
        - password
        - code
      properties:
        account:
          type: string
          example: '123456'
        password:
          type: string
          example: 123cuidd#
        code:
          type: string
          example: ICJ1345
      type: object
    Travel:
      required:
        - startDate
        - duration
        - purpose
        - areaOfValidity
        - transportationMethod
      properties:
        startDate:
          type: string
          format: date
          example: '2021-01-01'
        duration:
          description: Number of days
          type: number
          example: '7'
        notes:
          description: Notes
          type: string
        purpose:
          description: Accepts any value from nomenclature `/nomenclature/travel-purpose`
          type: string
          enum:
            - travel
            - business
            - work
            - studies
          example: travel
        areaOfValidity:
          description: >-
            `2` => destination country must be specified in the `destination`
            field<br />`3` => Europe<br />`4` => World Wide (including US and
            Canada)<br />`5` => World Wide (excluding US and Canada)
          type: number
          enum:
            - 2
            - 3
            - 4
            - 5
          example: '2'
        destination:
          description: >-
            Required if `areaOfValidity` = `2`.<br />Accepts any `iso2` code
            from nomenclature `/nomenclature/country`
          type: string
        transportationMethod:
          description: >-
            Accepts any value from nomenclature
            `/nomenclature/transportation-method`
          type: string
          enum:
            - plane
            - plane_rental_car
            - personal_car
            - ship
            - bus
            - other
          example: personal_car
        groupType:
          type: string
          enum:
            - individual
            - group
            - family
          example: individual
        coverage:
          $ref: '#/components/schemas/Coverages'
        intermediaryEmail:
          description: The email address of the agent; must be valid email address.
          type: string
          example: email@test.com
      type: object
    Coverages:
      required:
        - base
      properties:
        base:
          required:
            - isIncluded
            - sumInsured
          properties:
            isIncluded:
              description: Must be `true`
              type: boolean
              example: true
            sumInsured:
              description: Accepts any value from nomenclature `/nomenclature/insured-sum`
              type: number
              enum:
                - 10000
                - 30000
                - 50000
              example: '50000'
          type: object
        baggageLoss:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            sumInsured:
              description: Required if `baggageLoss`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        sports:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            sumInsured:
              description: Required if `sports`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        flightDelay:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            sumInsured:
              description: Required if `flightDelay`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        travelLiability:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            sumInsured:
              description: Required if `travelLiability`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        stornoCosts:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            sumInsured:
              description: Required if `stornoCosts`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        roadsideAssistance:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            vehicle:
              $ref: '#/components/schemas/Vehicle'
          type: object
      type: object
    ResponseCoverages:
      properties:
        base:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
        baggageLoss:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
        sports:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
        flightDelay:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
        travelLiability:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
        stornoCosts:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
        roadsideAssistance:
          properties:
            sumInsured:
              type: number
              example: '50000'
            currency:
              type: string
              example: EUR
          type: object
      type: object
    Vehicle:
      required:
        - vin
        - licensePlate
      properties:
        brand:
          type: string
          example: Dacia
        model:
          type: string
          example: Logan
        vin:
          type: string
          example: 23ewfcsdcfsdcsd88
        licensePlate:
          type: string
          example: CJ88TGH
        seats:
          type: number
          example: '5'
        totalWeight:
          type: number
          example: '1782'
        yearOfConstruction:
          type: number
          example: '2014'
      type: object
    Person:
      required:
        - taxId
      properties:
        businessName:
          description: Business name (if the person is a legal entity)
          type: string
          example: Life is Hard
        companyRegistryNumber:
          description: Company registration number (if the person is a legal entity)
          type: string
          example: J12/1403/2004
        lastName:
          description: >-
            Individual person's last name<br />Required if `businessName` is not
            present
          type: string
          example: Pop
        firstName:
          description: >-
            Individual person's first name<br />Required if `businessName` is
            not present
          type: string
          example: Vasile
        isForeignPerson:
          type: boolean
          example: 'false'
        taxId:
          description: CNP / CUI
          type: string
          example: '1910716000000'
        nationality:
          description: >-
            Required if `isForeignPerson` is `true`<br />Accepts any `iso2` code
            from nomenclature `/nomenclature/country`
          type: string
          example: RO
        citizenship:
          description: >-
            Required if `isForeignPerson` is `true`<br />Accepts any `iso2` code
            from nomenclature `/nomenclature/country`
          type: string
          example: RO
        gender:
          description: >-
            Required if `isForeignPerson` is `true`<br />`m` => male, `f` =>
            female
          type: string
          enum:
            - m
            - f
          example: m
        birthdate:
          description: Required if `isForeignPerson` is `true`
          type: string
          format: date
          example: '2021-01-01'
        email:
          type: string
          example: email@email.ro
        mobileNumber:
          type: number
          example: '0744444444'
        identification:
          $ref: '#/components/schemas/Identification'
        address:
          $ref: '#/components/schemas/Address'
        correspondenceAddress:
          $ref: '#/components/schemas/Address'
      type: object
    Identification:
      properties:
        idType:
          type: string
          enum:
            - CI
            - PASSPORT
          example: CI
        idNumber:
          type: string
          example: CJ123456
        issueAuthority:
          type: string
          example: SPCLEP Cluj
        issueDate:
          type: string
          example: '2022-11-24'
      type: object
    Address:
      required:
        - county
        - city
        - cityCode
        - street
        - houseNumber
      properties:
        country:
          description: Accepts any `iso2` code from nomenclature `/nomenclature/country`
          type: string
          example: RO
        county:
          description: Accepts any `code` from nomenclature `/nomenclature/county`
          type: string
          example: CJ
        city:
          description: >-
            Accepts any `name` from nomenclature
            `/nomenclature/locality/{county_code}`
          type: string
          example: Cluj-Napoca
        cityCode:
          description: >-
            Accepts any `siruta` from nomenclature
            `/nomenclature/locality/{county_code}`
          type: number
          example: '54984'
        street:
          type: string
          example: Principala
        houseNumber:
          type: string
          example: 19-21
        building:
          type: string
          example: A1
        staircase:
          type: string
          example: '1'
        apartment:
          type: string
          example: '12'
        floor:
          type: string
          example: '3'
        postcode:
          type: number
          example: '400356'
      type: object
    Agreements:
      description: These agreements apply for all customers/policyholders.
      properties:
        gdpr:
          description: Person agrees with the European GDPR
          type: boolean
          example: 'true'
        marketing:
          description: Person agrees with marketing policies
          type: boolean
          example: 'true'
      type: object
    Payment:
      required:
        - method
        - currency
        - amount
        - date
        - documentNumber
      properties:
        method:
          type: string
          enum:
            - receipt
            - broker receipt
            - payment order
            - broker payment order
            - pos
          example: receipt
        currency:
          type: string
          example: RON
        amount:
          type: number
          example: '89.76'
        date:
          description: 'Format: `Y-m-d`'
          type: string
          example: '2022-09-21'
        documentNumber:
          description: Payment document number|Receipt serial number|RRN for POS
          type: string
          example: XY32344
      type: object
    ResponsePayment:
      properties:
        method:
          type: string
          example: receipt
        currency:
          type: string
          example: RON
        amount:
          type: number
          example: '89.76'
        date:
          type: string
          example: '2022-09-21'
        documentNumber:
          type: string
          example: XY32344
      type: object
    Package:
      properties:
        code:
          type: string
          example: TRAVEL
        name:
          type: string
          example: TRAVLE_01
      type: object
    PremiumRate:
      properties:
        currency:
          type: string
          example: EUR
        amount:
          type: number
          example: '23.16'
        exchangeRate:
          type: number
          example: '4.9219'
      type: object
    Offer:
      properties:
        package:
          $ref: '#/components/schemas/Package'
        offerId:
          type: number
          example: '12'
        premiumAmount:
          description: Premium amount defined in the currency returned in `currency` field
          type: number
          example: '89.76'
        currency:
          type: string
          example: RON
        premiumRates:
          type: array
          items:
            $ref: '#/components/schemas/PremiumRate'
        payment:
          properties:
            amount:
              type: number
              example: '89.76'
            currency:
              type: string
              example: RON
          type: object
        coverage:
          $ref: '#/components/schemas/ResponseCoverages'
        startDate:
          type: string
          example: '2022-09-25'
        endDate:
          type: string
          example: '2023-09-24'
        productInformationDocument:
          type: string
          example: https://www.exmaple.org/pid.pdf
        termsAndConditions:
          type: string
          example: https://www.exmaple.org/toc.pdf
        notes:
          description: Notes related to the generated offer
          type: string
        providerResponse:
          type: object
      type: object
    Policy:
      properties:
        provider:
          properties:
            organization:
              properties:
                businessName:
                  type: string
                  example: NUME_SAS
              type: object
          type: object
        product:
          properties:
            name:
              type: string
              example: PRODUS_SAS
          type: object
        policyId:
          type: number
          example: '12'
        series:
          type: string
          example: RSXX
        number:
          type: number
          example: '13124'
        payment:
          $ref: '#/components/schemas/ResponsePayment'
        startDate:
          type: string
          example: '2022-09-25'
        endDate:
          type: string
          example: '2023-09-24'
        premiumAmount:
          type: number
          example: '89.76'
        currency:
          type: string
          example: RON
        providerResponse:
          type: object
      type: object
    File:
      properties:
        type:
          type: string
          example: Offer
        name:
          type: string
          example: offer-2149be26-d38d-40e4-ad07-1ccb384aadec.pdf
        content:
          description: base64 encoded
          type: string
          example: JVBERi0xLj...
      type: object
    InsurerProduct:
      required:
        - provider
        - product
      properties:
        provider:
          required:
            - organization
          properties:
            organization:
              required:
                - businessName
              properties:
                businessName:
                  type: string
                  example: eurolife
              type: object
            authentication:
              $ref: '#/components/schemas/Authentication'
          type: object
        product:
          required:
            - name
          properties:
            name:
              type: string
              example: Travel
          type: object
      type: object
    AsyncOfferRequest:
      title: AsyncOfferRequest
      description: Asynchronous offer request
      required:
        - insurerProductList
        - product
      properties:
        insurerProductList:
          type: array
          items:
            $ref: '#/components/schemas/InsurerProduct'
        product:
          description: >-
            Almost same as `POST /offer` request’s `product` parameter (check
            the manual for details)
          type: object
        agreements:
          $ref: '#/components/schemas/Agreements'
        allowGroupOffer:
          description: Allow group offer
          type: boolean
          example: 'true'
        timeout:
          description: Timeout in seconds
          type: number
          example: '300'
        callbackUrl:
          description: Callback URL, required if callback URL is not configured on account
          type: string
          example: https://www.example.org/callback
      type: object
    QuickQuotationRequest:
      title: QuickQuotationRequest
      description: Request a quick offer
      required:
        - provider
        - product
      properties:
        provider:
          required:
            - organization
          properties:
            organization:
              required:
                - businessName
              properties:
                businessName:
                  type: string
                  example: eurolife
              type: object
            authentication:
              $ref: '#/components/schemas/Authentication'
          type: object
        product:
          required:
            - name
            - currency
            - travel
            - policyholder
          properties:
            name:
              type: string
              example: Travel
            currency:
              type: string
              enum:
                - RON
              example: RON
            travel:
              $ref: '#/components/schemas/Travel'
            policyholder:
              oneOf:
                - $ref: '#/components/schemas/QuickOfferPerson'
                - type: array
                  items:
                    $ref: '#/components/schemas/QuickOfferPerson'
            additionalData:
              properties:
                rafCode:
                  description: RAF code. Must have the format RAFNNNNN (max. 10 digits).
                  type: string
                  example: RAF12345
              type: object
              anyOf:
                - $ref: '#/components/schemas/EurolifeTravelQuickQuotationRequest'
                - $ref: '#/components/schemas/SignalIdunaTravelQuickQuotationRequest'
                - $ref: '#/components/schemas/AllianzVoiajQuickQuotationRequest'
                - $ref: >-
                    #/components/schemas/GroupamaTravelHealthQuickQuotationRequest
                - $ref: >-
                    #/components/schemas/MondialAssistanceTravelQuickQuotationRequest
                - $ref: '#/components/schemas/UniqaQuickQuotationRequest'
          type: object
      type: object
    QuickOfferPerson:
      required:
        - birthdate
      properties:
        lastName:
          type: string
          example: Pop
        firstName:
          type: string
          example: Vasile
        taxId:
          description: CNP / CUI
          type: string
          example: '1910716000000'
        birthdate:
          type: string
          format: date
          example: '2021-01-01'
      type: object
    QuickOffer:
      properties:
        package:
          $ref: '#/components/schemas/Package'
        premiumAmount:
          description: Premium amount defined in the currency returned in `currency` field
          type: number
          example: '89.76'
        currency:
          type: string
          example: RON
        premiumRates:
          type: array
          items:
            $ref: '#/components/schemas/PremiumRate'
        payment:
          properties:
            amount:
              type: number
              example: '89.76'
            currency:
              type: string
              example: RON
          type: object
        coverage:
          $ref: '#/components/schemas/ResponseCoverages'
        startDate:
          type: string
          example: '2022-09-25'
        endDate:
          type: string
          example: '2023-09-24'
        productInformationDocument:
          type: string
          example: https://www.exmaple.org/pid.pdf
        termsAndConditions:
          type: string
          example: https://www.exmaple.org/toc.pdf
        notes:
          description: Notes related to the generated offer
          type: string
        providerResponse:
          type: object
      type: object
    AllianzVoiajQuickQuotationRequest:
      properties:
        coverage:
          properties:
            personalAccidents:
              required:
                - isIncluded
              properties:
                isIncluded:
                  type: boolean
                  example: true
                sumInsured:
                  description: Required if `personalAccidents`.`isIncluded` is `true`
                  type: number
                  example: '50000'
                stornoCosts:
                  description: Required if `coverage.stornoCosts.isIncluded` is `true`
                  required:
                    - startDate
                  properties:
                    startDate:
                      type: string
                      format: date
                      example: '2024-05-20'
                  type: object
              type: object
          type: object
      type: object
    AllianzVoiajCoverageAdditionalData:
      properties:
        stornoCosts:
          properties:
            travelStartDate:
              description: >-
                Required if
                `product`.`travel`.`coverage`.`stornoCosts`.`isIncluded` is
                `true`
              type: string
              format: date
              example: '2021-01-01'
          type: object
        personalAccidents:
          required:
            - isIncluded
          properties:
            isIncluded:
              type: boolean
              example: true
            sumInsured:
              description: Required if `personalAccidents`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
      type: object
    AllianzVoiajQuotationRequest:
      properties:
        product:
          properties:
            coordinatorId:
              description: From the issurer
              type: number
              example: '76241'
            recommenderTaxId:
              description: CNP
              type: string
              example: '1900105125781'
            protocolId:
              description: From the issurer
              type: number
              example: '222'
          type: object
        coverage:
          $ref: '#/components/schemas/AllianzVoiajCoverageAdditionalData'
        medic:
          $ref: '#/components/schemas/Person'
      type: object
    AllianzVoiajTransformOfferRequest:
      title: AllianzVoiajTransformOfferRequest
      properties:
        numberOfInstallments:
          description: 'Accepted value is `1`, if not set default value is `1`. '
          type: number
          example: '1'
      type: object
    AllianzMyTravelQuotationRequest:
      properties:
        product:
          required:
            - insurerId
            - coordinatorId
          properties:
            insuranceType:
              description: Defaults to `one-trip` if not set.
              type: string
              enum:
                - one-trip
                - multi-trip
              example: one-trip
            coordinatorId:
              description: |-
                Value received from the insurer.
                 * Value `insurerId` from <b>GET /nomenclature/allianz/mytravel/organisations</b> endpoint response.
              type: number
              example: '7866331'
            travel:
              properties:
                reservationDate:
                  description: >-
                    Reservation date for storno. Requitred if `stornoCosts` is
                    included in `coverage`.
                  type: string
                  format: date
                  example: '2023-01-01'
                coverage:
                  properties:
                    tripInterruption:
                      required:
                        - isIncluded
                      properties:
                        isIncluded:
                          type: boolean
                          example: true
                        sumInsured:
                          type: number
                          example: '50000'
                      type: object
                  type: object
              type: object
          type: object
      type: object
    AllianzUnitTravelQuotationRequest:
      properties:
        payment:
          properties:
            method:
              type: string
              enum:
                - receipt
                - broker receipt
                - payment order
                - broker payment order
                - pos
              example: receipt
          type: object
        travel:
          properties:
            fieldOfActivity:
              type: string
              enum:
                - '1'
                - A1
                - A2
                - A3
            transitList:
              description: >-
                Array of iso2 codes of transited countries, the first country is
                considered the destination if `product.travel.destination` is
                not set
              type: array
              items:
                description: >-
                  Country code<br />Accepts any `iso2` code from nomenclature
                  `/nomenclature/country`
                type: string
                example: FR
            typeOfTravelByPlane:
              type: string
              enum:
                - curse de linie
                - curse lowcost
                - curse charter
            planeCompany:
              description: >-
                accepted values from
                `/nomenclature/allianz-unit/travel/plane-companies` (cod)
              type: string
              example: '2'
            policyholderInRomania:
              description: >-
                asserts if the main policyholder (first adult) is in Romania at
                the time of issuing, defaults to `true`
              type: boolean
              example: 'true'
            coverage:
              properties:
                goods:
                  properties:
                    isIncluded:
                      description: Coverage for home goods for the duration of the trip.
                      type: boolean
                      example: 'false'
                  type: object
              type: object
          type: object
      type: object
    AsiromEasyTravelQuotationRequest:
      properties:
        discount:
          description: Discount percent value, max 90
          type: number
          example: '5'
        discountReason:
          description: Discount reason, required if `discount > 0`
          type: string
          example: '5'
        multiTrip:
          description: Multitrip
          type: boolean
          example: 'false'
        partnershipAuctionAgreement:
          properties:
            policyType:
              type: string
              enum:
                - Auction
                - Leasing and partnerships
                - Simple
                - Affinity
              example: Auction
            leasingType:
              type: string
              enum:
                - Financial leasing
                - Operational leasing
                - Other partnerships
              example: Operational leasing
            auctionNumber:
              type: string
              example: LX111
            isPartnership:
              type: boolean
              example: 'false'
            partnershipNumber:
              type: string
              example: X112
          type: object
        insuredInCountry:
          description: Defaults to `true` if not set.
          type: boolean
          example: 'true'
      type: object
    ColonnadeCustomerAdditionalData:
      properties:
        vatPayer:
          description: Required if product.customer.businessName is present
          type: boolean
          example: true
      type: object
    ColonnadeCoverageAdditionalData:
      properties:
        stornoCosts:
          properties:
            chronicIllnessIncluded:
              type: boolean
              example: false
            currency:
              description: |-
                Implicit value if not present is EUR.
                 *              If the storno coverage is in RON, expected value is RON
              type: string
              example: EUR
            purchaseDateOfTrip:
              description: |-
                In case of storno coverages / package,
                 *              Colonnade needs to receive the purchase date for the trip.
              type: string
              format: date
              example: '2018-06-12'
          type: object
        sports:
          properties:
            winterSports:
              description: >-
                Required if product.travel.coverage.sports.isIncluded set to
                true
              type: boolean
              example: false
            extremeCompetitionSports:
              description: >-
                Required if product.travel.coverage.sports.isIncluded set to
                true
              type: boolean
              example: false
            sportEquipment:
              description: Add sports equipment coverage to Colonnade
              type: boolean
              example: false
          type: object
        roadsideAssistance:
          properties:
            firstRegistration:
              description: >-
                Required if
                product.travel.coverage.roadsideAssistance.isIncluded equals to
                true
              type: string
              format: date
              example: '2018-06-12'
          type: object
        physicalWork:
          properties:
            isIncluded:
              description: |-
                If physical work coverage is needed, this attribute
                 *                  needs to be set to TRUE. Default value is FALSE
              type: boolean
              example: true
          type: object
        pet:
          properties:
            isIncluded:
              description: >-
                If Pet coverage is needed, this attribute needs to be set to
                TRUE. Default value is FALSE.
              type: boolean
              example: true
          type: object
        rentedVehicleBreakage:
          properties:
            isIncluded:
              description: >-
                If rented vehicle breakage coverage is needed, this attribute
                needs to be set to TRUE. Default value is FALSE.
              type: boolean
              example: true
          type: object
        base:
          properties:
            tranzitCountry:
              description: >-
                Array of iso2 country codes. For Colonnade, we need to send a
                list of tranzit countries.
              type: array
              items:
                type: string
                example: RO
          type: object
      type: object
    ColonnadeTravelAdditionalDataQuotationRequest:
      properties:
        customer:
          $ref: '#/components/schemas/ColonnadeCustomerAdditionalData'
        coverage:
          $ref: '#/components/schemas/ColonnadeCoverageAdditionalData'
      type: object
    EurolifeTravelQuickQuotationRequest:
      required:
        - eurolifeArea
      properties:
        discountCode:
          type: string
          example: RED2323
        eurolifeArea:
          description: >-
            Accepts any `id` from nomenclature `POST
            nomenclature/eurolife/travel/gestionari`
          type: string
          example: Eurolife_0
      type: object
    EurolifeTravelPersonAdditionalData:
      properties:
        resident:
          description: Default it is considered `true`
          type: boolean
          example: 'true'
      type: object
    EurolifeTravelPolicyholderAdditionalData:
      required:
        - taxId
      type: object
      allOf:
        - properties:
            taxId:
              description: CNP / CUI
              type: string
              example: '1910716000000'
          type: object
        - $ref: '#/components/schemas/EurolifeTravelPersonAdditionalData'
    EurolifeTravelQuotationRequest:
      required:
        - eurolifeArea
      properties:
        discountCode:
          type: string
          example: RED2323
        eurolifeArea:
          description: >-
            Accepts any `id` from nomenclature
            `nomenclature/eurolife/travel/gestionari`
          type: string
          example: Eurolife_0
        product:
          properties:
            customer:
              $ref: '#/components/schemas/EurolifeTravelPersonAdditionalData'
            policyholder:
              oneOf:
                - $ref: >-
                    #/components/schemas/EurolifeTravelPolicyholderAdditionalData
                - type: array
                  items:
                    $ref: >-
                      #/components/schemas/EurolifeTravelPolicyholderAdditionalData
          type: object
      type: object
    GeneraliTravelQuotationRequest:
      properties:
        consultancy:
          description: Defaults to `false` if not set.
          type: boolean
          enum:
            - true
            - false
          example: 'false'
        insuredInCountry:
          description: Defaults to `true` if not set.
          type: boolean
          enum:
            - true
            - false
          example: 'true'
        residency:
          description: Defaults to `true` if not set.
          type: boolean
          enum:
            - true
            - false
          example: 'true'
        product:
          properties:
            policyholder:
              type: array
              items:
                required:
                  - taxId
                properties:
                  taxId:
                    type: string
                    example: '1910716000000'
                  publiclyExposed:
                    description: Defaults to `false` if not set.
                    type: boolean
                    enum:
                      - true
                      - false
                    example: 'false'
                type: object
          type: object
        coverage:
          properties:
            sports:
              properties:
                extremeCompetitionSports:
                  description: >-
                    Accepts any code from nomenclature
                    /nomenclature/generali/travel/extreme-sports
                  type: number
                  example: '36'
              type: object
          type: object
      type: object
    GroupamaTravelHealthBaseQuotationRequest:
      properties:
        product:
          properties:
            travel:
              properties:
                coverage:
                  properties:
                    tripExtensionInterruption:
                      required:
                        - isIncluded
                      properties:
                        isIncluded:
                          type: boolean
                          example: true
                      type: object
                    sports:
                      description: >-
                        Required if `product.travel.coverage.sports.isIncluded`
                        is `true` or `1`
                      properties:
                        includeWinterSports:
                          description: Include winter sports
                          type: boolean
                          example: true
                        includeSummerSports:
                          description: Include summer sports
                          type: boolean
                          example: false
                      type: object
                  type: object
              type: object
          type: object
      type: object
    GroupamaTravelHealthQuickQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/GroupamaTravelHealthBaseQuotationRequest'
    GroupamaTravelHealthPolicyholderAdditionalData:
      required:
        - taxId
        - role
      type: object
      allOf:
        - $ref: '#/components/schemas/GroupamaTravelHealthBaseQuotationRequest'
        - properties:
            taxId:
              description: CNP
              type: string
              example: '1910716000000'
            role:
              type: string
              enum:
                - insured
                - spouse
                - child
                - additionalAdult
              example: insured
          type: object
    GroupamaTravelHealthQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/GroupamaTravelHealthBaseQuotationRequest'
        - properties:
            product:
              properties:
                beneficiary:
                  required:
                    - firstName
                    - lastName
                    - taxId
                    - birthdate
                  properties:
                    firstName:
                      description: Individual person's first name
                      type: string
                      example: Vasile
                    lastName:
                      description: Individual person's last name
                      type: string
                      example: Pop
                    taxId:
                      description: CNP
                      type: string
                      example: '1910716000000'
                    birthdate:
                      type: string
                      format: date
                      example: '2021-01-01'
                  type: object
                policyholder:
                  oneOf:
                    - $ref: >-
                        #/components/schemas/GroupamaTravelHealthPolicyholderAdditionalData
                    - type: array
                      items:
                        $ref: >-
                          #/components/schemas/GroupamaTravelHealthPolicyholderAdditionalData
              type: object
          type: object
    MondialAssistanceTravelQuotationRequest:
      properties:
        tripType:
          description: Type of the trip, Default is `one-way` if not set
          type: string
          enum:
            - one-way
            - annual
          example: one-way
        tariffType:
          description: Tariff type, Default is `single` if not set
          type: string
          enum:
            - single
            - object
            - family
          example: single
        departureCountry:
          description: >-
            Default is `RO` if not set<br />Accepts any `iso2` code from
            nomenclature `/nomenclature/country`
          type: string
          example: RO
        additionalDestinations:
          description: Additional destinations
          type: array
          items:
            description: >-
              Country code<br />Accepts any `iso2` code from nomenclature
              `/nomenclature/country`
            type: string
            example: FR
        coverage:
          properties:
            stornoCosts:
              properties:
                bookingDate:
                  type: string
                  format: date
                  example: '2024-03-01'
                tripValueType:
                  description: Trip value type
                  type: string
                  enum:
                    - perPerson
                    - perTrip
                  example: perPerson
              type: object
          type: object
      type: object
    MondialAssistanceTravelQuickQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/MondialAssistanceTravelQuotationRequest'
    OmniasigMedicasCustomerAdditionalData:
      required:
        - quota
        - isPublicFunction
      properties:
        quota:
          type: integer
          example: '100'
        isPublicFunction:
          type: boolean
          example: 'false'
      type: object
    OmniasigMedicasPolicyholderAdditionalData:
      required:
        - taxId
        - quota
        - healthStatus
      properties:
        taxId:
          type: string
          example: '1930403036472'
        quota:
          type: integer
          example: '100'
        isPublicFunction:
          type: boolean
          default: 'false'
          example: 'false'
        student:
          type: boolean
          default: 'false'
          example: 'false'
        healthStatus:
          type: string
          enum:
            - acceptable
            - good
            - excellent
          example: good
        disease:
          required:
            - neuro
            - cardio
            - internal
            - respiratory
            - other
            - hasDisability
            - definitive
          properties:
            neuro:
              type: boolean
              example: 'false'
            cardio:
              type: boolean
              example: 'false'
            internal:
              type: boolean
              example: 'false'
            respiratory:
              type: boolean
              example: 'false'
            other:
              type: boolean
              example: 'false'
            hasDisability:
              type: boolean
              example: 'false'
            definitive:
              type: boolean
              example: 'false'
          type: object
      type: object
    OmniasigMedicasAdditionalDataQuotationRequest:
      required:
        - product
      properties:
        transit:
          description: If the travel has transit or not
          type: boolean
          default: 'false'
          example: 'false'
        product:
          required:
            - customer
            - policyholder
          properties:
            customer:
              $ref: '#/components/schemas/OmniasigMedicasCustomerAdditionalData'
            policyholder:
              oneOf:
                - $ref: >-
                    #/components/schemas/OmniasigMedicasPolicyholderAdditionalData
                - type: array
                  items:
                    $ref: >-
                      #/components/schemas/OmniasigMedicasPolicyholderAdditionalData
          type: object
      type: object
    OmniasigSafeTravelTransformOfferRequest:
      title: OmniasigSafeTravelTransformOfferRequest
      properties:
        payer:
          properties:
            taxId:
              description: Tax identification number (CNP/CUI)
              type: string
            firstName:
              description: Payer's first name
              type: string
            lastName:
              description: Payer's last name
              type: string
          type: object
      type: object
    PhoenixTravelQuotationRequest:
      required:
        - purposeId
        - insuredInCountry
      properties:
        insuredInCountry:
          description: Indicates if the insured is in the country.
          type: boolean
          example: true
        blockPendingOffer:
          description: >-
            If this is set to true, offers with the status on_hold from the
            insurer will be blocked and return an error.
          type: boolean
          example: true
        discount:
          description: Discount percentage.
          type: number
          format: float
          example: 0
        issuer:
          properties:
            email:
              description: Issuer's email.
              type: string
              format: email
              example: example@email.com
            phone:
              description: Issuer's phone number.
              type: string
              maxLength: 20
              minLength: 7
              example: '123456789'
          type: object
        purposeId:
          description: >-
            Required if travelPurpose is 'work'. Must be a valid ID from
            /nomenclature/phoenix/travel/travel-trip-purposes.
          type: integer
          maximum: 33
          minimum: 3
        coverage:
          properties:
            stornoCosts:
              properties:
                purchaseDateOfTrip:
                  description: >-
                    Purchase date of trip. Required if storno coverage is
                    included.
                  type: string
                  format: date
                  example: '2025-02-15'
              type: object
            personalAccidents:
              properties:
                isIncluded:
                  description: Indicates if personalAccidents is included.
                  type: boolean
                  example: 'true'
              type: object
          type: object
      type: object
    SignalIdunaPostTravelQuotationRequest:
      properties:
        agentName:
          type: string
          example: Agent Andrew
      type: object
    SignalIdunaTravelBaseQuotationRequest:
      properties:
        clauseTreatmentContinuationInRomania:
          description: Clause for continuation of treatment in Romania
          type: boolean
          example: 'false'
      type: object
    SignalIdunaTravelQuickQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/SignalIdunaTravelBaseQuotationRequest'
    SignalIdunaTravelQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/SignalIdunaTravelBaseQuotationRequest'
        - properties:
            renewPolicy:
              properties:
                series:
                  description: Series of the policy
                  type: string
                number:
                  description: Number of the policy
                  type: string
              type: object
            product:
              properties:
                customer:
                  properties:
                    legalRepresentative:
                      description: >-
                        Legal representative of the company (required if
                        customer is legal person)
                      type: string
                  type: object
              type: object
          type: object
    SignalIdunaTravelTransformOfferRequest:
      title: SignalIdunaTravelTransformOfferRequest
      properties:
        payer:
          properties:
            taxId:
              description: Tax identification number (CNP/CUI)
              type: string
          type: object
      type: object
    UniqaTravelBaseQuotationRequest:
      properties:
        coverage:
          properties:
            stornoSecondaryClause:
              description: >-
                Storno secondary clause. It cannot be included if storno is
                already included.
                 *           Defaults to `false` if not set.
              type: boolean
              example: 'false'
          type: object
      type: object
    UniqaQuickQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/UniqaTravelBaseQuotationRequest'
    UniqaTravelPersonAdditionalData:
      type: object
      allOf:
        - $ref: '#/components/schemas/UniqaTravelBaseQuotationRequest'
        - properties:
            isPublicFunction:
              description: Defaults to `false` if not set.
              type: boolean
              example: 'false'
            isPoliticallyExposed:
              description: Defaults to `false` if not set.
              type: boolean
              example: 'false'
          type: object
    UniqaTravelCustomerAdditionalData:
      type: object
      allOf:
        - properties:
            legalForm:
              type: string
              enum:
                - SRL
                - SA
                - PFA
                - AF
                - SCA
                - SCS
                - SNC
                - CA
                - GEIE
                - GIE
                - IFN
                - II
                - OC
                - OCC
                - OCM
                - OCR
                - RA
                - NA
                - IG
                - IF
                - BANCA
              example: SRL
          type: object
        - $ref: '#/components/schemas/UniqaTravelPersonAdditionalData'
        - $ref: '#/components/schemas/UniqaTravelBaseQuotationRequest'
    UniqaTravelPolicyholderAdditionalData:
      required:
        - taxId
      type: object
      allOf:
        - properties:
            taxId:
              description: CNP
              type: string
              example: '1910716000000'
          type: object
        - $ref: '#/components/schemas/UniqaTravelPersonAdditionalData'
        - $ref: '#/components/schemas/UniqaTravelBaseQuotationRequest'
    UniqaTravelQuotationRequest:
      type: object
      allOf:
        - $ref: '#/components/schemas/UniqaTravelBaseQuotationRequest'
        - properties:
            insuredsInRomania:
              description: >-
                If the policyholder(s) are in Romania when the policy is being
                issued
                 * Defaults to `true` if not set.
              type: boolean
              example: 'false'
            product:
              properties:
                customer:
                  $ref: '#/components/schemas/UniqaTravelCustomerAdditionalData'
                policyholder:
                  oneOf:
                    - $ref: >-
                        #/components/schemas/UniqaTravelPolicyholderAdditionalData
                    - type: array
                      items:
                        $ref: >-
                          #/components/schemas/UniqaTravelPolicyholderAdditionalData
              type: object
          type: object
  responses:
    Response400InputValidation:
      description: Validation errors
      content:
        application/json:
          schema:
            properties:
              error:
                type: boolean
                example: 'true'
              status:
                type: number
                example: '400'
              message:
                type: string
                example: VALIDATION_ERROR
              data:
                properties:
                  fieldName:
                    type: array
                    items:
                      type: string
                    example:
                      - Validation error
                type: object
            type: object
    Response401Unauthorized:
      description: NO_TOKEN
      content:
        application/json:
          schema:
            properties:
              error:
                type: boolean
                example: 'true'
              status:
                type: number
                example: '401'
              message:
                type: string
                example: NO_TOKEN
            type: object
    Response404NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            properties:
              error:
                type: boolean
                example: 'true'
              status:
                type: number
                example: '404'
              message:
                type: string
                example: Not Found
            type: object
    Response500ServerError:
      description: Application / server errors
      content:
        application/json:
          schema:
            properties:
              error:
                type: boolean
                example: 'true'
              status:
                type: number
                example: '500'
              message:
                type: string
                example: Undefined array key 'xy'
            type: object
    ApiCoreLibAuthResponse200:
      description: Auth result
      content:
        application/json:
          schema:
            properties:
              error:
                type: boolean
                example: 'false'
              status:
                type: number
                example: '200'
              data:
                properties:
                  token:
                    description: >-
                      The JSON Web Token (JWT) to be used as the `Token` header
                      value in all subsequent API requests.
                    example: '---JWT Token---'
                  expires_at:
                    description: >-
                      The expiration date and time of the JWT token, in ISO 8601
                      format.
                    example: '2021-09-03 19:41:27'
                  refresh_token:
                    description: A token used to refresh the JWT token when it expires.
                    type: string
                    example: '---Refresh Token---'
                type: object
            type: object
    Response403Forbidden:
      description: |-
        One of the following values will be returned in the `code` property:
         *   `INVALID_TOKEN`: The provided token is invalid
         *   `TOKEN_DEACTIVATED`: The token has been deactivated
         *   `TOKEN_EXPIRED`: The token has expired
         *   `NO_PERMISSION`: The account does not have permission
      content:
        application/json:
          schema:
            properties:
              error:
                type: boolean
                example: true
              status:
                type: integer
                example: 403
              correlation_id:
                type: string
                example: 0091aade-62a9-4474-a443-dc7c96d83c1d
              message:
                type: string
                example: Token expired
              code:
                type: string
                example: TOKEN_EXPIRED
            type: object
  parameters:
    HeaderToken:
      name: Token
      in: header
      description: >-
        The JWT token received from the `POST /auth` endpoint's response field
        name `token`. This should be included in the header as `Token: <JWT
        Token>`.
      required: true
      schema:
        type: string
        format: jwt
tags:
  - name: Authentication
    description: ''
  - name: Products
    description: ''
  - name: Nomenclature
    description: General nomenclature
  - name: Insurer Nomenclatures
    description: Nomenclatures specific for an insurer
