openapi: 3.0.1
info:
  version: '1.0.0'
  title: Tyre Selector 4W
  description: API providing various fitments or tyres regarding parameters like vehicle, dimensions, or others parameters
  termsOfService: ''
  contact:
    name: API Support
    email: difapiteam@michelin.com
    url: 'https://indus.developer.michelin.com/en/contact'
servers:
  - url: https://dev.api.michelin.com/tire-selector/v2
    description: dev
  - url: https://indus.api.michelin.com/tire-selector/v2
    description: Indus
  - url: https://api.michelin.com/tire-selector/v2
    description: production
tags:
  - name: Tires
    description: API providing tires regarding parameters like car, dimensions, or others parameters
  - name: Vehicles
    description: API providing various fitments regarding parameters like car, dimensions, or others parameters
  - name: Others
    description: API providing results that are not related to Tires
security:
  - oAuth2Dev: [tyd-user-login]
  - oAuth2Indus: [tyd-user-login]
  - oAuth2Prod: [tyd-user-login]

paths:
  /vehicles:
    post:
      tags:
        - Vehicles
      parameters:
          - in: header
            name: apikey
            schema:
              type: string
            description: Custom header for API gateway analytics
            required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/VehiclesBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/vehicles '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/VehiclesResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"
      summary: To find a vehicle
  /usages:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/usages '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Usage"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"
      summary: List all usages
  /seasons:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/seasons '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/SeasonsBody"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: List all seasons
  /names:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/names '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/Names"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: List all names
  /makers:
    post:
      tags:
        - Vehicles
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/makers '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/MakersComplete"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: get makers and segments list
  /health-check:
    post:
      tags:
        - Others
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
      responses:
        '200':
          description: 'Request was successful for /search/v2/health-check '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/HealthCheck"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Checks if the domain (and its data) are properly working
  /fitments:
    post:
      tags:
        - Vehicles
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/FitmentsBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/fitments '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FitmentsResponse"
        '401':          
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: get the list of compatibles fitments
  /families:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/families '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/FamiliesResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: List all families
  /dimensions:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/DimensionsBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/dimensions '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/DimensionsResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: To find dimensions
  /categories:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/categories '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CategoriesResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: List all categories
  /by-vehicle:
    post:
      tags:
        - Vehicles
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByVehicleBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-vehicle '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyreSetsResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Search by vehicle
  /by-usage:
    post:
      tags:
        - Tires
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/UsageBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-usage '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"
      summary: Search by usage
  /by-season:
    post:
      tags:
        - Tires
      description: 'Get all tyres by Season'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/SeasonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-season '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Search by season
  /by-plate:
    post:
      tags:
        - Vehicles
      description: 'Get vehicle or fitments for a Plate'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByPlateBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-plate '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ByPlateVehicleResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"
      summary: Try to resolve Vehicle Registration Number to have the fitments
  /by-name:
    post:
      tags:
        - Tires
      description: 'Get all tyres for a Name'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByNameBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-name '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Search by name
  /by-family:
    post:
      tags:
        - Tires
      description: 'Get all tyres for a Family'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByFamilyBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-family '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponseFamily"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Search by family
  /by-dimension:
    post:
      tags:
        - Tires
      description: 'Get all tyres for a Dimension'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByDimensionBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-dimension '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponse"
                completeSearch:
                  type: boolean
                  exmple: true
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Search by size
  /by-diameter-top-3:
    post:
      tags:
        - Tires
      description: 'Get top 3 tyres with a Diameter'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByDiameterTop3Body"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-diameter-top-3 '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ByDiameterTop3Response"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: send all tyres sort by diameter (rim)
  /by-category:
    post:
      tags:
        - Tires
      description: 'Get all tyres for a category'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        description: 'Category Parameters'
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ByCategoryBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by-category '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Search by category
  /all-tyres:
    post:
      tags:
        - Tires
      description: 'Get all Tyres'
      parameters:
        - in: header
          name: apikey
          schema:
            type: string
          description: Custom header for API gateway analytics
          required: true
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CommonBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/all-tyres '
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/TyresResponse"
        '401':
          "$ref": "#/components/responses/bad_request"
        '500':
          "$ref": "#/components/responses/internal_error_locale"
        '404':
          "$ref": "#/components/responses/404"
        '503':
          "$ref": "#/components/responses/503"
        '504':
          "$ref": "#/components/responses/504"          
      summary: Returns all tyres from the catalog
    
components:
  securitySchemes:
    oAuth2Dev:
      type: oauth2
      description: OAuth2 security scheme for Tyredating 4W API
      flows:
        clientCredentials:
          tokenUrl: https://dev.api.michelin.com/idp/v1/internal/oauth/token/accesstoken?grant_type=client_credentials
          scopes:
            tyd-user-login: This scope grants read access to the Tyredating 4W API
    oAuth2Indus:
      type: oauth2
      description: OAuth2 security scheme for Tyredating 4W API
      flows:
        clientCredentials:
          tokenUrl: https://indus.api.michelin.com/idp/v1/internal/oauth/token/accesstoken?grant_type=client_credentials
          scopes:
            tyd-user-login: This scope grants read access to the Tyredating 4W API
    oAuth2Prod:
      type: oauth2
      description: OAuth2 security scheme for Tyredating 4W API
      flows:
        clientCredentials:
          tokenUrl: https://prod.api.michelin.com/idp/v1/internal/oauth/token/accesstoken?grant_type=client_credentials
          scopes:
            tyd-user-login: This scope grants read access to the Tyredating 4W API
  parameters:
    ApiKey:
      schema:
        type: string
      in: header
      name: apikey
      description: Custom header for API gateway analytics
      required: true
  schemas:
    ErrorModel:
      type: object
      properties:
        code:
          type: string
        raison:
          type: string
        success:
          type: boolean
    VehicleType:
      type: object
      properties:
        Cylinder:
          type: number
          example: 1250
        Maker:
          type: string
          example: "audi"
        Model:
          type: string
          example: "a4"
        Motor:
          type: string
          example: "2.0 143ch"
        Segment:
          type: string
          example: "A4"
        Year:
          type: number
          example: 2021
    VehiclesBody:
      type: object
      properties:
        Cylinder:
          type: number
          example: 1250
        Maker:
          type: string
          example: "audi"
        Model:
          type: string
          example: "a4"
        Motor:
          type: string
          example: "2.0 143ch"
        Segment:
          type: string
          example: "A4"
        Year:
          type: number
          example: 2021
        columns_to_fetch:
          type: array
          items:
            type: string
            example: ["no"]
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
    VehiclesResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        vehicles:
          "$ref": "#/components/schemas/VehiclesBody"
    Vehicles:
      type: array
      items:
        type: object
        properties:
          fitments:
            "$ref": "#/components/schemas/Fitments"
          Cylinder:
            type: number
            example: 1250
          Maker:
            type: string
            example: "audi"
          Model:
            type: string
            example: "a4"
          Motor:
            type: string
            example: "2.0 143ch"
          Segment:
            type: string
            example: "A4"
          Year:
            type: number
            example: 2021
          Energy:
            type: string
            example: "electric"
          oeMarkingsMaker:
            type: array
            items:
              type: string
              example: "A"
          warning:
            type: string
            example: "no"
    CommonBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
      required:
        - locale
    CommonResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
    LocaleBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr"
      required:
        - locale
    Usage:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        usages:
          type: array
          items:
            type: array
            items:
              type: object
              properties:
                usages:
                  type: string
                  example: "route"
    SeasonsBody:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        seasons:
          "$ref": "#/components/schemas/Seasons"
    Seasons:
      type: array
      items:
        type: object
        properties:
          season:
            type: array
            items: 
              type: string
              example: "summer"
    SeasonsAndOeMarkings:
      type: array
      items:
        type: object
        properties:
          oeMarkings:
            type: array
            items:
              type: string
              example: "A"
          seasons:
            type: array
            items:
              type: string
              example: "summer"
    Names:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        names:
          type: array
          items:
            type: object
            properties:
              name:
                type: array
                items:
                  type: string
                  example: "pneu_A"
    MakersComplete:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        makers:
          "$ref": "#/components/schemas/Makers"
    Makers:
      type: array
      items:
        type: object
        properties:
          segments:
            "$ref": "#/components/schemas/Segments"
          code:
            type: string
            example: "alfa"
          name:
            type: string
            example: "ALFA"
    Segments:
      type: array
      items:
        type: object
        properties:
          code:
            type: string
            example: "romeo"
          name:
            type: string
            example: "ROMEO"
    HealthCheck:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        error_logs:
          type: array
          items:
            type: object
            properties:
              error_message:
                type: string
                example: "no error"
              priority_level:
                type: number
                example: 0
        status_is_ok:
          type: boolean
          example: true
        test_logs:
          type: array
          items:
            type: string
            example: "ok"
    FitmentsBody:
      type: object
      properties:
        Cylinder:
          type: number
          example: 1250
        Maker:
          type: string
          example: "audi"
        Model:
          type: string
          example: "a4"
        Motor:
          type: string
          example: "2.0 143ch"
        Segment:
          type: string
          example: "A4"
        Year:
          type: number
          example: 2021
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
      required:
        - Maker
        - Segment
        - locale
    Dimension:
      type: object
      properties:
        diameter:
          type: number
          example: 128
        loadIndex:
          type: number
          example: 12
        ratio:
          type: number
          example: 12
        speedIndex:
          type: string
          example: "E"
        width:
          type: string      
          example: "126"
        displaySize:
          type: string
          example: "185/68 R17 90V"
        maxLoad:
          type: number
          example: 1000
        maxSpeed:
          type: string
          example: "250km/h"
        structure:
          type: string
          example: "DF"
      required:
        - diameter
        - ratio
        - width
    Exclusions:
      type: object
      properties:
        categories:
          type: array
          items:
            type: string
            example: "A"
        oeMarkings:
          type: array
          items:
            type: string
            example: "NO"
        product:
          type: array
          items:
            type: string
            example: "2"
        seasons:
          type: array
          items:
            type: string
            example: "summer"
        technologies:
          type: array
          items:
            type: string
            example: "flat"
        seasonsAndOeMarkings: 
          type: array
          items:
            type: string
            example: "run"
    Inclusions:
      type: array
      items:
        type: object
        properties:
          IsOriginalEquipment:
            type: boolean
            example: true
          Preference:
            type: number
            example: 0
          TyreCountryCode:
            type: string
            example: "fr"
    Fitment:
      type: object
      properties:
        dimension:
          "$ref": "#/components/schemas/Dimension"
        exclusions:
          "$ref": "#/components/schemas/Exclusions"
        inclusions:
          "$ref": "#/components/schemas/Inclusions"
        category:
          type: string
          example: "T"
        highwayPressure:
          type: number
          example: 3.9
        normalPressure:
          type: number
          example: 3.4
    Fitments:
      type: array
      items:
        type: object
        properties:
          front:
            type: object
            properties:
              fitment:
                "$ref": "#/components/schemas/Fitment"
          rear:
            type: object
            properties:
              fitment:
                "$ref": "#/components/schemas/Fitment"
          runflat:
            type: boolean
            example: true
          series:
            type: string
            example: "H"
    FitmentsResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        vehicles:
          "$ref": "#/components/schemas/Vehicles"
        Cylinder:
          type: number
          example: 1250
        Maker:
          type: string
          example: "audi"
        Model:
          type: string
          example: "a4"
        Motor:
          type: string
          example: "2.0 143ch"
        Segment:
          type: string
          example: "A4"
        Year:
          type: number
          example: 2021
        oeMarkingsMaker:
          type: array
          items:
            type: string
            example: "A"
    Families:
      type: array
      items:
        type: string
        example: "pilot"
    FamiliesList:
      type: array
      items:
        type: object
        properties:
          family:
            "$ref": "#/components/schemas/Families"
    FamiliesResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        families:
          "$ref": "#/components/schemas/FamiliesList"
    DimensionProperties:
      type: object
      properties:
        diameter:
          type: number
          example: 128
        loadIndex:
          type: number
          example: 12
        ratio:
          type: number
          example: 12
        speedIndex:
          type: string
          example: "E"
        width:
          type: string      
          example: "126"
    DimensionType:
      type: object
      properties:
        brand:
          type: string
          example: "Michelin"
        dimensionType:
          "$ref": "#/components/schemas/DimensionProperties"
    DimensionsBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        diameter:
          type: number
          example: 128
        loadIndex:
          type: number
          example: 12
        ratio:
          type: number
          example: 12
        speedIndex:
          type: string
          example: "E"
        width:
          type: string      
          example: "126"
    Dimensions:
      type: array
      items:
        type: object
        properties:
          diameter:
            type: array
            items:
              type: string
          loadIndex: 
            type: array
            items:
              type: number
          ratio: 
            type: array
            items:
              type: number
              
          speedIndex: 
            type: array
            items:
              type: string
          width:
            type: array
            items:
              type: string
    
    DimensionsResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        dimensions:
          "$ref": "#/components/schemas/Dimensions"
    Categories:
      type: array
      items:
        type: object
        properties:
          category:
            type: array
            items:
              type: string
              example: "A"
    CategoriesResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        categories:
          "$ref": "#/components/schemas/Categories"
    ByVehicleBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        fitments:
          "$ref": "#/components/schemas/Fitments"
        Cylinder:
          type: number
          example: 1250
        Maker:
          type: string
          example: "audi"
        Model:
          type: string
          example: "a4"
        Motor:
          type: string
          example: "2.0 143ch"
        Segment:
          type: string
          example: "A4"
        Year:
          type: number
          example: 2021
        filterFrontAndRear:
          type: string
          example: "1" 
        isRunFlat:
          type: boolean
          example: false
        oeMarkingsMaker:
          type: array
          items:
            type: string
            example: "NO"
        season:
          type: array
          items:
            type: string
            example: "summer"
        usage:
          type: string
          example: "route"
      required:
        - fitments
        - Maker
        - Segment
        - locale
    Load:
      type: object
      properties:
        unit:
          type: string
          example: "g"
        value:
          type: number
          example: 25
    Pressure:
      type: object
      properties:
        unit:
          type: string
          example: "Bar"
        value:
          type: number
          example: 2
    Speed:
      type: object
      properties:
        unit:
          type: string
          example: "km/h"
        value:
          type: number
          example: 25
    ApprovedSpeed:
      type: array
      items:
        type: object
        properties:
          load:
            "$ref": "#/components/schemas/Load"
          pressure:
            "$ref": "#/components/schemas/Pressure"
          speed:
            "$ref": "#/components/schemas/Speed"
    FamiliesSlug:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
            example: "alfa"
          slug:
            type: string  
            example: "ALFA"
    Tyres:
      type: array
      items:
        type: object
        properties:
          approvedSpeed:
            "$ref": "#/components/schemas/ApprovedSpeed"
          families:
            "$ref": "#/components/schemas/FamiliesSlug"
          diameter:
            type: number
            example: 128
          loadIndex:
            type: number
            example: 12
          ratio:
            type: number
            example: 12
          speedIndex:
            type: string
            example: "E"
          width:
            type: string      
            example: "126"
          isLowVisibility:
            type: boolean
            example: false
          lineStartDate:
            type: string
            format: date-time
            example: "2039-12-31T00:00:00.000Z"
          msrps:
            type: string
            example: "d"
          name:
            type: string
            example: "sport"
          nameLabel:
            type: string
            example: "Sport"
          recommendedMatch:
            type: boolean
            example: "false"
          recommendedMatchAlt:
            type: boolean
            example: "false"
          season:
            type: string
            example: "summer"
          seasonLabel:
            type: string
            example: "Summer"
          sortOrder:
            type: number
            example: 1
          suggestedMatch:
            type: boolean
            example: false
          suggestedMatchAlt:
            type: boolean
            example: false
          tyreStartDate:
            type: string
            format: date-time
            example: "2039-12-31T00:00:00.000Z"
          usages:
            type: string
            example: "route"
          usagesLabel:
            type: string
            example: "Route"
          cai:
            type: string
            example: "56"
          categories:
            type: string
            example: "route"
          categoriesLabel:
            type: string
            example: "Route"
          compatibleAlternative:
            type: boolean
            example: false
          compatibleMatch:
            type: boolean
            example: false
          compatibleMatchAlt:
            type: boolean
            example: false
          ean:
            type: string
            example: "32"
          exactMatch:
            type: boolean
            example: true
          exactMatchAlt:
            type: boolean
            example: true
          family:
            type: string
            example: "pilot"
          familyLabel:
            type: string
            example: "Pilot"
          globalId:
            type: number
            example: 5
          has3pmsf:
            type: boolean
            example: false
          hasmpluss:
            type: boolean
            example: false
          isExtraLoad:
            type: boolean
            example: false
          isGreen:
            type: boolean
            example: false
          isLatestGeneration:
            type: boolean
            example: false
          isRunFlat:
            type: boolean
            example: false
          isTrackConnect:
            type: boolean
            example: false
          labelling:
            type: string
            example: "PneuFactory"
          lineEndDate:
            type: string
            format: date-time
            example: "2039-12-31T00:00:00.000Z"
          lineSoftLaunchDate:
            type: string
            format: date-time
            example: "2039-12-31T00:00:00.000Z"
          loadIndexDual:
            type: number
            example: 12
          locale:
            type: string
            example: "fr"
          manufMarkings:
            type: string
            example: "d"
          oeMarkings:
            type: string
            example: "no"
          position:
            type: string
            example: "both"
          productLineActivity:
            type: string
            example: "cars"
          structure:
            type: string
            example: "DF"
          stud:
            type: string
            example: "false"
          tyreEndDate:
            type: string
            format: date-time
            example: "2039-12-31T00:00:00.000Z"
          tyreSoftLaunchDate:
            type: string
            format: date-time
            example: "2039-12-31T00:00:00.000Z"
          warning:
            type: string
            example: "no"
          warranty:
            type: string
            example: "no"
    TyreProperties:
      type: object
      properties:
        isLowVisibility:
          type: boolean
          example: false
        lineStartDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        msrps:
          type: string
          example: "d"
        name:
          type: string
          example: "sport"
        nameLabel:
          type: string
          example: "Sport"
        recommendedMatch:
          type: boolean
          example: "false"
        recommendedMatchAlt:
          type: boolean
          example: "false"
        season:
          type: string
          example: "summer"
        seasonLabel:
          type: string
          example: "Summer"
        sortOrder:
          type: number
          example: 1
        suggestedMatch:
          type: boolean
          example: false
        suggestedMatchAlt:
          type: boolean
          example: false
        tyreStartDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        usages:
          type: string
          example: "route"
        usagesLabel:
          type: string
          example: "Route"
    TyreSets:
      type: array
      items:
        type: object
        properties:
          front:
            "$ref": "#/components/schemas/Tyres"
          rear:
            "$ref": "#/components/schemas/Tyres"
          tyreProperties:
            "$ref": "#/components/schemas/TyreProperties"
          globalId:
            type: number
            example: 12
          preference:
            type: number
            example: 1
          runflat:
            type: boolean
            example: false
    TyreSetsResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        tyresets:
          "$ref": "#/components/schemas/TyreSets"
    UsageBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        usages:
          type: string
          example: "route"
      required:
        - locale
    TyresResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        tyres:
          "$ref": "#/components/schemas/Tyres"
    TyresResponseFamily:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        tyres:
          type: array
          items:
            type: object
            properties:
              approvedSpeed:
                "$ref": "#/components/schemas/ApprovedSpeed"
              families:
                "$ref": "#/components/schemas/FamiliesSlug"
              dimensionType:
                "$ref": "#/components/schemas/DimensionType"
              cai:
                type: string
                example: "56"
              categories:
                type: string
                example: "route"
              categoriesLabel:
                type: string
                example: "Route"
              compatibleAlternative:
                type: boolean
                example: false
              compatibleMatch:
                type: boolean
                example: false
              compatibleMatchAlt:
                type: boolean
                example: false
              ean:
                type: string
                example: "32"
              exactMatch:
                type: boolean
                example: true
              exactMatchAlt:
                type: boolean
                example: true
              family:
                type: string
                example: "pilot"
              familyLabel:
                type: string
                example: "Pilot"
              globalId:
                type: number
                example: 5
              has3pmsf:
                type: boolean
                example: false
              hasmpluss:
                type: boolean
                example: false
              isExtraLoad:
                type: boolean
                example: false
              isGreen:
                type: boolean
                example: false
              isLatestGeneration:
                type: boolean
                example: false
              isRunFlat:
                type: boolean
                example: false
              isTrackConnect:
                type: boolean
                example: false
              labelling:
                type: string
                example: "PneuFactory"
              lineEndDate:
                type: string
                format: date-time
                example: "2039-12-31T00:00:00.000Z"
              lineSoftLaunchDate:
                type: string
                format: date-time
                example: "2039-12-31T00:00:00.000Z"
              loadIndexDual:
                type: number
                example: 12
              locale:
                type: string
                example: "fr"
              manufMarkings:
                type: string
                example: "d"
              oeMarkings:
                type: string
                example: "no"
              position:
                type: string
                example: "both"
              productLineActivity:
                type: string
                example: "cars"
              structure:
                type: string
                example: "DF"
              stud:
                type: string
                example: "false"
              tyreEndDate:
                type: string
                format: date-time
                example: "2039-12-31T00:00:00.000Z"
              tyreSoftLaunchDate:
                type: string
                format: date-time
                example: "2039-12-31T00:00:00.000Z"
              warning:
                type: string
                example: "no"
              warranty:
                type: string
                example: "no"
              isLowVisibility:
                type: boolean
                example: false
              lineStartDate:
                type: string
                format: date-time
                example: "2039-12-31T00:00:00.000Z"
              msrps:
                type: string
                example: "d"
              name:
                type: string
                example: "sport"
              nameLabel:
                type: string
                example: "Sport"
              recommendedMatch:
                type: boolean
                example: "false"
              recommendedMatchAlt:
                type: boolean
                example: "false"
              season:
                type: string
                example: "summer"
              seasonLabel:
                type: string
                example: "Summer"
              sortOrder:
                type: number
                example: 1
              suggestedMatch:
                type: boolean
                example: false
              suggestedMatchAlt:
                type: boolean
                example: false
              tyreStartDate:
                type: string
                format: date-time
                example: "2039-12-31T00:00:00.000Z"
              usages:
                type: string
                example: "route"
              usagesLabel:
                type: string
                example: "Route"
    SeasonBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        season:
          type: string
          example: "summer"
      required:
        - locale
    ByPlateBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        vehicleRegistrationNumber:
          type: string
          example: "AB123FR"
      required:
        - vehicleRegistrationNumber
    ByPlateFitment:
      type: array
      items:
        type: object
        properties:
          locale:
            type: string
            example: "fr-fr"
          productLineActivity: 
            type: string
            example: "4w"
          brand:
            type: string
            example: "Michelin"
          diameter:
            type: number
            example: 128
          loadIndex:
            type: number
            example: 12
          ratio:
            type: number
            example: 12
          speedIndex:
            type: string
            example: "E"
          width:
            type: string      
            example: "126"
          displaySize:
            type: string
            example: "185/68 R17 90V"
          position:
            type: string
            example: "both"
          structure:
            type: string
            example: "DF"
    ByPlateAttributes:
      type: array
      items:
        type: object
        properties:
          label:
            type: string
            example: "ABC"
          value:
            type: string
            example: "DEF"
    ByPlateVehicle:
      type: object
      properties:
        attributes:
          "$ref": "#/components/schemas/ByPlateAttributes"
        fitments:
          "$ref": "#/components/schemas/ByPlateFitment"
        model:
          type: string
          example: "Laguna"
    ByPlateVehicleResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        vehicles:
          "$ref": "#/components/schemas/ByPlateVehicle"    
    ByNameBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        name:
          type: string
          example: "pilot-sport-3"
      required:
        - locale
    ByFamilyBody:
      type: object
      properties:
        family:
          type: string
          example: "renault"
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
      required:
        - locale
    ByDimensionBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        diameter:
          type: number
          example: 128
        loadIndex:
          type: number
          example: 12
        ratio:
          type: number
          example: 12
        speedIndex:
          type: string
          example: "E"
        width:
          type: string      
          example: "126"
        category:
          type: string
          example: "T"
        isRunFlat:
          type: boolean
          example: false
        season:
          type: array
          items:
            type: string
            example: "summer"
        structure:
          type: string
          example: "D"
        tubeless:
          type: boolean
          example: false
        usage:
          type: string
          example: "route"
      required:
        - locale
        - diameter
        - ratio
        - width
    ByDiameterTop3Body:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        diameter:
          type: number
          example: 128
      required:
        - diameter
    ByDiameterTop3Tyres:
      type: array
      items:
        type: object
        properties:
          diameter:
            type: number
            example: 128
          loadIndex:
            type: number
            example: 12
          ratio:
            type: number
            example: 12
          speedIndex:
            type: string
            example: "E"
          width:
            type: string      
            example: "126"
          cai:
            type: string
            example: "23"
          code:
            type: string
            example: "24"
          globalId:
            type: number
            example: 12
          name:
            type: string
            example: "pilot"
          sortOrder:
            type: number
            example: 1
          structure:
            type: string
            example: "D"
    ByDiameterTop3Response:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        tyres:
          "$ref": "#/components/schemas/ByDiameterTop3Tyres"
    ByCategoryBody:
      type: object
      properties:
        locale:
          type: string
          example: "fr-fr"
        productLineActivity: 
          type: string
          example: "4w"
        brand:
          type: string
          example: "Michelin"
        categories:
          type: string
          example: "route"
      required:
        - locale
    Brands:
      type: array
      items:
        type: object
        properties:
          brand:
            type: string
            example: "Michelin"
    BrandsResponse:
      type: object
      properties:
        responseId:
          type: string
          example: "abcdef"
        count:
          type: integer
          example: 1
        success:
          type: boolean
          example: true
        serv_duration:
          type: integer
          example: 19
        logs:
          type: array
          items: 
            type : string
            example: "Ok"
        timings:
          type: array
          items: 
            type : string
            example: "200ms"
        brands:
          "$ref": "#/components/schemas/Brands"
    ProxyErrorResponse:
      type: object
      properties:
        fault: 
          type: object
          properties: 
            faultstring: 
              type: string
            detail: 
              type: object

  responses:
    bad_request:
      description: Bad Request
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: "BAD_USER"
              raison:
                type: string
                example: "Cannot find any active domain associated to user"
    internal_error_locale:
      description: 'Missings fields or Internal Error'
      content:
        application/json:
          schema:
            type: object
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: "Internal Error"
              raison:
                type: string
                example: "Error: Missing fields [locale] in request"
    '401':
      description: Unauthorised error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ProxyErrorResponse'
          example: |-
            {
                "fault": {
                    "faultstring": "Invalid ApiKey",
                    "detail": {
                        "errorcode": "oauth.v2.InvalidApiKey"
                    }
                }
            }

    '404':
      description: No response
      content:
        application/json:
          example: |-
            {
              "error": "No response",
              "status": 404
            }
    '500':
      description: Internal server error   
      content:
        application/json:
          example: |-
            {
              "error": "Internal server error",
              "status": 500
            }
    '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProxyErrorResponse'
              example: |-
                {
                   "fault": {
                      "faultstring": "The Service is temporarily unavailable", 
                      "detail": {
                           "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable"
                       }
                    }
                }
    '504':
          description: Gateway timeout. A response was not available to send within the stipulated time limit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProxyErrorResponse'
              example: |-
                {
                    "fault": {
                        "faultstring": "Gateway Timeout",
                        "detail": {
                            "errorcode": "messaging.adaptors.http.flow.GatewayTimeout"
                        }
                    }
                }
  examples:
    BAD_USER:
      value: 
        reason: Missing authorization header
    NO_DOMAIN:
      value: 
        reason: Cannot find any active domain associated to user
    INTERNAL:
      value: 
        reason: Internal Error
    MISSING_LOCALE:
      value: 
        reason: 'Error: Missing fields [locale] in request'
    tyres_response_response:
      summary: Tyres response
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyresets: [
            {
              front:
                {
                  approvedSpeed: [
                    {
                      load: {
                        value: 25,
                        unit: "g"
                      },
                      pressure: {
                        value: 2,
                        unit: "Bar"
                      },
                      speed: {
                        value: 25,
                        unit: "km/h"
                      }
                    }
                  ],
                  families: [
                    {
                      name: "pneuA",
                      slug: "pneuA"
                    }
                  ],
                  brand: "Brand",
                  cai: "56",
                  categories: "route",
                  categoriesLabel: "route",
                  compatibleAlternative: false,
                  compatibleMatch: false,
                  compatibleMatchAlt: false,
                  diameter: 128,
                  ean: "32",
                  exactMatch: true,
                  exactMatchAlt: true,
                  family: "pneu",
                  familyLabel: "pneu",
                  globalId: 5,
                  has3pmsf: false,
                  hasmpluss: false,
                  isExtraLoad: false,
                  isGreen: false,
                  isLatestGeneration: false,
                  isLowVisibility: false,
                  isRunFlat: false,
                  isTrackConnect: false,
                  labelling: "PneuFactry",
                  lineEndDate: "2039-12-31T00:00:00.000Z",
                  lineSoftLaunchDate: "2039-12-31T00:00:00.000Z",
                  lineStartDate: "2039-12-31T00:00:00.000Z",
                  loadIndex: 12,
                  loadIndexDual: 14,
                  locale: "us",
                  manufMarkings: "d",
                  msrps: "d",
                  name: "pneu_A",
                  nameLabel: "pneu1",
                  oeMarkings: "A",
                  position: "both",
                  productLineActivity: "Cars",
                  ratio: 12,
                  recommendedMatch: false,
                  recommendedMatchAlt: false,
                  season: "summer",
                  seasonLabel: "summer",
                  sortOrder: 1,
                  speedIndex: "E",
                  structure: "DF",
                  stud: "false",
                  suggestedMatch: false,
                  suggestedMatchAlt: false,
                  tyreEndDate: "2039-12-31T00:00:00.000Z",
                  tyreSoftLaunchDate: "2039-12-31T00:00:00.000Z",
                  tyreStartDate: "2039-12-31T00:00:00.000Z",
                  usages: "route",
                  usagesLabel: "route",
                  warning: "no",
                  warranty: "no",
                  width: "126",
                }
            }, 
            rear: 
                {
                  approvedSpeed: [
                    {
                      load: {
                        value: 25,
                        unit: "g"
                      },
                      pressure: {
                        value: 2,
                        unit: "Bar"
                      },
                      speed: {
                        value: 25,
                        unit: "km/h"
                      }
                    }
                  ],
                  families: [
                    {
                      name: "pneuA",
                      slug: "pneuA"
                    }
                  ],
                  brand: "Brand",
                  cai: "56",
                  categories: "route",
                  categoriesLabel: "route",
                  compatibleAlternative: false,
                  compatibleMatch: false,
                  compatibleMatchAlt: false,
                  diameter: 128,
                  ean: "32",
                  exactMatch: true,
                  exactMatchAlt: true,
                  family: "pneu",
                  familyLabel: "pneu",
                  globalId: 5,
                  has3pmsf: false,
                  hasmpluss: false,
                  isExtraLoad: false,
                  isGreen: false,
                  isLatestGeneration: false,
                  isLowVisibility: false,
                  isRunFlat: false,
                  isTrackConnect: false,
                  labelling: "PneuFactry",
                  lineEndDate: "2039-12-31T00:00:00.000Z",
                  lineSoftLaunchDate: "2039-12-31T00:00:00.000Z",
                  lineStartDate: "2039-12-31T00:00:00.000Z",
                  loadIndex: 12,
                  loadIndexDual: 14,
                  locale: "us",
                  manufMarkings: "d",
                  msrps: "d",
                  name: "pneu_A",
                  nameLabel: "pneu1",
                  oeMarkings: "A",
                  position: "both",
                  productLineActivity: "Cars",
                  ratio: 12,
                  recommendedMatch: false,
                  recommendedMatchAlt: false,
                  season: "summer",
                  seasonLabel: "summer",
                  sortOrder: 1,
                  speedIndex: "E",
                  structure: "DF",
                  stud: "false",
                  suggestedMatch: false,
                  suggestedMatchAlt: false,
                  tyreEndDate: "2039-12-31T00:00:00.000Z",
                  tyreSoftLaunchDate: "2039-12-31T00:00:00.000Z",
                  tyreStartDate: "2039-12-31T00:00:00.000Z",
                  usages: "route",
                  usagesLabel: "route",
                  warning: "no",
                  warranty: "no",
                  width: "126",
                }
          ]
    by_dimension_response:
      summary: By dimension response
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyres: [
            {
              approvedSpeed: [
                {
                  load: {
                    value: 25,
                    unit: "g"
                  },
                  pressure: {
                    value: 2,
                    unit: "Bar"
                  },
                  speed: {
                    value: 25,
                    unit: "km/h"
                  }
                }
              ],
              families: [
                {
                  name: "pneuA",
                  slug: "pneuA"
                }
              ],
              brand: "Brand",
              cai: "56",
              categories: "route",
              categoriesLabel: "route",
              compatibleAlternative: false,
              compatibleMatch: false,
              compatibleMatchAlt: false,
              diameter: 128,
              ean: "32",
              exactMatch: true,
              exactMatchAlt: true,
              family: "pneu",
              familyLabel: "pneu",
              globalId: 5,
              has3pmsf: false,
              hasmpluss: false,
              isExtraLoad: false,
              isGreen: false,
              isLatestGeneration: false,
              isLowVisibility: false,
              isRunFlat: false,
              isTrackConnect: false,
              labelling: "PneuFactry",
              lineEndDate: "2039-12-31T00:00:00.000Z",
              lineSoftLaunchDate: "2039-12-31T00:00:00.000Z",
              lineStartDate: "2039-12-31T00:00:00.000Z",
              loadIndex: 12,
              loadIndexDual: 14,
              locale: "us",
              manufMarkings: "d",
              msrps: "d",
              name: "pneu_A",
              nameLabel: "pneu1",
              oeMarkings: "A",
              position: "both",
              productLineActivity: "Cars",
              ratio: 12,
              recommendedMatch: false,
              recommendedMatchAlt: false,
              season: "summer",
              seasonLabel: "summer",
              sortOrder: 1,
              speedIndex: "E",
              structure: "DF",
              stud: "false",
              suggestedMatch: false,
              suggestedMatchAlt: false,
              tyreEndDate: "2039-12-31T00:00:00.000Z",
              tyreSoftLaunchDate: "2039-12-31T00:00:00.000Z",
              tyreStartDate: "2039-12-31T00:00:00.000Z",
              usages: "route",
              usagesLabel: "route",
              warning: "no",
              warranty: "no",
              width: "126",
            }
          ]
        completeSearch: true
    vehicles_response:
      summary: Vehicles response
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        vehicles: {
          Cylinder: 120,
          Energy: "electric",
          Maker: "audi",
          Model: "A4",
          Motor: "2.0 143ch",
          Segment: "a4",
          Year": 2019
        }
    commonBody:
      summary: Body Request
      value:
        locale: "fr"
    vehiclesBody:
      summary: Body Request for Vehicles search
      value:
        Cylinder: 1500
        Maker: "audi"
        Model: "a4"
        Motor": "2.0 143ch"
        Segment: "A4"
        Year: 2012
        columns_to_fetch: [ "" ]
        locale: "fr"
    usageResponse:
      summary: Response for Usage Request
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        usages: {
          usage: [
            "routes"
            ]
        }    
    seasonResponse:
      summary: Response for Seasons Request
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        seasons: {
          season: [
            "summer"
            ]
        }
    namesResponse:
      summary: Response for Names Request
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        names: {
          name: [
            "pilot"
            ]
        }  
    makersResponse:
      summary: Response for Makers Request
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        makers: [
          {
            code: "alfa",
            name: "ALFA",
            segments: [
              {
                code: "romeo",
                name: "ROMEO",
              }
            ]
          } 
        ]
    healthCheckResponse:
      summary: Response for Health Check
      value: 
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        error_logs: [
            error_message: "no error"
          ]
        status_is_ok: true
        test_logs: [
            "ok"
          ]
    fitments_body:
      summary: Body Request for Fitments search
      value:
        Cylinder: 1500
        Maker: "audi"
        Model: "a4"
        Motor": "2.0 143ch"
        Segment: "A4"
        Year: 2012
        locale: "fr"
    fitmentsResponse:
      summary: Response retrieving Fitments
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        vehicles: [
          {
            fitments: [
              {
                series: "H",
                runflat: false,
                front: {
                  fitment: {
                    normalPressure: 3.4,
                    highwayPressure: 3.9,
                    maxLoad: 1000,
                    category: "T",
                    dimension: {
                      width: "185",
                      ratio: 68,
                      diameter: "17",
                      loadIndex: 90,
                      speedIndex: "V",
                      displaySize: "185/68 R17 90V"
                    },
                    originalTyres: ["pilot"],
                    exclusions: {
                      oeMarkings: ["N"],
                      technologies: ["flat"],
                      seasons: ["summer"],
                      categories: ["A"],
                      products: ["2"],
                      seasonsAndOeMarkings: ["fd"],
                      articles: ["fd"]
                    },
                    inclusions: [
                      {
                        IsOriginalEquipment: true,
                        Preference: 0,
                        TyreCountryCode: "fr"
                      }
                    ],
                  }
                },
                rear: {
                  fitment: {
                    normalPressure: 3.4,
                    highwayPressure: 3.9,
                    maxLoad: 1000,
                    category: "T",
                    dimension: {
                      width: "185",
                      ratio: 68,
                      diameter: "17",
                      loadIndex: 90,
                      speedIndex: "V",
                      displaySize: "185/68 R17 90V"
                    },
                    originalTyres: ["pilot"],
                    exclusions: {
                      oeMarkings: ["N"],
                      technologies: ["flat"],
                      seasons: ["summer"],
                      categories: ["A"],
                      products: ["2"],
                      seasonsAndOeMarkings: ["fd"],
                      articles: ["fd"]
                    },
                    inclusions: [
                      {
                        IsOriginalEquipment: true,
                        Preference: 0,
                        TyreCountryCode: "fr"
                      }
                    ]
                  }
                }
              }
            ],
            Cylinder: 120,
            Energy: "electric",
            Maker: "audi",
            Model: "A4",
            Motor: "2.0 143ch",
            Segment: "a4",
            Year": 2019,
            oeMarkingsMaker: [
              "N0"
            ],
            warning: "no"
          }
        ]
    familiesResponse:
      summary: Response for Families Request
      value: 
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        families: {
          family: [
            "pilot"
            ]
        }
    dimensionsBody:
      summary: Body for dimensions Request
      value: 
        brand: "Michelin"
        diameter: 18
        loadIndex:  78
        locale: "fr"
        ratio: 55
        speedIndex: "R"
        width: "168"
    dimensionsResponse:
      summary: Response for Dimensions Request
      value: 
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        dimensions: {
            "diameter": [
                13
            ],
            "loadIndex": [
                66
            ],
            "ratio": [
                25
            ],
            "speedIndex": [
                "N"
            ],
            "width": [
                "7.5"
            ]
          }
    categoriesResponse:
      summary: Response for Families Request
      value: 
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        categories: {
          category: [
            "auto"
            ]
        }
    byVehicleBody:
      summary: Body for By Vehicle Request
      value: 
        locale: "fr"
        season: ["summer"]
        usage: "route"
        brand: "Michelin"
        Maker: "peugeot"
        Segment: "207"
        Model: "207"
        Year: 2010,
        Motor: "1.4 95"
        fitments: [
          {
            series: "S",
            runflat: false,
            front: {
              fitment: {
                normalPressure: 3.4,
                highwayPressure: 3.4,
                category: "Car",
                dimension: {
                  width: "188",
                  ratio: 66,
                  diameter: "16",
                  loadIndex: 89,
                  speedIndex: "T",
                  displaySize: "188/66 R16 89 T"
                },
                originalTyres: ["no"],
                exclusions: {
                  oeMarkings: [
                    "F",
                  ],
                  technologies: [
                    "Runflat",
                  ],
                  seasons": ["summer"],
                  categories": ["Van"],
                  products: ["tyres"],
                  seasonsAndOeMarkings": ["NO"]
                },
                inclusions: [
                  {
                    IsOriginalEquipment: true,
                    Preference: 0,
                    TyreCountryCode: "fr"
                  }
                ]
              }
            },
            rear: {
              fitment: {
                normalPressure: 3.4,
                highwayPressure: 3.4,
                category: "Car",
                dimension: {
                  width: "188",
                  ratio: 66,
                  diameter: "16",
                  loadIndex: 89,
                  speedIndex: "T",
                  displaySize: "188/66 R16 89 T"
                },
                originalTyres: ["no"],
                exclusions: {
                  oeMarkings: [
                    "F",
                  ],
                  technologies: [
                    "Runflat",
                  ],
                  seasons": ["summer"],
                  categories": ["Van"],
                  products: ["tyres"],
                  seasonsAndOeMarkings": ["NO"]
                },
                inclusions: [
                  {
                    IsOriginalEquipment: true,
                    Preference: 0,
                    TyreCountryCode: "fr"
                  }
                ],
              }
            }
          }
        ]
        oeMarkingsMaker: ["NO"]
    tyreSetsResponse:
      summary: Response of type tyreSets
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyresets: [
          {
            front: {
              approvedSpeed": ["123"],
              families": [
                {
                  name: "alpine",
                  slug: "alpine"
                    }
                ],
                active: true,
                brand: "Michelin",
                cai: "13265",
                categories: "auto",
                categoriesLabel: "auto",
                diameter: 16,
                ean: "351",
                family: "alpine",
                familyLabel: "alpine",
                globalId: 3,
                has3pmsf: true,
                hasmpluss: true,
                isGreen: false,
                isLatestGeneration: false,
                isLowVisibility: false,
                isRunFlat: false,
                isTrackConnect: false,
                labelling: "CB",
                lineEndDate: "2088-04-30T00:00:00.000Z",
                lineSoftLaunchDate: "2019-05-01T00:00:00.000Z",
                lineStartDate: "2019-05-01T00:00:00.000Z",
                loadIndex: 89,
                loadIndexDual: null,
                locale: "fr",
                manufMarkings: "NO",
                msrps: "NI",
                name: "alpine6",
                nameLabel: "ALPINE 6",
                oeMarkings": "NO",
                position: "both",
                productLineActivity: "car",
                ratio: 66,
                season: "winter",
                seasonLabel: "winter",
                sortOrder: 3,
                speedIndex: "U",
                structure: "S",
                stud: false,
                tyreEndDate: "2094-01-31T00:00:00.000Z",
                tyreSoftLaunchDate: "2019-07-01T00:00:00.000Z",
                tyreStartDate: "2019-07-01T00:00:00.000Z",
                usages: "route",
                usagesLabel: "route",
                width: "186",
                exactMatch": true
            },
            rear: {
              approvedSpeed": ["123"],
              families": [
                {
                  name: "alpine",
                  slug: "alpine"
                    }
                ],
                active: true,
                brand: "Michelin",
                cai: "13265",
                categories: "auto",
                categoriesLabel: "auto",
                diameter: 16,
                ean: "351",
                family: "alpine",
                familyLabel: "alpine",
                globalId: 3,
                has3pmsf: true,
                hasmpluss: true,
                isGreen: false,
                isLatestGeneration: false,
                isLowVisibility: false,
                isRunFlat: false,
                isTrackConnect: false,
                labelling: "CB",
                lineEndDate: "2088-04-30T00:00:00.000Z",
                lineSoftLaunchDate: "2019-05-01T00:00:00.000Z",
                lineStartDate: "2019-05-01T00:00:00.000Z",
                loadIndex: 89,
                loadIndexDual: null,
                locale: "fr",
                manufMarkings: "NO",
                msrps: "NI",
                name: "alpine6",
                nameLabel: "ALPINE 6",
                oeMarkings": "NO",
                position: "both",
                productLineActivity: "car",
                ratio: 66,
                season: "winter",
                seasonLabel: "winter",
                sortOrder: 3,
                speedIndex: "U",
                structure: "S",
                stud: false,
                tyreEndDate: "2094-01-31T00:00:00.000Z",
                tyreSoftLaunchDate: "2019-07-01T00:00:00.000Z",
                tyreStartDate: "2019-07-01T00:00:00.000Z",
                usages: "route",
                usagesLabel: "route",
                width: "186",
                exactMatch": true
            },
            name: "alpine-6",
            usages: "route",
            season: "winter",
            nameLabel: "ALPINE 6",
            usagesLabel: "route",
            seasonLabel: "winter",
            lineStartDate: "2019-05-01T00:00:00.000Z",
            sortOrder": 3,
            globalId: 3,
            isLowVisibility: false,
            tyreStartDate: "2019-07-01T00:00:00.000Z",
            msrps": "no",
            preference: 200,
            recommendedMatch: true,
            recommendedMatchAlt: false,
            suggestedMatch: false,
            suggestedMatchAlt: false
          }
        ]
    usageBody:
      summary: Body Request for Usage
      value:
        locale: "fr"
        usages: "route"
    seasonBody:
      summary: Body Request for Season
      value:
        locale: "fr"
        season: "summer"
    plateBody:
      summary: Body Request for Plate
      value:
        vehicleRegistrationNumber: "ABC123"        
    byPlateVehicleResponse:
      summary: Response for By Plate Request
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        vehicle: {
          attributes: [
            {
              label: "vehicle",
              value: "car"
            }
          ],
          fitments: [
            {
              diameter": 18,
              displaySize": "185/60 R18 109/107 T",
              loadIndex": 109,
              position": "both",
              ratio": 60,
              speedIndex": "T",
              structure": "flat",
              width: "200"
            }
          ],
          model: "207"
        }
    byNameBody:
      summary: Body Request for Name
      value:
        locale: "fr"
        name: "pilot"
    byFamilyBody:
      summary: Body Request for Name
      value:
        locale: "fr"
        family: "pilot"
    byDiameterTop3Body:
      summary: Body Request for Name
      value:
        diameter: 55
    byDimensionBody:
      summary: Body For Request By Dimension
      value:
        season: ["summer"]
        usage: "route"
        width: "195"
        ratio: 65
        diameter: 18
        loadIndex: 88
        speedIndex: "T"
        brand: "Michelin"
        locale: "fr"
        category: "car"
        isRunFlat: true
        structure: "flat"
        tubeless: true
    byDiameterTop3Response:
      summary: Response for Request By Diameter Top 3
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyres: [
          {
            cai: "5",
            code: "CF",
            diameter": 160,
            globalId": 2,
            loadIndex": 75,
            name": "pilot",
            ratio": 16,
            sortOrder": 1,
            speedIndex": "A",
            structure": "flat",
            width": "175"
          }
        ]
    byCategoryBody:
      summary: Body for By Category Request
      value:
        locale: "fr"
        categories: "pilot"
    brandsResponse:
      summary: Response for Request Brands
      value: 
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        brands: [
          {
            brand: ["Michelin"]
          }  
        ]      