openapi: 3.0.0
info:
  title: Road Assistance Api
  description: Swagger Road Assistance Api
  version: 1.0.0
paths:
  /nomenclature/country:
    get:
      tags:
        - Nomenclature
      summary: List of countries
      operationId: 932f578cda8bfa334022b303905f8b5f
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of countries
          content:
            application/json:
              schema:
                properties:
                  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
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/county:
    get:
      tags:
        - Nomenclature
      summary: List of counties
      operationId: 22c15f2c1e8e20cd4bfb2505cf06b275
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of counties
          content:
            application/json:
              schema:
                properties:
                  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
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '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: d93dcacadd2907931d086d38bc5066ea
      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
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/make:
    get:
      tags:
        - Nomenclature
      summary: List of vehicle makes
      operationId: f0eba1c03cfed6949e04c9fedc1b3fa1
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of makes
          content:
            application/json:
              schema:
                properties:
                  error:
                    type: boolean
                    example: 'false'
                  status:
                    type: number
                    example: '200'
                  data:
                    type: array
                    items:
                      properties:
                        name:
                          type: string
                          example: A Rema
                        ws_id:
                          type: integer
                          example: '6'
                        category_id:
                          type: integer
                          example: '5'
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /nomenclature/model/{make_ws_id}:
    get:
      tags:
        - Nomenclature
      summary: List of models filtered by make ws id
      operationId: f7158bd3482a3db5b4dd23f8c640fc54
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
        - name: make_ws_id
          in: path
          description: Make ws id
          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:
                        name:
                          type: string
                          example: '750'
                        ws_id:
                          type: integer
                          example: '20'
                        make_ws_id:
                          type: integer
                          example: '5'
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /package:
    get:
      tags:
        - Nomenclature
      summary: List of Packages
      operationId: 079b08d89e29ff50dc8f1cfbaca505b0
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of Packages
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: string
                          example: BASIC
                        name:
                          type: string
                          example: Basic
                        description:
                          type: string
                          example: description
                        product_id:
                          type: integer
                          example: 1 (Pointer)
                        amount:
                          type: number
                          example: '10'
                        currency_id:
                          type: integer
                          example: '1'
                        status:
                          type: integer
                          example: '1'
                        amount_without_vat:
                          type: number
                          example: '8.4'
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /currency:
    get:
      tags:
        - Nomenclature
      summary: List of Currencies
      operationId: 4313912c708d45054c0877b1fba6acb2
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of Currencies
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: string
                          example: dollar
                        name:
                          type: string
                          example: Dolar american
                        symbol:
                          type: string
                          example: $
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /vehicle-usage-type:
    get:
      tags:
        - Nomenclature
      summary: List of Vehicle Usage Types
      operationId: ff409b9666e4b83a376882afa5425a78
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of Vehicle Usage Types
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: string
                          example: personal
                        name:
                          type: string
                          example: Personal
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /vehicle-fuel-type:
    get:
      tags:
        - Nomenclature
      summary: List of Vehicle Fuel Types
      operationId: 307e43b2dac58eb1b7c9b66e6212adbf
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of Vehicle Fuel Types
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: string
                          example: diesel
                        name:
                          type: string
                          example: Motorina
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /vehicle-type:
    get:
      tags:
        - Nomenclature
      summary: List of Vehicle Types
      operationId: c26453f2c9b9b5da69ff647f48a2b7d0
      parameters:
        - name: Token
          in: header
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of Vehicle Types
          content:
            application/json:
              schema:
                properties:
                  data:
                    type: array
                    items:
                      properties:
                        code:
                          type: string
                          example: registered
                        name:
                          type: string
                          example: Inmatriculat
                      type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /offer:
    post:
      tags:
        - Products
      summary: Get a quote
      description: >-
        A quote is obtained from the insurer for the product specified in the
        request.
      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:
                  data:
                    properties:
                      provider:
                        properties:
                          organization:
                            properties:
                              businessName:
                                type: string
                                example: NUME_SAS
                            type: object
                        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'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '422':
          description: Validation error
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /offer/{id}:
    get:
      tags:
        - Products
      summary: Download offer
      description: Download offer in PDF format
      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:
                  data:
                    properties:
                      files:
                        type: array
                        items:
                          properties:
                            type:
                              type: string
                              example: application/pdf
                            name:
                              type: string
                              example: document.pdf
                            content:
                              type: string
                              example: JVBERi0xLjQKJcfs...
                          type: object
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '422':
          description: Validation error
        '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: XX/12/12
        - 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:
                          properties:
                            type:
                              type: string
                              example: application/pdf
                            name:
                              type: string
                              example: document.pdf
                            content:
                              type: string
                              example: JVBERi0xLjQKJcfs...
                          type: object
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '422':
          description: Validation error
        '500':
          $ref: '#/components/responses/Response500ServerError'
    post:
      tags:
        - Products
      summary: Transform the offer into a policy.
      description: The offer is transformed into a policy based on the offer identifier.
      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:
                  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'
        '422':
          description: Validation error
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /policy/{id}:
    get:
      tags:
        - Products
      summary: Download policy
      description: Download policy in PDF format
      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:
                  data:
                    properties:
                      files:
                        type: array
                        items:
                          properties:
                            type:
                              type: string
                              example: application/pdf
                            name:
                              type: string
                              example: document.pdf
                            content:
                              type: string
                              example: JVBERi0xLjQKJcfs...
                          type: object
                    type: object
                type: object
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '422':
          description: Validation error
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /product/details:
    get:
      tags:
        - Products
      summary: Get product details
      description: >-
        Returns product details including packages. If amount and currency are
        null, the price is dynamic.
      operationId: getProductDetails
      parameters:
        - name: company
          in: query
          required: true
          schema:
            type: string
        - name: product
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Product details response
          content:
            application/json:
              schema:
                properties:
                  company:
                    type: string
                    example: pointer
                  product:
                    type: string
                    example: road_assistance
                  packages:
                    type: array
                    items:
                      properties:
                        code:
                          type: string
                          example: BASIC
                        name:
                          type: string
                          example: HSA-BASIC-2024
                        amount:
                          description: If null, price is dynamic
                          type: number
                          format: float
                          example: 199
                          nullable: true
                        currency:
                          description: If null, price is dynamic
                          type: string
                          example: RON
                          nullable: true
                      type: object
                type: object
        '404':
          description: Product not found
  /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:
    ApiPolicyRequest:
      required:
        - offerId
        - payment
      properties:
        offerId:
          type: integer
          example: 6
        payment:
          required:
            - method
            - currency
            - amount
            - date
            - documentNumber
          properties:
            method:
              type: string
              enum:
                - receipt
                - payment order
                - pos
              example: receipt
            currency:
              type: string
              example: RON
            amount:
              type: number
              format: float
              example: 10
            date:
              type: string
              format: date
              example: '2024-10-16'
            documentNumber:
              type: string
              example: DEMO10013664
          type: object
      type: object
    ApiQuotationRequest:
      required:
        - provider
        - product
      properties:
        provider:
          required:
            - organization
            - authentication
          properties:
            organization:
              required:
                - businessName
              properties:
                businessName:
                  type: string
                  example: pointer
              type: object
            authentication:
              required:
                - account
                - password
              properties:
                account:
                  type: string
                  example: alexandru.marinica@lifeishard.ro
                password:
                  type: string
                  example: administrator
                code:
                  type: string
                  example: ''
              type: object
          type: object
        product:
          required:
            - motor
            - policyholder
            - vehicle
            - additionalData
          properties:
            motor:
              required:
                - startDate
                - termTime
              properties:
                startDate:
                  type: string
                  format: date
                  example: '2024-10-19'
                termTime:
                  type: integer
                  example: 12
              type: object
            policyholder:
              required:
                - lastName
                - firstName
                - identification
                - isForeignPerson
                - taxId
                - nationality
                - citizenship
                - email
                - mobileNumber
                - address
                - correspondenceAddress
              properties:
                lastName:
                  type: string
                  example: Marinica
                firstName:
                  type: string
                  example: Alexandru
                gender:
                  type: string
                  example: m
                birthdate:
                  type: string
                  format: date
                  example: '1997-03-18'
                identification:
                  required:
                    - idType
                    - idNumber
                    - issueAuthority
                    - issueDate
                  properties:
                    idType:
                      type: string
                      example: CI
                    idNumber:
                      type: string
                      example: KZ879540
                    issueAuthority:
                      type: string
                      example: DRPCIV Mangalia
                    issueDate:
                      type: string
                      format: date
                      example: '2021-03-18'
                  type: object
                isForeignPerson:
                  type: boolean
                  example: false
                taxId:
                  type: string
                  example: '1970318133912'
                nationality:
                  type: string
                  example: RO
                citizenship:
                  type: string
                  example: RO
                email:
                  type: string
                  example: alexandru.marinica@lifeishard.ro
                mobileNumber:
                  type: string
                  example: '0754996049'
                address:
                  required:
                    - country
                    - county
                    - cityCode
                    - city
                    - street
                    - houseNumber
                    - postcode
                  properties:
                    country:
                      type: string
                      example: RO
                    county:
                      type: string
                      example: CT
                    cityCode:
                      type: integer
                      example: 60516
                    city:
                      type: string
                      example: Navodari
                    street:
                      type: string
                      example: Kihn Extensions
                    houseNumber:
                      type: string
                      example: '89'
                    building:
                      type: integer
                      example: 2
                    staircase:
                      type: integer
                      example: 8
                    floor:
                      type: integer
                      example: 7
                    apartment:
                      type: string
                      example: '12'
                    postcode:
                      type: string
                      example: '905700'
                  type: object
                correspondenceAddress:
                  required:
                    - country
                    - county
                    - cityCode
                    - city
                    - street
                    - houseNumber
                    - postcode
                  properties:
                    country:
                      type: string
                      example: RO
                    county:
                      type: string
                      example: CT
                    cityCode:
                      type: integer
                      example: 60516
                    city:
                      type: string
                      example: Navodari
                    street:
                      type: string
                      example: Kihn Extensions
                    houseNumber:
                      type: string
                      example: '89'
                    building:
                      type: integer
                      example: 2
                    staircase:
                      type: integer
                      example: 8
                    floor:
                      type: integer
                      example: 7
                    apartment:
                      type: string
                      example: '12'
                    postcode:
                      type: string
                      example: '905700'
                  type: object
              type: object
            vehicle:
              required:
                - registrationType
                - vin
                - vehicleType
                - brand
                - model
                - yearOfConstruction
                - engineDisplacement
                - enginePower
                - totalWeight
                - seats
                - fuelType
                - usageType
                - identification
                - owner
              properties:
                licensePlate:
                  type: string
                  example: CT97AEC
                registrationType:
                  type: string
                  enum:
                    - registered
                    - recorded
                    - temporaryRegistered
                    - temporaryRecorded
                  example: registered
                vin:
                  type: string
                  example: TSMLYDD1S00C41815
                vehicleType:
                  type: string
                  enum:
                    - M1
                    - M1G
                    - M2
                    - M2G
                    - M3
                    - M3G
                    - N1
                    - N1G
                    - N2
                    - N2G
                    - N3
                    - N3G
                    - O1
                    - O2
                    - O3
                    - O4
                    - L1e
                    - L2e
                    - L3e
                    - L4e
                    - L5e
                    - L6e
                    - L7e
                    - T
                    - C
                    - R
                    - S
                  example: M1
                brand:
                  type: string
                  example: Suzuki
                model:
                  type: string
                  example: Vitara
                yearOfConstruction:
                  type: integer
                  example: 2023
                engineDisplacement:
                  type: integer
                  example: 1566
                enginePower:
                  type: integer
                  example: 80
                totalWeight:
                  type: integer
                  example: 1880
                seats:
                  type: integer
                  example: 5
                fuelType:
                  type: string
                  enum:
                    - diesel
                    - petrol
                    - electric
                    - hybrid
                    - lpg
                  example: hybrid
                firstRegistration:
                  type: string
                  format: date
                  example: '2023-01-01'
                usageType:
                  type: string
                  enum:
                    - personal
                    - workCar
                  example: personal
                identification:
                  required:
                    - idNumber
                  properties:
                    idNumber:
                      type: string
                      example: H558662
                  type: object
                currentMileage:
                  type: integer
                  example: 171323
                hasMobilityModifications:
                  type: boolean
                  example: false
                isLeased:
                  type: boolean
                  example: false
                owner:
                  required:
                    - lastName
                    - firstName
                    - identification
                    - isForeignPerson
                    - taxId
                    - email
                    - mobileNumber
                    - address
                    - correspondenceAddress
                  properties:
                    lastName:
                      type: string
                      example: Marinica
                    firstName:
                      type: string
                      example: Alexandru
                    gender:
                      type: string
                      example: m
                    birthdate:
                      type: string
                      format: date
                      example: '1997-03-18'
                    identification:
                      required:
                        - idType
                        - idNumber
                        - issueAuthority
                        - issueDate
                      properties:
                        idType:
                          type: string
                          example: CI
                        idNumber:
                          type: string
                          example: KZ879540
                        issueAuthority:
                          type: string
                          example: DRPCIV Mangalia
                        issueDate:
                          type: string
                          format: date
                          example: '2021-03-18'
                      type: object
                    isForeignPerson:
                      type: boolean
                      example: false
                    taxId:
                      type: string
                      example: '1970318133912'
                    nationality:
                      type: string
                      example: RO
                    citizenship:
                      type: string
                      example: RO
                    email:
                      type: string
                      example: alexandru.marinica@lifeishard.ro
                    mobileNumber:
                      type: string
                      example: '0754996049'
                    address:
                      required:
                        - country
                        - county
                        - cityCode
                        - city
                        - street
                        - houseNumber
                        - postcode
                      properties:
                        country:
                          type: string
                          example: RO
                        county:
                          type: string
                          example: CT
                        cityCode:
                          type: integer
                          example: 60516
                        city:
                          type: string
                          example: Navodari
                        street:
                          type: string
                          example: Kihn Extensions
                        houseNumber:
                          type: string
                          example: '89'
                        building:
                          type: integer
                          example: 2
                        staircase:
                          type: integer
                          example: 8
                        floor:
                          type: integer
                          example: 7
                        apartment:
                          type: string
                          example: '12'
                        postcode:
                          type: string
                          example: '905700'
                      type: object
                    correspondenceAddress:
                      required:
                        - country
                        - county
                        - cityCode
                        - city
                        - street
                        - houseNumber
                        - postcode
                      properties:
                        country:
                          type: string
                          example: RO
                        county:
                          type: string
                          example: CT
                        cityCode:
                          type: integer
                          example: 60516
                        city:
                          type: string
                          example: Navodari
                        street:
                          type: string
                          example: Kihn Extensions
                        houseNumber:
                          type: string
                          example: '89'
                        building:
                          type: integer
                          example: 2
                        staircase:
                          type: integer
                          example: 8
                        floor:
                          type: integer
                          example: 7
                        apartment:
                          type: string
                          example: '12'
                        postcode:
                          type: string
                          example: '905700'
                      type: object
                  type: object
              type: object
            additionalData:
              properties:
                packageCodes:
                  type: array
                  items:
                    type: string
                    enum:
                      - BasicPlus
                      - Util
                      - Premium
                      - BasicEuropa
                      - EuropaHoliday
                      - PremiumEuropa
                      - AMP-001-BASIC
                      - AMP-001-UTIL
                      - AMP-001-PREMIUM
                  example:
                    - AMP-001-BASIC
                    - AMP-001-UTIL
                    - PremiumEuropa
                product:
                  properties:
                    vehicle:
                      properties:
                        owner:
                          properties:
                            isPoliticallyExposed:
                              type: boolean
                              example: false
                          type: object
                      type: object
                    policyholder:
                      properties:
                        isPoliticallyExposed:
                          type: boolean
                          example: false
                      type: object
                  type: object
              type: object
          type: object
      type: object
    CarApiResponseData:
      title: CarApiResponseData
      description: Car response data
      properties:
        brand:
          type: string
          example: VOLVO
        model:
          type: string
          example: C
        commercialModel:
          type: string
          example: XC90
        color:
          type: string
          example: NEGRU
        fuelType:
          type: string
          example: diesel
        vehicleType:
          type: string
          example: M1G
        nationalVehicleType:
          type: string
          example: AUTOTURISM
        vin:
          type: string
          example: string
        licensePlate:
          type: string
          example: string
        identification:
          type: string
          example: 'null'
        engineDisplacement:
          type: integer
          example: '2401'
        enginePower:
          type: number
          example: '136'
        totalWeight:
          type: number
          example: '2560'
        yearOfConstruction:
          type: number
          example: '2005'
        seats:
          type: number
          example: '5'
        seatsStanding:
          type: number
          example: 'null'
        firstRegistration:
          type: string
          example: '2024-06-19'
        currentRegistration:
          type: string
          example: '2024-06-19'
        endOfCurrentRegistration:
          type: string
          example: '2024-06-19'
        registrationType:
          type: string
          example: recorded
        updatedAt:
          type: string
          example: '2024-06-19'
      type: object
    Offer:
      required:
        - offerId
        - providerOfferCode
        - premiumAmount
        - premiumAmountNet
        - currency
        - startDate
        - endDate
      properties:
        offerId:
          type: integer
          example: 1429
        providerOfferCode:
          type: string
          example: BASIC_ddd6fba6-72dc-4ba9-84e2-c92dfdb2b3a6
        premiumAmount:
          type: number
          format: float
          example: 10
        premiumAmountNet:
          type: number
          format: float
          example: 10
        currency:
          type: string
          example: RON
        startDate:
          type: string
          format: date
          example: '2025-02-20'
        endDate:
          type: string
          format: date
          example: '2026-02-19'
        installments:
          type: array
          items:
            properties:
              id:
                type: integer
                example: 1
              amount:
                type: number
                format: float
                example: 10
              dueDate:
                type: string
                format: date
                example: '2025-02-19'
            type: object
        notes:
          type: string
          example: null
          nullable: true
      type: object
    Policy:
      required:
        - policyId
        - series
        - number
        - startDate
        - endDate
        - premiumAmount
        - currency
      properties:
        provider:
          properties:
            organization:
              properties:
                businessName:
                  type: string
                  example: pointer
              type: object
          type: object
        product:
          properties:
            name:
              type: string
              example: road_assistance
          type: object
        policyId:
          type: integer
          example: 93
        providerPolicyCode:
          type: string
          example: null
          nullable: true
        series:
          type: string
          example: POINTER-CONTRACT
        number:
          type: string
          example: '6'
        payment:
          properties:
            method:
              type: string
              example: card de credit
            currency:
              type: string
              example: RON
            amount:
              type: number
              format: float
              example: 10
            date:
              type: string
              format: date
              example: '2025-01-01'
            documentNumber:
              type: string
              example: DEMO10013664
          type: object
        startDate:
          type: string
          format: date
          example: '2025-02-20'
        endDate:
          type: string
          format: date
          example: '2026-02-19'
        premiumAmount:
          type: number
          format: float
          example: 10
        currency:
          type: string
          example: RON
        installments:
          type: array
          items:
            properties:
              id:
                type: integer
                example: 1
              amount:
                type: number
                format: float
                example: 10
              dueDate:
                type: string
                format: date
                example: '2025-02-20'
            type: object
      type: object
    Product:
      required:
        - company
        - name
        - class
        - pid
        - toc
      properties:
        id:
          type: integer
          example: 1
        company:
          type: string
          example: Company Name
        name:
          type: string
          example: Product Name
        class:
          type: string
          example: Product Class
        pid:
          type: string
          example: '12345'
        toc:
          type: string
          example: Terms and Conditions
      type: object
    PaymentMethodEnum:
      description: Enum representing payment methods
      type: string
      enum:
        - pos
        - receipt
        - broker receipt
        - payment order
        - broker payment order
      example: pos
  responses:
    Response400InputValidation:
      description: A JSON object containing general error
      content:
        application/json:
          schema:
            properties:
              message:
                type: string
                example: Something wrong
            type: object
    Response401Unauthorized:
      description: Authentication & Autorization errors
      content:
        application/json:
          schema:
            properties:
              message:
                type: string
                example: Token invalid...
              code:
                type: string
                example: TOKEN_INVALID
            type: object
    Response404NotFound:
      description: Road Assistance Not Found
      content:
        application/json:
          schema:
            properties:
              message:
                type: string
                example: Not Found
              code:
                type: string
                example: NOT_FOUND
            type: object
    Response500ServerError:
      description: Application / server errors
      content:
        application/json:
          schema:
            properties:
              message:
                type: string
                example: Server error
            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:
              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: Nomenclature
    description: Nomenclature
  - name: Products
    description: Products
  - name: Authentication
    description: Authentication
