openapi: 3.0.0
info:
  title: liability-api.lifeishard.ro
  description: Liability Api 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://liability.api.lifeishard.ro
    description: Production server
  - url: https://liability-qa.api.lifeishard.ro
    description: Development server
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:
                  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
        '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 countries
      operationId: 22c15f2c1e8e20cd4bfb2505cf06b275
      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
        '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'
  /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: omniasig
                            type: object
                        type: object
                      product:
                        properties:
                          name:
                            type: string
                            example: general
                        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':
          $ref: '#/components/responses/Response422InputValidation'
        '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:
                          $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'
        '422':
          $ref: '#/components/responses/Response422InputValidation'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /policy:
    get:
      tags:
        - Products
      summary: Download policy
      description: Download policy in PDF format
      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: RA-065
        - name: string
          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
        '400':
          $ref: '#/components/responses/Response400InputValidation'
        '401':
          $ref: '#/components/responses/Response401Unauthorized'
        '403':
          $ref: '#/components/responses/Response403Forbidden'
        '404':
          $ref: '#/components/responses/Response404NotFound'
        '422':
          $ref: '#/components/responses/Response422InputValidation'
        '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':
          $ref: '#/components/responses/Response422InputValidation'
        '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:
                          $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'
        '422':
          $ref: '#/components/responses/Response422InputValidation'
        '500':
          $ref: '#/components/responses/Response500ServerError'
  /policy/{id}/insurer-receipt:
    get:
      tags:
        - Products
      summary: Download policy receipt
      description: Download policy receipt in PDF format
      operationId: getPolicyReceiptPdf
      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:
                          $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'
        '422':
          $ref: '#/components/responses/Response422InputValidation'
        '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:
    ApiQuotationRequest:
      title: ApiQuotationRequest
      description: Offer request
      required:
        - provider
        - product
      properties:
        provider:
          required:
            - organization
            - authentication
          properties:
            organization:
              $ref: '#/components/schemas/ProviderOrg'
            authentication:
              $ref: '#/components/schemas/Authentication'
          type: object
        product:
          required:
            - name
            - currency
            - liability
            - policyholder
          properties:
            name:
              type: string
              example: general
            currency:
              type: string
              enum:
                - RON
                - EUR
              example: RON
            liability:
              $ref: '#/components/schemas/Liability'
            customer:
              $ref: '#/components/schemas/Person'
            policyholder:
              $ref: '#/components/schemas/Person'
            additionalData:
              anyOf:
                - $ref: >-
                    #/components/schemas/OmniasigProfessionalLiabilityQuotationRequest
                - $ref: '#/components/schemas/OmniasigOtherLiabilityQuotationRequest'
          type: object
      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: []
      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
    Liability:
      required:
        - startDate
        - termTime
      properties:
        type:
          type: string
          enum:
            - malpraxis
            - pharma
            - veterinary
            - lawyers
            - notaries
            - counselors
            - executors
            - insolvency
            - tax-consultant
            - hunters
            - estate-admin
          example: malpraxis
        startDate:
          type: string
          format: date
          example: '2021-01-01'
        termTime:
          description: Number of months
          type: number
          maximum: 12
          minimum: 1
          example: '12'
        installmentCount:
          description: Count of yearly installments
          type: number
          enum:
            - '1'
            - '2'
            - '4'
            - '12'
          example: '1'
        notes:
          type: string
          example: Some additional information
        renewPolicy:
          description: Both fields are required if object is set.
          required:
            - series
            - number
          properties:
            series:
              type: string
              example: XX/XX/XX
            number:
              type: number
              example: '123456789'
          type: object
        additionalInsureds:
          properties:
            children:
              type: number
              example: '2'
            residents:
              type: number
              example: '1'
          type: object
        deductible:
          properties:
            percent:
              type: number
              example: '12'
            type:
              type: string
              enum:
                - undefined
                - no-deductible
                - per-event
                - of-loss
              example: of-loss
          type: object
        allowance:
          properties:
            value:
              type: number
              example: '50000'
          type: object
        territory:
          properties:
            coversWorldWide:
              type: boolean
              example: true
            coversRomania:
              type: boolean
              example: true
          type: object
        coverage:
          $ref: '#/components/schemas/Coverages'
        conditions:
          $ref: '#/components/schemas/Conditions'
        intermediaryEmail:
          description: The email address of the agent; must be valid email address.
          type: string
          example: email@test.com
      type: object
    Person:
      required:
        - taxId
        - address
      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
        caenCode:
          description: Company CAEN number (if the person is a legal entity)
          type: number
          example: '6201'
        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'
      type: object
    Identification:
      required:
        - idType
        - idNumber
        - issueAuthority
        - issueDate
      properties:
        idType:
          type: string
          enum:
            - CI
            - PASSPORT
          example: CI
        idNumber:
          type: string
          example: CJ123456
        issueAuthority:
          type: string
          example: SPCLEP Cluj
        issueDate:
          type: string
          format: date
          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: string
          example: '400356'
      type: object
    Coverages:
      required:
        - base
      properties:
        auxiliaryStaff:
          properties:
            isIncluded:
              type: boolean
              example: true
          type: object
        eScooter:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `eScooter`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        extendedReportingPeriod:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `extendedReportingPeriod`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        moralClaims:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `moralClaims`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        feesCompensation:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `feesCompensation`.`isIncluded` is `true`
              type: number
              example: '5'
          type: object
        perEvent:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `perEvent`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        policyLimit:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `policyLimit`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
      type: object
    Conditions:
      properties:
        locationCount:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `locationCount`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
        claimsWithin3Years:
          properties:
            isIncluded:
              type: boolean
              example: true
          type: object
        lossHistoryWithin5Years:
          properties:
            isIncluded:
              type: boolean
              example: true
          type: object
        turnover:
          properties:
            isIncluded:
              type: boolean
              example: true
            value:
              description: Required if `turnover`.`isIncluded` is `true`
              type: number
              example: '50000'
          type: object
      type: object
    Offer:
      properties:
        offerId:
          type: number
          example: '1'
        providerOfferCode:
          type: string
          example: XY01230123
        premiumAmount:
          description: >-
            Gross premium amount defined in the currency returned in `currency`
            field
          type: number
          example: '89'
        currency:
          type: string
          example: EUR
        exchangeRate:
          properties:
            currency:
              type: string
              example: RON
            amount:
              type: number
              example: '1200'
            exchangeRate:
              type: number
              example: '4.9219'
          type: object
        startDate:
          type: string
          format: date
          example: '2022-09-25'
        endDate:
          type: string
          format: date
          example: '2023-09-24'
        installments:
          type: array
          items:
            $ref: '#/components/schemas/Installment'
        notes:
          description: Notes related to the generated offer
          type: string
          example: Something important
        offerExpiryDate:
          type: string
          format: date
          example: '2023-10-20'
      type: object
    Policy:
      properties:
        provider:
          $ref: '#/components/schemas/ProviderOrg'
        policyId:
          type: number
          example: '12'
        series:
          type: string
          example: XX/XX
        number:
          type: number
          example: '243245345'
        payment:
          $ref: '#/components/schemas/ResponsePayment'
        startDate:
          type: string
          format: date
          example: '2023-07-10'
        endDate:
          type: string
          format: date
          example: '2024-07-09'
        premiumAmount:
          type: number
          example: '89'
        currency:
          type: string
          example: RON
        installments:
          type: array
          items:
            $ref: '#/components/schemas/Installment'
      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
          enum:
            - RON
          example: RON
        amount:
          type: number
          example: '89'
        date:
          type: string
          format: date
          example: '2023-07-10'
        documentNumber:
          type: string
          example: AX4984
      type: object
    ProviderOrg:
      title: ProviderOrganization
      required:
        - businessName
      properties:
        businessName:
          type: string
          enum:
            - omniasig
          example: omniasig
      type: object
    Installment:
      properties:
        id:
          description: The unique identifier for the installment / Installment number
          type: number
          example: '1'
        amount:
          description: The amount of the installment
          type: number
          example: '123'
        dueDate:
          description: The due date of the installment
          type: string
          format: date
          example: '2023-06-10'
      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
    ResponsePayment:
      properties:
        method:
          type: string
          example: receipt
        currency:
          type: string
          example: RON
        amount:
          type: number
          example: '89'
        date:
          type: string
          format: date
          example: '2023-07-10'
        documentNumber:
          type: string
          example: AX4984
      type: object
    OmniasigOtherLiabilityQuotationRequest:
      title: OmniasigOtherLiabilityQuotationRequest
      description: Additional data for Omniasig Other Liability package
      properties:
        rafCode:
          description: Raf code
          type: string
          example: RAF12345
        product:
          properties:
            conditions:
              properties:
                accountingDeskActivities:
                  type: boolean
                  example: 'false'
                adminTechnicalActivities:
                  type: boolean
                  example: 'false'
              type: object
          type: object
      type: object
    OmniasigProfessionalLiabilityQuotationRequest:
      title: OmniasigProfessionalLiabilityQuotationRequest
      description: Additional data for Omniasig Profesional Liability package
      required:
        - product
      properties:
        rafCode:
          description: Raf code
          type: string
          example: RAF12345
        product:
          required:
            - conditions
          properties:
            retroactivePeriod:
              type: number
              enum:
                - '12'
                - '24'
                - '36'
            conditions:
              required:
                - activityType
              properties:
                activityType:
                  type: string
                  enum:
                    - accounting
                    - tax-advisory
                    - audit
                consultantsType:
                  type: string
                  enum:
                    - accountant
                    - expert-accountant
                    - tax-consultant
                    - auditor
                professionalCategory:
                  description: >-
                    Required if `product.liability.type` is one of `malpraxis`,
                    `pharma`, `veterinary`
                  type: string
                  enum:
                    - medical-specialties
                    - surgical-specialties
                    - paraclinical-specialties
                    - general-practitioner
                    - biochemist
                    - biologist
                    - dental-specialties
                    - medical-assistants
                    - midwives
                    - pharmacists
                    - pharmacy-assistants
                    - physicians
                    - medical-staff
                    - intern
                    - permanent
                professionalSpeciality:
                  description: Required if `professionalCategory` is set
                  type: string
                  enum:
                    - allergology-and-clinical-immunology
                    - anesthesia-and-intensive-care
                    - infectious-diseases
                    - cardiology
                    - dermatology-and-venereology
                    - diabetes-nutrition-and-metabolic-diseases
                    - endocrinology
                    - medical-assessment-of-work-capacity
                    - clinical-pharmacology
                    - gastroenterology
                    - medical-genetics
                    - geriatrics-and-gerontology
                    - hematology
                    - emergency-medicine
                    - internal-medicine
                    - occupational-medicine
                    - sports-medicine
                    - nephrology
                    - pediatric-neurology
                    - medical-oncology
                    - pediatrics
                    - pneumology
                    - psychiatry
                    - pediatric-psychiatry
                    - radiation-oncology
                    - rehabilitation-physical-medicine-and-balneology
                    - rheumatology
                    - cardiac-and-major-vessel-surgery
                    - general-surgery
                    - oral-and-maxillofacial-surgery
                    - pediatric-surgery
                    - plastic-and-reconstructive-microsurgery
                    - aesthetic-surgery
                    - thoracic-surgery
                    - vascular-surgery
                    - neurosurgery
                    - obstetrics-and-gynecology
                    - ophthalmology
                    - pediatric-orthopedics
                    - orthopedics-and-traumatology
                    - otorhinolaryngology-(ent)
                    - urology
                    - pathological-anatomy
                    - epidemiology
                    - hygiene
                    - laboratory-medicine
                    - forensic-medicine
                    - nuclear-medicine
                    - radiology-and-medical-imaging
                    - public-health-and-management
                    - family-medicine
                    - general-medicine
                    - biochemists
                    - biologists
                    - dentists
                    - orthodontics-and-dentofacial-orthopedics-specialists
                    - dentoalveolar-surgery-specialist
                    - dental-technicians
                    - from-inpatient-healthcare-facilities
                    - >-
                      from-primary-care-outpatient-clinics-individual-medical-practices
                    - pharmacists-working-in-closed/open-circuit-pharmacies
                    - pharmacy-assistants
                    - veterinary-medicine
                    - from-veterinary-medicine-units
                    - all-specialties
                    - neurology
                    - neonatology
              type: object
          type: object
      type: object
  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: Not Found
      content:
        application/json:
          schema:
            properties:
              message:
                type: string
                example: Not Found
              code:
                type: string
                example: NOT_FOUND
            type: object
    Response422InputValidation:
      description: Input validation errors
      content:
        application/json:
          schema:
            properties:
              errors:
                properties:
                  fieldName:
                    type: array
                    items:
                      type: string
                    example:
                      - The fieldName field is required
                type: object
            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: Authentication
    description: ''
  - name: Products
    description: ''
  - name: Nomenclature
    description: ''
