openapi: 3.0.1
info:
    version: '1.0.0'
    title: Tyre Selector Bike 
    description: API providing various tyres or properties regarding parameters for the Bike Fr ProductLine
    termsOfService: ''
    contact:
      name: API Support
      email: devportal.support@michelin.com
      url: 'https://developer.michelin.com/en/contact'
servers:
  - url: https://api.michelin.com/tyd-tireselector-bike/v2
    description: production
  - url: https://indus.api.michelin.com/tire-selector-bike/v2
    description: indus
  - url: https://dev.api.michelin.com/tire-selector-bike/v2
    description: dev
tags:
  - name: Tires
    description: API providing tires regarding parameters like dimensions, or others parameters
  - name: Others
    description: API providing results that are not related to Tires
security:
  - oAuth2Prod: [tyd-user-login]
  - oAuth2Indus: [tyd-user-login]
  - oAuth2Dev: [tyd-user-login]
  
paths: 
  /usages: 
    post:
      description: 'Get all the distincts usages (with filter on cycle type if specified)'
      operationId: 'getUsages'
      tags:
        - Others
      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/UsagesBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/usages'
          content:
            application/json:
              schema: 
                "$ref": "#/components/schemas/UsagesResponse"
        '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 all the distincts usages (with filter on cycle type if specified)
  /dimensions:
    post:
      description: 'Get all the distincts dimensions (with filter on cycle type if specified)'
      operationId: 'getDimensions'
      tags:
        - Others
      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: get all the distincts dimensions (with filter on cycle type if specified)
  /cycle_types:
    post:
      description: 'Get all the distincts cycle types'
      operationId: 'getCycleTypes'
      tags:
        - Others
      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/CycleTypesBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/cycle_types'
          content:
              application/json:
                schema: 
                  "$ref": "#/components/schemas/CycleTypesResponse"
        '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 all the distincts cycle types
  /by_usage:
    post:
      description: 'Get tyres for the specified usage and cycle type (if CT specified)'
      operationId: 'byUsage'
      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/ByUsageBody"    
      responses:
        '200':
          description: 'Request was successful for /search/v2/by_usage'
          content:
            application/json:
              schema: 
                "$ref": "#/components/schemas/ByUsageResponse"
        '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 tyres for the specified usage and cycle type (if CT specified)
  /by-dimension:
    post: 
      description: 'Get all the tyres for the specified dimensions'
      operationId: 'byDimension'
      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/ByDimensionBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by_dimension'
          content:
            application/json:
              schema: 
                "$ref": "#/components/schemas/ByDimensionResponse"
        '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 all the tyres for the specified dimensions
  /by_cycle_type:
    post: 
      description: 'Get all the tyres for the specified usage'
      operationId: 'byCycletype'
      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/ByCycleTypeBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/by_cycle_type'
          content:
            application/json:
              schema: 
                "$ref": "#/components/schemas/ByCycleTypeResponse"
        '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 all the tyres for the specified usage
  /all_tyres:
    post: 
      description: 'Get all the tyres availables'
      operationId: 'allTyres'
      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/AllTyresBody"
      responses:
        '200':
          description: 'Request was successful for /search/v2/all_tyres'
          content:
            application/json:
              schema: 
                "$ref": "#/components/schemas/ByCycleTypeResponse"
        '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 all the tyres availables


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://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
    UsagesBody:
      type: object
      properties:
        cycleType:
          type: string
          example: "road"
        kind: 
          type: string
          example: "tubular"
        locale:
          type: string
          example: "fr-fr"
        productLineActivity:
          type: string
          example: "BI"
      required: 
        - locale
        - productLineActivity
    Usage:
      type: object
      properties:
        name:
          type: string
          example: "CYCLOCROSS"
        key:
          type: string
          example: "cyclocross"    
    Usages:
      type: array
      items:
        "$ref": "#/components/schemas/Usage"
    UsagesResponse:
      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: 
          "$ref": "#/components/schemas/Usages"
    DimensionsBody:
      type: object      
      properties:
        cycleType:
          type: string
          example: "road"
        kind: 
          type: string
          example: "tubular"
        locale:
          type: string
          example: "fr-fr"
        productLineActivity:
          type: string
          example: "BI"
      required: 
        - cycleType
        - locale
        - productLineActivity 
    Diameter:
      type: object
      properties:
        etrto:
          type: number
          example: 456
        mm:
          type: number
          example: 500
        inch:
          type: number
          example: 12  
    Width:
      type: object
      properties:
        etrto:
          type: number
          example: 18
        mm:
          type: number
          example: 18
        inch:
          type: number
          example: 2  
    Payload:
      type: object
      properties:
        diameter: 
          "$ref": "#/components/schemas/Diameter"
        width: 
          "$ref": "#/components/schemas/Width" 
    Dimension:
      type: object
      properties:
        payload: 
          "$ref": "#/components/schemas/Payload"
        display:
          type: string
          example: "18-468 (600x30HOOKED)"
    Dimensions:
      type: array
      items:   
        "$ref": "#/components/schemas/Dimension"
    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"
    CycleTypesBody:
      type: object
      properties:
        kind:
          type: string
          example: "route"
        locale:
          type: string
          example: "fr-fr"
        productLineActivity:
          type: string
          example: "BI"
      required:
        - locale
        - productLineActivity
    CycleType:
      type: object
      properties:
        picto:
          type: string
          example: "city"
        name:
          type: string
          example: "CITY"
        slug:
          type: string
          example: "city"
    CycleTypes:
      type: array
      items:
        "$ref": "#/components/schemas/CycleType"
    CycleTypesResponse:
      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"
        cycle_types: 
         "$ref": "#/components/schemas/CycleTypes"
    ByUsageBody:
      type: object
      properties:
        usage:
          type: string
          example: "urban"
        cycleType:
          type: string
          example: "city"
        locale:
          type: string
          example: "fr-fr"
        productLineActivity:
          type: string
          example: "BI"
      required:
        - usage
        - locale
        - productLineActivity
    Price:
      type: object
      properties:
        startDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        value:
          type: number
          example: 15
        line:
          type: string
          example: "premium"
        region:
          type: string
          example: "france"
        currency: 
          type: string
          example: "EUR"
        type: 
          type: string
          example: "example" 
    TerrainType:
      type: object
      properties:              
        key:
          type: string
          example: "asphalt"
        name: 
          type: string
          example: "ASPHALT"        
    TerrainTypes:
      type: array
      items:
        "$ref": "#/components/schemas/TerrainType"
    TPI:
      type: object
      properties:              
        key:
          type: string
          example: "32"
        name: 
          type: string
          example: "32"        
    TPIs:
      type: array
      items:
        "$ref": "#/components/schemas/TPI"
    TreadPatternTech:
      type: object
      properties:              
        key:
          type: string
          example: "star"
        name: 
          type: string
          example: "STAR"        
    TreadPatternTechs:
      type: array
      items:
        "$ref": "#/components/schemas/TreadPatternTech"
    RubberTech:
      type: object
      properties:              
        key:
          type: string
          example: "magi"
        name: 
          type: string
          example: "MAGI"        
    RubberTechs:
      type: array
      items:
        "$ref": "#/components/schemas/RubberTech"       
    CasingTech:
      type: object
      properties:              
        key:
          type: string
          example: "city"
        name: 
          type: string
          example: "CITY"        
    CasingTechs:
      type: array
      items:
        "$ref": "#/components/schemas/CasingTech"     
    OtherTech:
      type: object
      properties:              
        key:
          type: string
          example: "e-bike"
        name: 
          type: string
          example: "E-BIKE"        
    OtherTechs:
      type: array
      items:
        "$ref": "#/components/schemas/OtherTech"             
    Pressure:
      type: object
      properties:
        max:
          "$ref": "#/components/schemas/UnitValue"
        min:
          "$ref": "#/components/schemas/UnitValue"
    UnitValue:
      type: object
      properties:
        value:
          type: number
          example: 6
        unit: 
          type: string
          example: "bar"        
    Line:
      type: object
      properties:
        picto:
          type: string
          example: "premium"
        name:
          type: string
          example: "PREMIUM"
        slug:
          type: string
          example: "premium"
    Family:
      type: object
      properties:
        picto:
          type: string
          example: "city"
        name:
          type: string
          example: "CITY"
        slug:
          type: string
          example: "city"      
    Tyre:
      type: object
      properties: 
        width:
          "$ref": "#/components/schemas/Width" 
        diameter:
          "$ref": "#/components/schemas/Diameter"
        price: 
          "$ref": "#/components/schemas/Price"
        terrainTypes:
          "$ref": "#/components/schemas/TerrainTypes"
        tpi:
          "$ref": "#/components/schemas/TPIs"
        treadPatternTech: 
          "$ref": "#/components/schemas/TreadPatternTechs"
        rubberTech:
          "$ref": "#/components/schemas/RubberTechs"
        usages:
          "$ref": "#/components/schemas/Usages"
        casingTech:
          "$ref": "#/components/schemas/CasingTechs"
        otherTech:
          "$ref": "#/components/schemas/OtherTechs"
        pressure:
          "$ref": "#/components/schemas/Pressure"
        cycleType:
          "$ref": "#/components/schemas/CycleType"
        line:
          "$ref": "#/components/schemas/Line"
        family: 
          "$ref": "#/components/schemas/Family"
        createDate":
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        startDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        endDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        softLaunchDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        updateDate:
          type: string
          format: date-time
          example: "2039-12-31T00:00:00.000Z"
        active:
          type: boolean
          example: true
        sortOrder:
          type: number
          example: 4
        globalId:
          type: number
          example: 2
        displaySize:
          type: string
          example: "46-455 (18x3.10HOOKED)"
        sealing:
          type: string
          example: "TUBE TYPE"
        activityLevel:
          type: string
          example: "high"
        position:
          type: string
          example: "both"
        name:
          type: string
          example: "CITY STREET"
        productLineActivity:
          type: string
          example: "BI"
        marketPerimeter:
          type: string
          example: "WORLD"
        categMarketing: 
          type: string
          example: "adult"
        typeTube:
          type: string
          example: "TUBELESS"
        ean:
          type: string
          example: "123546"
        cai:
          type: string
          example: "54130"
        webProductDesignation:
          type: string
          example: "58-154 (24.5x1.80) CITY"
        replace: 
          type: string
          example: "CITY 2"
        treadPatternColor:
          type: string
          example: "BLACK"
        bead:
          type: string
          example: "WIRE BEAD"
        sidewallColor:
          type: string
          example: "BLACK"
        displayName:
          type: string
          example: "PROTEK LINE"
        slug: 
          type: string
          example: "michelin-protek-line"
        locale:
          type: string
          example: "fr-fr"
        brand:
          type: string
          example: "Michelin"
        weight:
          type: string
          example: "575"
        segmentMarketing:
          type: string
          example: "ACCESS LINE"
        mspn:
          type: string
          example: "84434"
        upc:
          type: string
          example: "08669122383"
        rimType:
          type: string
          example: "HOOKED"
        reinforcementTech:
          type: string
          example: "PROTECTION"
        rearFitCompatible:
          type: string
          example: "NO"
        sidewallType:
          type: string
          example: "GUMWALL"
        shore:
          type: string
          example: "yes"
        kind:
          type: string
          example: "tyre"              
    Tyres:
      type: array
      items:   
        "$ref": "#/components/schemas/Tyre"      
    ByUsageResponse:
      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"
    ByDimensionBody:
      type: object
      properties:
        width:
          "$ref": "#/components/schemas/Width" 
        diameter:
          "$ref": "#/components/schemas/Diameter" 
        discipline:
          type: string
          example: "rally"
        kind:
          type: string
          example: "route"
        cycleType:
          type: string
          example: "road"
        locale:
          type: string
          example: "fr-fr"
        productLineActivity:
          type: string
          example: "BI"  
      required:
        - diameter
        - cycleType
        - locale
        - productLineActivity     
    ByDimensionResponse:
      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"    
    ByCycleTypeBody:
      type: object
      properties:
        cycleType:
          type: string
          example: "road"
      required:
        - cycleType
    ByCycleTypeResponse:
      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"    
    AllTyresBody:
      type: object
      properties: 
        productLineActivity:
          type: string
          example: "BI"
        locale:
          type: string
          example: "fr-fr"
      required: 
        - productLineActivity
        - locale
    AllTyresResponse:
      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"    
    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'
    usagesBody:
      summary: Body for Usages Search
      value:
        cycleType: "road"
        kind: "tubular"
        locale: "fr-fr"
        productLineActivity: "BI"       
    usagesResponse:
      summary: Response for Usages Search
      value: 
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        usages: [{
          "name": "CYCLOCROSS",
          "key": "cyclocross"
        }]
    dimensionsBody:
      summary: Body for Dimensions Search
      value:
        cycleType: "road"
        kind: "tubular"
        locale: "fr-fr"
        productLineActivity: "BI"               
    dimensionsResponse:
      summary: Response for Dimensions Search
      value: 
        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: [{
          payload: {
            diameter: {
              inch: 13,
              "mm": 654,
              etrto: 456
            },
            width: {
              inch: 3,
              mm: 18,
              etrto: 18
            }
          },
          display: "18-468 (600x30HOOKED)"
        }]
    cycleTypesBody:
      summary: Body for Cycle Types Search
      value:
        kind: "tubular"
        locale: "fr-fr"
        productLineActivity: "BI"       
    cycleTypesResponse:
      summary: Response for Cycle Types Search
      value:    
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        cycle_types: [{
          "picto": "city",
          "name": "CITY",
          "slug": "city"
        }]
    byUsageBody:
      summary: Body for By Usage Search
      value:
        usage: "urban"
        cycleType: "city"
        locale: "fr-fr"
        productLineActivity: "BI"
    byUsageResponse:
      summary: Response for By Usage Search
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyres: [{
          width: {
            "etrto": 18,
            "mm": 18,
            "inch": 2  
          },
          diameter: {
           "etrto": 456,
           "mm": 500,
           "inch": 12  
          },
          price: {
            "startDate": "2039-12-31T00:00:00.000Z",
            "value": 15,
            "line": "premium",
            "region": "france",
            "currency": "EUR",
            "type": "example" 
          },
          "terrainTypes": [{
            "key": "asphalt",
            "name": "ASPHALT" 
          }],
          "tpi": [{
            "key": "32",
            "name": "32"
          }],
          "treadPatternTech": [{
            "key": "star",
            "name": "STAR" 
          }],
          "rubberTech": [{
            "key": "magi",
            "name": "MAGI"
          }],
          "usages": [{
            "name": "CYCLOCROSS",
            "key": "cyclocross"
          }],
          "casingTech": [{
            "key": "city",
            "name": "CITY"  
          }],
          "otherTech": [{
            "key": "e-bike",
            "name":  "E-BIKE"
          }],
          "pressure": {
            "max": {
              "value": 6,
              "unit": "bar" 
            },
            "min": {
              "value": 6,
              "unit": "bar" 
            }
          },            
          "cycleType": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "line": {
            "picto": "premium",
            "name": "PREMIUM",
            "slug": "premium"
          },
          "family": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "createDate": "2039-12-31T00:00:00.000Z",
          "startDate": "2039-12-31T00:00:00.000Z",
          "endDate": "2039-12-31T00:00:00.000Z",
          "softLaunchDate": "2039-12-31T00:00:00.000Z",
          "updateDate": "2039-12-31T00:00:00.000Z",
          "active": true,
          "sortOrder": 4,
          "globalId": 2,
          "displaySize": "46-455 (18x3.10HOOKED)",
          "sealing": "TUBE TYPE",
          "activityLevel": "high",
          "position": "both",
          "name": "CITY STREET",
          "productLineActivity": "BI",
          "marketPerimeter": "WORLD",
          "categMarketing": "adult",
          "typeTube": "TUBELESS",
          "ean": "123546",
          "cai": "54130",
          "webProductDesignation": "58-154 (24.5x1.80) CITY",
          "replace": "CITY 2",
          "treadPatternColor": "BLACK",
          "bead": "WIRE BEAD",
          "sidewallColor": "BLACK",
          "displayName": "PROTEK LINE",
          "slug": "michelin-protek-line",
          "locale": "fr-fr",
          "brand": "Michelin",
          "weight": "575",
          "segmentMarketing": "ACCESS LINE",
          "mspn": "84434",
          "upc": "08669122383",
          "rimType": "HOOKED",
          "reinforcementTech": "PROTECTION",
          "rearFitCompatible": "NO",
          "sidewallType": "GUMWALL",
          "shore": "yes",
          "kind": "tyre"
        }]          
    byDimensionBody:
      summary: Body for By Dimension Search
      value:
        width: {
          "etrto": 18,
          "mm": 18,
          "inch": 2  
        }
        diameter: {
           "etrto": 456,
           "mm": 500,
           "inch": 12  
        }
        discipline: "rally"
        kind: "route"
        cycleType: "road"
        locale: "fr-fr"
        productLineActivity: "BI"  
    byDimensionResponse:
      summary: Response for By Dimension Search
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyres: [{
          width: {
            "etrto": 18,
            "mm": 18,
            "inch": 2  
          },
          diameter: {
           "etrto": 456,
           "mm": 500,
           "inch": 12  
          },
          price: {
            "startDate": "2039-12-31T00:00:00.000Z",
            "value": 15,
            "line": "premium",
            "region": "france",
            "currency": "EUR",
            "type": "example" 
          },
          "terrainTypes": [{
            "key": "asphalt",
            "name": "ASPHALT" 
          }],
          "tpi": [{
            "key": "32",
            "name": "32"
          }],
          "treadPatternTech": [{
            "key": "star",
            "name": "STAR" 
          }],
          "rubberTech": [{
            "key": "magi",
            "name": "MAGI"
          }],
          "usages": [{
            "name": "CYCLOCROSS",
            "key": "cyclocross"
          }],
          "casingTech": [{
            "key": "city",
            "name": "CITY"  
          }],
          "otherTech": [{
            "key": "e-bike",
            "name":  "E-BIKE"
          }],
          "pressure": {
            "max": {
              "value": 6,
              "unit": "bar" 
            },
            "min": {
              "value": 6,
              "unit": "bar" 
            }
          },            
          "cycleType": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "line": {
            "picto": "premium",
            "name": "PREMIUM",
            "slug": "premium"
          },
          "family": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "createDate": "2039-12-31T00:00:00.000Z",
          "startDate": "2039-12-31T00:00:00.000Z",
          "endDate": "2039-12-31T00:00:00.000Z",
          "softLaunchDate": "2039-12-31T00:00:00.000Z",
          "updateDate": "2039-12-31T00:00:00.000Z",
          "active": true,
          "sortOrder": 4,
          "globalId": 2,
          "displaySize": "46-455 (18x3.10HOOKED)",
          "sealing": "TUBE TYPE",
          "activityLevel": "high",
          "position": "both",
          "name": "CITY STREET",
          "productLineActivity": "BI",
          "marketPerimeter": "WORLD",
          "categMarketing": "adult",
          "typeTube": "TUBELESS",
          "ean": "123546",
          "cai": "54130",
          "webProductDesignation": "58-154 (24.5x1.80) CITY",
          "replace": "CITY 2",
          "treadPatternColor": "BLACK",
          "bead": "WIRE BEAD",
          "sidewallColor": "BLACK",
          "displayName": "PROTEK LINE",
          "slug": "michelin-protek-line",
          "locale": "fr-fr",
          "brand": "Michelin",
          "weight": "575",
          "segmentMarketing": "ACCESS LINE",
          "mspn": "84434",
          "upc": "08669122383",
          "rimType": "HOOKED",
          "reinforcementTech": "PROTECTION",
          "rearFitCompatible": "NO",
          "sidewallType": "GUMWALL",
          "shore": "yes",
          "kind": "tyre"
        }]        
    byCycleTypeBody:
      summary: Body for By Cycle Type Search
      value: 
        cycleType: "road"
    byCycleTypeResponse:
      summary: Response for By Cycle Type Search
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyres: [{
          width: {
            "etrto": 18,
            "mm": 18,
            "inch": 2  
          },
          diameter: {
           "etrto": 456,
           "mm": 500,
           "inch": 12  
          },
          price: {
            "startDate": "2039-12-31T00:00:00.000Z",
            "value": 15,
            "line": "premium",
            "region": "france",
            "currency": "EUR",
            "type": "example" 
          },
          "terrainTypes": [{
            "key": "asphalt",
            "name": "ASPHALT" 
          }],
          "tpi": [{
            "key": "32",
            "name": "32"
          }],
          "treadPatternTech": [{
            "key": "star",
            "name": "STAR" 
          }],
          "rubberTech": [{
            "key": "magi",
            "name": "MAGI"
          }],
          "usages": [{
            "name": "CYCLOCROSS",
            "key": "cyclocross"
          }],
          "casingTech": [{
            "key": "city",
            "name": "CITY"  
          }],
          "otherTech": [{
            "key": "e-bike",
            "name":  "E-BIKE"
          }],
          "pressure": {
            "max": {
              "value": 6,
              "unit": "bar" 
            },
            "min": {
              "value": 6,
              "unit": "bar" 
            }
          },            
          "cycleType": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "line": {
            "picto": "premium",
            "name": "PREMIUM",
            "slug": "premium"
          },
          "family": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "createDate": "2039-12-31T00:00:00.000Z",
          "startDate": "2039-12-31T00:00:00.000Z",
          "endDate": "2039-12-31T00:00:00.000Z",
          "softLaunchDate": "2039-12-31T00:00:00.000Z",
          "updateDate": "2039-12-31T00:00:00.000Z",
          "active": true,
          "sortOrder": 4,
          "globalId": 2,
          "displaySize": "46-455 (18x3.10HOOKED)",
          "sealing": "TUBE TYPE",
          "activityLevel": "high",
          "position": "both",
          "name": "CITY STREET",
          "productLineActivity": "BI",
          "marketPerimeter": "WORLD",
          "categMarketing": "adult",
          "typeTube": "TUBELESS",
          "ean": "123546",
          "cai": "54130",
          "webProductDesignation": "58-154 (24.5x1.80) CITY",
          "replace": "CITY 2",
          "treadPatternColor": "BLACK",
          "bead": "WIRE BEAD",
          "sidewallColor": "BLACK",
          "displayName": "PROTEK LINE",
          "slug": "michelin-protek-line",
          "locale": "fr-fr",
          "brand": "Michelin",
          "weight": "575",
          "segmentMarketing": "ACCESS LINE",
          "mspn": "84434",
          "upc": "08669122383",
          "rimType": "HOOKED",
          "reinforcementTech": "PROTECTION",
          "rearFitCompatible": "NO",
          "sidewallType": "GUMWALL",
          "shore": "yes",
          "kind": "tyre"
        }]        
    allTyresBody:
      summary: Body for All Tyres Search
      value:
        locale: "fr-fr"
        productLineActivity: "BI"
    allTyresResponse:
      summary: Response for All Tyres Search
      value:
        responseId: "abcdef"
        count: 1
        success: true
        serv_duration: 19
        logs: ["Ok"]
        timings: ["200ms"]
        tyres: [{
          width: {
            "etrto": 18,
            "mm": 18,
            "inch": 2  
          },
          diameter: {
           "etrto": 456,
           "mm": 500,
           "inch": 12  
          },
          price: {
            "startDate": "2039-12-31T00:00:00.000Z",
            "value": 15,
            "line": "premium",
            "region": "france",
            "currency": "EUR",
            "type": "example" 
          },
          "terrainTypes": [{
            "key": "asphalt",
            "name": "ASPHALT" 
          }],
          "tpi": [{
            "key": "32",
            "name": "32"
          }],
          "treadPatternTech": [{
            "key": "star",
            "name": "STAR" 
          }],
          "rubberTech": [{
            "key": "magi",
            "name": "MAGI"
          }],
          "usages": [{
            "name": "CYCLOCROSS",
            "key": "cyclocross"
          }],
          "casingTech": [{
            "key": "city",
            "name": "CITY"  
          }],
          "otherTech": [{
            "key": "e-bike",
            "name":  "E-BIKE"
          }],
          "pressure": {
            "max": {
              "value": 6,
              "unit": "bar" 
            },
            "min": {
              "value": 6,
              "unit": "bar" 
            }
          },            
          "cycleType": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "line": {
            "picto": "premium",
            "name": "PREMIUM",
            "slug": "premium"
          },
          "family": {
            "picto": "city",
            "name": "CITY",
            "slug": "city"
          },
          "createDate": "2039-12-31T00:00:00.000Z",
          "startDate": "2039-12-31T00:00:00.000Z",
          "endDate": "2039-12-31T00:00:00.000Z",
          "softLaunchDate": "2039-12-31T00:00:00.000Z",
          "updateDate": "2039-12-31T00:00:00.000Z",
          "active": true,
          "sortOrder": 4,
          "globalId": 2,
          "displaySize": "46-455 (18x3.10HOOKED)",
          "sealing": "TUBE TYPE",
          "activityLevel": "high",
          "position": "both",
          "name": "CITY STREET",
          "productLineActivity": "BI",
          "marketPerimeter": "WORLD",
          "categMarketing": "adult",
          "typeTube": "TUBELESS",
          "ean": "123546",
          "cai": "54130",
          "webProductDesignation": "58-154 (24.5x1.80) CITY",
          "replace": "CITY 2",
          "treadPatternColor": "BLACK",
          "bead": "WIRE BEAD",
          "sidewallColor": "BLACK",
          "displayName": "PROTEK LINE",
          "slug": "michelin-protek-line",
          "locale": "fr-fr",
          "brand": "Michelin",
          "weight": "575",
          "segmentMarketing": "ACCESS LINE",
          "mspn": "84434",
          "upc": "08669122383",
          "rimType": "HOOKED",
          "reinforcementTech": "PROTECTION",
          "rearFitCompatible": "NO",
          "sidewallType": "GUMWALL",
          "shore": "yes",
          "kind": "tyre"
        }]   
    

