openapi: 3.2.0 info: title: Pagopa Products API version: '1.0' description: 'Operations tagged products across 2 of this provider''s published API definitions: pari-merchants-ecommerce.yml, pagopa-pari-ecommerce-openapi.yml. Each path carries the servers of the definition it was published in.' servers: - description: Test di Sviluppo url: https://api-io.dev.cstar.pagopa.it/idpay-itn/merchant-ecommerce x-internal: true - description: Test di Accettazione dell'Utente url: https://api-io.uat.cstar.pagopa.it/idpay-itn/merchant-ecommerce x-internal: true security: - Bearer: [] tags: - name: Products description: Operazioni relative all'elenco dei prodotti e al filtraggio paths: /products: get: tags: - Products summary: Restituisce la lista dei prodotti description: Lista prodotti operationId: getProductsBonusElettrodomestici deprecated: true parameters: - $ref: '#/components/parameters/page_query' - $ref: '#/components/parameters/size_query' - $ref: '#/components/parameters/sort_query' - $ref: '#/components/parameters/category_query' - $ref: '#/components/parameters/eprelCode_query' - $ref: '#/components/parameters/gtinCode_query' - $ref: '#/components/parameters/productFileId_query' - $ref: '#/components/parameters/productName_query' - $ref: '#/components/parameters/status_query' - $ref: '#/components/parameters/organizationId_query' responses: '200': $ref: '#/components/responses/GET_products_200_Response' '400': $ref: '#/components/responses/GET_products_400_Response' '401': $ref: '#/components/responses/GET_products_401_Response' '429': $ref: '#/components/responses/GET_products_429_Response' '500': $ref: '#/components/responses/GET_products_500_Response' servers: - description: Test di Sviluppo url: https://api-io.dev.cstar.pagopa.it/idpay-itn/merchant-ecommerce x-internal: true - description: Test di Accettazione dell'Utente url: https://api-io.uat.cstar.pagopa.it/idpay-itn/merchant-ecommerce x-internal: true /initiatives/{initiativeId}/products: parameters: - name: initiativeId in: path description: 'ENG: The initiative''s id - IT: Id dell''iniziativa' required: true schema: type: string maxLength: 24 pattern: ^[A-Za-z0-9_-]+$ get: tags: - Products summary: Restituisce la lista dei prodotti description: Lista prodotti operationId: getProducts parameters: - $ref: '#/components/parameters/page_query' - $ref: '#/components/parameters/size_query' - $ref: '#/components/parameters/sort_query' - $ref: '#/components/parameters/category_query' - $ref: '#/components/parameters/eprelCode_query' - $ref: '#/components/parameters/gtinCode_query' - $ref: '#/components/parameters/productFileId_query' - $ref: '#/components/parameters/productName_query' - $ref: '#/components/parameters/status_query' - $ref: '#/components/parameters/organizationId_query' responses: '200': $ref: '#/components/responses/GET_products_200_Response' '400': $ref: '#/components/responses/GET_products_400_Response' '401': $ref: '#/components/responses/GET_products_401_Response' '429': $ref: '#/components/responses/GET_products_429_Response' '500': $ref: '#/components/responses/GET_products_500_Response' servers: - description: Test di Sviluppo url: https://api-io.dev.cstar.pagopa.it/idpay-itn/merchant-ecommerce x-internal: true - description: Test di Accettazione dell'Utente url: https://api-io.uat.cstar.pagopa.it/idpay-itn/merchant-ecommerce x-internal: true components: responses: GET_products_401_Response: description: Authentication failed headers: Access-Control-Allow-Origin: $ref: '#/components/headers/Access-Control-Allow-Origin' X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' content: application/json: schema: $ref: '#/components/schemas/ErrorDTO' GET_products_429_Response: description: Too many Request headers: Access-Control-Allow-Origin: $ref: '#/components/headers/Access-Control-Allow-Origin' Retry-After: $ref: '#/components/headers/Retry-After' X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' content: application/json: schema: $ref: '#/components/schemas/ErrorDTO' GET_products_400_Response: description: Bad request headers: Access-Control-Allow-Origin: $ref: '#/components/headers/Access-Control-Allow-Origin' X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' content: application/json: schema: $ref: '#/components/schemas/ErrorDTO' GET_products_500_Response: description: Server ERROR content: application/json: schema: $ref: '#/components/schemas/ErrorDTO' headers: Access-Control-Allow-Origin: $ref: '#/components/headers/Access-Control-Allow-Origin' GET_products_200_Response: description: Ok headers: Access-Control-Allow-Origin: $ref: '#/components/headers/Access-Control-Allow-Origin' X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' content: application/json: schema: $ref: '#/components/schemas/ProductListDTO' parameters: gtinCode_query: name: gtinCode in: query required: false schema: type: string maxLength: 14 pattern: ^[a-zA-Z0-9]{1,14}$ example: OVENS09 sort_query: name: sort in: query required: false schema: type: string enum: - category, desc - batchName, desc - energyClass, desc - gtinCode, desc - eprelCode, desc - status, desc - category, asc - batchName, asc - energyClass, asc - gtinCode, asc - eprelCode, asc - status, asc example: energyClass, asc organizationId_query: name: organizationId in: query required: false schema: type: string maxLength: 36 pattern: ^$|^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ example: 72c2c5f8-1c71-4614-a4b3-95e3aee71c3d eprelCode_query: name: eprelCode in: query required: false schema: type: string maxLength: 50 pattern: ^[0-9]+$ example: '2413748' category_query: name: category in: query required: false schema: type: string enum: - WASHINGMACHINES - WASHERDRIERS - OVENS - RANGEHOODS - DISHWASHERS - TUMBLEDRYERS - REFRIGERATINGAPPL - COOKINGHOBS example: OVENS productName_query: name: productName in: query required: false schema: type: string maxLength: 255 pattern: .* example: Forno OV01 A 126 l status_query: name: status in: query required: false schema: type: string enum: - APPROVED - REJECTED - SUPERVISIONED example: APPROVED page_query: name: page in: query required: false schema: type: integer format: int32 minimum: 0 maximum: 10000 example: 1 size_query: name: size in: query required: false schema: type: integer format: int32 minimum: 1 maximum: 1000 example: 20 productFileId_query: name: productFileId in: query required: false schema: type: string minLength: 24 maxLength: 24 pattern: ^[a-fA-F0-9]{24}$ example: 68f0fb9eec27ec330465bdb5 schemas: ErrorDTO: type: object required: - code - message properties: code: type: string maxLength: 255 pattern: .* example: PAYMENT_INVALID_REQUEST message: type: string maxLength: 255 pattern: .* example: Something went wrong handling the request ProductListDTO: type: object properties: content: type: array items: $ref: '#/components/schemas/ProductDTO' maxItems: 1000 pageNo: type: integer format: int32 description: Numero della pagina minimum: 0 maximum: 1000000 example: 1 pageSize: type: integer format: int32 description: Numero di elementi per pagina minimum: 0 maximum: 1000000 example: 20 totalElements: type: integer format: int32 description: Numero totale degli elementi minimum: 0 maximum: 1000000 example: 200 totalPages: type: integer format: int32 description: Numero totale delle pagine minimum: 0 maximum: 1000000 example: 10 ProductDTO: type: object properties: organizationId: type: string description: ID del produttore maxLength: 36 pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ example: 72c2c5f8-1c71-4614-a4b3-95e3aee71c3d registrationDate: type: string format: date-time description: Data caricamento prodotto (dopo la verifica EPREL) maxLength: 255 example: '2025-10-16T12:05:19.307+00:00' status: type: string description: Stato del prodotto enum: - APPROVED - REJECTED - SUPERVISIONED example: APPROVED model: type: string description: Modello del prodotto maxLength: 100 pattern: ^.{1,100}$ example: CK501G-SL productGroup: type: string description: Categoria EPREL maxLength: 255 pattern: .* example: ovens category: type: string description: Categoria del prodotto enum: - Lavatrice - Lavasciuga - Piano cottura - Apparecchio di refrigerazione - Asciugatrice - Lavastoviglie - Cappa da cucina - Forno example: Forno brand: type: string description: Brand del prodotto maxLength: 100 pattern: ^.{1,100}$ example: TheBestBrand eprelCode: type: string description: Codice EPREL del prodotto maxLength: 50 pattern: ^[0-9]+$ example: '2413748' gtinCode: type: string description: Codice GTIN del prodotto maxLength: 14 pattern: ^[a-zA-Z0-9]{1,14}$ example: OVENS09 productCode: type: - string - 'null' description: Codice prodotto maxLength: 100 pattern: ^[a-zA-Z0-9 ]{0,100}$ example: OV01 energyClass: type: - string - 'null' description: Classe energetica del prodotto maxLength: 4 pattern: ^(A\\+\\+\\+|A\\+\\+|A\\+|A|B|C|D|E|F|G)$ example: A countryOfProduction: type: string description: Paese di produzione del prodotto maxLength: 2 pattern: ^[A-Z]{2}$ example: IT batchName: type: string description: Nomelotto del prodotto pattern: ^(Apparecchi_di_refrigerazione|Cappe_Da_Cucina|Lavatrici|Lavastoviglie|Piani_Cottura|Forni|Lavasciuga|Asciugatrici)_[a-fA-F0-9]{24}\.csv$ maxLength: 255 example: Forni_5f4dcc3b5aa765d61d8327de.csv linkEprel: type: - string - 'null' description: Link EPREL del prodotto maxLength: 255 format: uri example: https://eprel.ec.europa.eu/screen/product/ovens/2413748 capacity: type: - string - 'null' description: Capacità del prodotto maxLength: 255 pattern: .* example: 126 l productName: type: string description: Nome del prodotto maxLength: 255 pattern: .* example: Forno OV01 A 126 l motivation: type: string maxLength: 200 pattern: .* example: n/a headers: Access-Control-Allow-Origin: description: Intestazione CORS per consentire richieste cross-origin schema: type: string maxLength: 255 pattern: .* X-RateLimit-Reset: description: L'ora in cui il limite di velocità viene reimpostato (in secondi dell'epoca UTC) schema: type: integer format: int64 minimum: 0 maximum: 9999999999 Retry-After: description: Indica per quanto tempo l'agente deve attendere prima di effettuare una richiesta di follow-up schema: type: integer format: int64 minimum: 0 maximum: 86400 X-RateLimit-Limit: description: Numero massimo di richieste consentite nel periodo corrente schema: type: integer format: int64 minimum: 0 maximum: 1000000 X-RateLimit-Remaining: description: Il numero di richieste rimanenti nel periodo corrente schema: type: integer format: int64 minimum: 0 maximum: 1000000 securitySchemes: Bearer: description: A bearer token in the format of a JWS and conforms to the specifications included in RFC8725. type: oauth2 flows: clientCredentials: tokenUrl: https://api-mcshared.cstar.pagopa.it/auth-itn/realms/merchant-operator/protocol/openid-connect/token refreshUrl: https://api-mcshared.cstar.pagopa.it/auth-itn/realms/merchant-operator/protocol/openid-connect/token scopes: {} x-refined-from: - pari-merchants-ecommerce.yml - pagopa-pari-ecommerce-openapi.yml