{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://dppmcp.com/schemas/textiles/garment/v1.0","title":"Textile Garment Digital Product Passport","description":"JSON Schema for textile garment DPP according to EU ESPR 2024/1781 and CEN/CENELEC prEN 18219-18246 standards","type":"object","required":["dppMetadata","productIdentification","economicOperator","materialComposition","manufacturingData","environmentalFootprint","compliance"],"properties":{"$schema":{"type":"string","const":"https://dppmcp.com/schemas/textiles/garment/v1.0","description":"Schema reference for validation"},"dppMetadata":{"type":"object","description":"Digital Product Passport metadata according to prEN 18219","required":["passportIdentifier","passportVersion","issuedDate","status","dataCarrier"],"properties":{"passportIdentifier":{"type":"string","format":"uri","pattern":"^https://id\\.gs1\\.[a-z]{2,3}/01/[0-9]{14}","description":"GS1 Digital Link URI as unique passport identifier","examples":["https://id.gs1.se/01/07350053850019/21/2024-001"]},"passportVersion":{"type":"string","pattern":"^[0-9]+\\.[0-9]+\\.[0-9]+$","description":"Semantic version of this passport instance","examples":["1.0.0"]},"registrationIdentifier":{"type":"string","pattern":"^EU-DPP-[A-Z]{3}-[0-9]{4}-[0-9]{6}$","description":"EU DPP Registry identifier","examples":["EU-DPP-TEX-2024-001234"]},"issuedDate":{"type":"string","format":"date","description":"Date passport was first issued"},"lastUpdated":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of last update"},"expiryDate":{"type":"string","format":"date","description":"Passport expiry date (if applicable)"},"status":{"type":"string","enum":["draft","active","suspended","expired","revoked"],"description":"Current passport status"},"dataCarrier":{"type":"object","required":["type","location"],"properties":{"type":{"type":"string","enum":["QR_CODE","DATA_MATRIX","NFC","RFID"],"description":"Data carrier type according to prEN 18220"},"location":{"type":"string","enum":["label","hangtag","packaging","product","sewn_in"],"description":"Physical location of data carrier"},"encodingSyntax":{"type":"string","enum":["GS1_DIGITAL_LINK","ISO_IEC_15434"],"default":"GS1_DIGITAL_LINK"}}},"languages":{"type":"array","items":{"type":"string","pattern":"^[a-z]{2}$"},"description":"ISO 639-1 language codes for available translations","examples":[["en","sv","de"]]}}},"productIdentification":{"type":"object","description":"Product identification according to GS1 and EU Combined Nomenclature","required":["gtin","productName","productCategory","brand"],"properties":{"gtin":{"type":"string","pattern":"^[0-9]{14}$","description":"14-digit Global Trade Item Number (GTIN-14)","examples":["07350053850019"]},"serialNumber":{"type":"string","maxLength":20,"description":"Serial number for item-level identification (AI 21)"},"batchNumber":{"type":"string","maxLength":20,"description":"Batch/lot number (AI 10)"},"productName":{"type":"object","description":"Product name in multiple languages","additionalProperties":{"type":"string","maxLength":200},"examples":[{"en":"Organic Cotton T-Shirt","sv":"Ekologisk Bomulls T-shirt"}]},"productDescription":{"type":"object","description":"Detailed product description in multiple languages","additionalProperties":{"type":"string","maxLength":2000}},"productCategory":{"type":"object","required":["espr","combined_nomenclature"],"properties":{"espr":{"type":"string","enum":["GARMENT_TOPS","GARMENT_BOTTOMS","GARMENT_DRESSES","GARMENT_OUTERWEAR","GARMENT_UNDERWEAR","GARMENT_SWIMWEAR","GARMENT_SPORTSWEAR","GARMENT_WORKWEAR","GARMENT_ACCESSORIES"],"description":"ESPR product category"},"combined_nomenclature":{"type":"string","pattern":"^[0-9]{8}$","description":"8-digit EU Combined Nomenclature code","examples":["61091000"]},"taric":{"type":"string","pattern":"^[0-9]{10}$","description":"10-digit TARIC code (optional)"}}},"brand":{"type":"object","required":["name"],"properties":{"name":{"type":"string","maxLength":100},"owner":{"type":"string","description":"Legal entity owning the brand"},"trademarkNumber":{"type":"string"}}},"model":{"type":"object","properties":{"modelNumber":{"type":"string"},"modelName":{"type":"string"},"styleCode":{"type":"string"},"seasonCode":{"type":"string","pattern":"^(SS|AW|FW|PF|RS)[0-9]{2}$","examples":["SS24","AW24"]}}},"variant":{"type":"object","properties":{"size":{"type":"string","description":"Size designation"},"sizeSystem":{"type":"string","enum":["EU","UK","US","ASIA","UNIVERSAL"],"description":"Size system used"},"color":{"type":"object","properties":{"name":{"type":"object","additionalProperties":{"type":"string"}},"code":{"type":"string","description":"Internal color code"},"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}}},"fit":{"type":"string","enum":["SLIM","REGULAR","RELAXED","OVERSIZED"]}}},"images":{"type":"array","items":{"type":"object","required":["url","type"],"properties":{"url":{"type":"string","format":"uri"},"type":{"type":"string","enum":["MAIN","FRONT","BACK","DETAIL","LIFESTYLE","PACKAGING"]},"altText":{"type":"string"}}}}}},"economicOperator":{"type":"object","description":"Economic operator information according to ESPR Article 4","required":["responsibleOperator","role"],"properties":{"responsibleOperator":{"type":"object","required":["gln","name","address","country"],"properties":{"gln":{"type":"string","pattern":"^[0-9]{13}$","description":"13-digit Global Location Number"},"name":{"type":"string","maxLength":200},"tradingName":{"type":"string"},"registrationNumber":{"type":"string","description":"Company registration number"},"vatNumber":{"type":"string","pattern":"^[A-Z]{2}[0-9A-Z]+$"},"address":{"$ref":"#/$defs/address"},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country code"},"contact":{"type":"object","properties":{"email":{"type":"string","format":"email"},"phone":{"type":"string"},"website":{"type":"string","format":"uri"}}}}},"role":{"type":"string","enum":["manufacturer","importer","distributor","authorised_representative"],"description":"Role according to ESPR Article 4"},"authorisedRepresentative":{"type":"object","description":"Required if manufacturer is outside EU","properties":{"gln":{"type":"string","pattern":"^[0-9]{13}$"},"name":{"type":"string"},"address":{"$ref":"#/$defs/address"},"mandateReference":{"type":"string"}}}}},"materialComposition":{"type":"object","description":"Material composition according to EU Textile Regulation 1007/2011","required":["textileFibers"],"properties":{"textileFibers":{"type":"array","minItems":1,"items":{"type":"object","required":["fiberType","percentage"],"properties":{"fiberType":{"type":"string","enum":["COTTON","ORGANIC_COTTON","RECYCLED_COTTON","LINEN","HEMP","WOOL","RECYCLED_WOOL","SILK","CASHMERE","ALPACA","MOHAIR","ANGORA","VISCOSE","LYOCELL","MODAL","CUPRO","ACETATE","POLYESTER","RECYCLED_POLYESTER","POLYAMIDE","RECYCLED_POLYAMIDE","NYLON","ACRYLIC","ELASTANE","SPANDEX","POLYPROPYLENE","POLYURETHANE","OTHER_NATURAL","OTHER_SYNTHETIC","OTHER_REGENERATED"],"description":"Fiber type according to EU 1007/2011"},"percentage":{"type":"number","minimum":0,"maximum":100,"description":"Percentage by weight"},"origin":{"type":"string","pattern":"^[A-Z]{2}$","description":"Country of origin for fiber"},"certification":{"type":"array","items":{"type":"string","enum":["GOTS","OCS","GRS","RCS","OEKO_TEX_100","OEKO_TEX_STEP","BCI","EUROPEAN_FLAX"]}},"recycledContent":{"type":"object","properties":{"preConsumer":{"type":"number","minimum":0,"maximum":100},"postConsumer":{"type":"number","minimum":0,"maximum":100}}}}}},"totalRecycledContent":{"type":"number","minimum":0,"maximum":100,"description":"Total percentage of recycled content"},"totalWeight":{"type":"object","required":["value","unit"],"properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","enum":["g","kg"]}}},"fabricConstruction":{"type":"string","enum":["WOVEN","KNITTED","NON_WOVEN","LEATHER","COATED","LAMINATED"]},"fabricWeight":{"type":"object","properties":{"value":{"type":"number"},"unit":{"type":"string","enum":["g/m2","oz/yd2"]}}},"additionalMaterials":{"type":"array","description":"Non-textile materials (buttons, zippers, etc.)","items":{"type":"object","properties":{"material":{"type":"string","enum":["METAL","PLASTIC","WOOD","SHELL","LEATHER","RUBBER","GLASS","OTHER"]},"component":{"type":"string","description":"e.g., buttons, zipper, rivets"},"percentage":{"type":"number"},"recyclable":{"type":"boolean"}}}}}},"chemicalSubstances":{"type":"object","description":"Chemical substances according to REACH and SCIP","properties":{"substancesOfConcernAbsent":{"type":"boolean","description":"True if no SVHC above 0.1% w/w"},"substancesOfConcern":{"type":"array","items":{"type":"object","required":["casNumber","name","concentration"],"properties":{"casNumber":{"type":"string","pattern":"^[0-9]+-[0-9]{2}-[0-9]$","description":"CAS Registry Number"},"ecNumber":{"type":"string","pattern":"^[0-9]{3}-[0-9]{3}-[0-9]$"},"name":{"type":"string"},"concentration":{"type":"number","minimum":0,"maximum":100,"description":"Concentration in % w/w"},"location":{"type":"string","description":"Where in product the substance is present"},"svhcCandidate":{"type":"boolean"},"reachAuthorisation":{"type":"string"}}}},"scipNotificationNumber":{"type":"string","format":"uuid","description":"ECHA SCIP notification UUID"},"restrictedSubstancesCompliance":{"type":"object","properties":{"reachAnnexXVII":{"type":"boolean"},"popRegulation":{"type":"boolean"},"biocidesRegulation":{"type":"boolean"}}},"testReports":{"type":"array","items":{"type":"object","properties":{"laboratory":{"type":"string"},"accreditationNumber":{"type":"string"},"testDate":{"type":"string","format":"date"},"reportNumber":{"type":"string"},"documentUrl":{"type":"string","format":"uri"}}}}}},"manufacturingData":{"type":"object","description":"Manufacturing information and supply chain","required":["countryOfOrigin"],"properties":{"countryOfOrigin":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2 country where final assembly occurred"},"productionDate":{"type":"string","format":"date"},"productionBatch":{"type":"string"},"manufacturingFacility":{"type":"object","properties":{"gln":{"type":"string","pattern":"^[0-9]{13}$"},"name":{"type":"string"},"address":{"$ref":"#/$defs/address"},"certifications":{"type":"array","items":{"type":"string","enum":["ISO_9001","ISO_14001","SA8000","BSCI","WRAP","SEDEX","OEKO_TEX_STEP"]}}}},"supplyChain":{"type":"array","description":"Supply chain tiers with transparency data","items":{"type":"object","required":["tier","processType"],"properties":{"tier":{"type":"integer","minimum":1,"maximum":5,"description":"1=Final assembly, 2=Component manufacturing, etc."},"processType":{"type":"string","enum":["CUTTING","SEWING","FINISHING","DYEING","PRINTING","WASHING","WEAVING","KNITTING","SPINNING","FIBER_PRODUCTION","RAW_MATERIAL"]},"facility":{"type":"object","properties":{"gln":{"type":"string","pattern":"^[0-9]{13}$"},"name":{"type":"string"},"country":{"type":"string","pattern":"^[A-Z]{2}$"},"region":{"type":"string"},"verified":{"type":"boolean"},"verificationDate":{"type":"string","format":"date"},"certifications":{"type":"array","items":{"type":"string"}}}}}}},"traceabilityEvents":{"type":"array","description":"EPCIS-style traceability events","items":{"type":"object","required":["eventType","eventTime","bizStep"],"properties":{"eventId":{"type":"string","format":"uuid"},"eventType":{"type":"string","enum":["ObjectEvent","AggregationEvent","TransactionEvent","TransformationEvent"]},"eventTime":{"type":"string","format":"date-time"},"bizStep":{"type":"string","enum":["commissioning","creating_class_instance","inspecting","packing","picking","shipping","receiving","storing","transforming"]},"readPoint":{"type":"string"},"bizLocation":{"type":"string"}}}}}},"environmentalFootprint":{"type":"object","description":"Environmental impact according to PEF methodology","required":["carbonFootprint"],"properties":{"carbonFootprint":{"type":"object","required":["total","unit","methodology"],"properties":{"total":{"type":"number","minimum":0,"description":"Total carbon footprint"},"unit":{"type":"string","enum":["kgCO2e","gCO2e"],"description":"Unit of measurement"},"methodology":{"type":"string","enum":["PEF","ISO_14067","GHG_PROTOCOL","HIGG_MSI"],"description":"Calculation methodology"},"scope":{"type":"string","enum":["CRADLE_TO_GATE","CRADLE_TO_GRAVE","CRADLE_TO_CRADLE"],"default":"CRADLE_TO_GATE"},"breakdown":{"type":"object","properties":{"rawMaterials":{"type":"number"},"manufacturing":{"type":"number"},"transport":{"type":"number"},"usePhase":{"type":"number"},"endOfLife":{"type":"number"}}},"verificationBody":{"type":"string"},"verificationDate":{"type":"string","format":"date"},"validUntil":{"type":"string","format":"date"}}},"waterFootprint":{"type":"object","properties":{"total":{"type":"number"},"unit":{"type":"string","enum":["L","m3"]},"methodology":{"type":"string"}}},"pefScore":{"type":"object","description":"Product Environmental Footprint score","properties":{"class":{"type":"string","enum":["A","B","C","D","E","F","G"],"description":"PEF class from A (best) to G (worst)"},"score":{"type":"number","description":"Numeric PEF score"},"impactCategories":{"type":"object","properties":{"climateChange":{"type":"number"},"ozoneDepletion":{"type":"number"},"humanToxicity":{"type":"number"},"particulateMatter":{"type":"number"},"acidification":{"type":"number"},"eutrophicationFreshwater":{"type":"number"},"eutrophicationMarine":{"type":"number"},"eutrophicationTerrestrial":{"type":"number"},"ecotoxicityFreshwater":{"type":"number"},"landUse":{"type":"number"},"waterUse":{"type":"number"},"resourceUseFossils":{"type":"number"},"resourceUseMinerals":{"type":"number"}}}}},"microplasticRelease":{"type":"object","description":"Microplastic shedding (for synthetic textiles)","properties":{"releasePerWash":{"type":"number"},"unit":{"type":"string","enum":["mg","fibers"]},"testMethod":{"type":"string"}}}}},"durabilityAndRepair":{"type":"object","description":"Durability and repairability information according to ESPR","properties":{"expectedLifespan":{"type":"object","properties":{"value":{"type":"integer","minimum":1},"unit":{"type":"string","enum":["years","wash_cycles","uses"]},"conditions":{"type":"string","description":"Conditions for achieving expected lifespan"}}},"durabilityTests":{"type":"array","items":{"type":"object","properties":{"testType":{"type":"string","enum":["MARTINDALE_ABRASION","PILLING_RESISTANCE","TEAR_STRENGTH","TENSILE_STRENGTH","COLORFASTNESS_WASH","COLORFASTNESS_LIGHT","DIMENSIONAL_STABILITY","SEAM_STRENGTH"]},"result":{"type":"string"},"rating":{"type":"string"},"standard":{"type":"string","description":"ISO/EN test standard"}}}},"repairabilityScore":{"type":"number","minimum":0,"maximum":10,"description":"Repairability index 0-10"},"repairabilityFactors":{"type":"object","properties":{"easeOfDisassembly":{"type":"number","minimum":0,"maximum":10},"availabilityOfSpareParts":{"type":"number","minimum":0,"maximum":10},"repairDocumentation":{"type":"number","minimum":0,"maximum":10},"repairServiceAvailability":{"type":"number","minimum":0,"maximum":10}}},"repairServices":{"type":"array","items":{"type":"object","properties":{"serviceType":{"type":"string","enum":["BUTTON_REPLACEMENT","ZIPPER_REPAIR","SEAM_REPAIR","PATCHING","REWEARING","ALTERATION"]},"provider":{"type":"string"},"url":{"type":"string","format":"uri"},"price":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}}}}}},"spareParts":{"type":"array","items":{"type":"object","properties":{"partType":{"type":"string"},"availability":{"type":"string","enum":["IN_STOCK","ON_REQUEST","DISCONTINUED"]},"availabilityYears":{"type":"integer"},"price":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"}}}}}},"warrantyInformation":{"type":"object","properties":{"legalWarranty":{"type":"object","properties":{"duration":{"type":"integer"},"unit":{"type":"string","enum":["months","years"]}}},"commercialWarranty":{"type":"object","properties":{"duration":{"type":"integer"},"unit":{"type":"string","enum":["months","years"]},"coverage":{"type":"string"},"url":{"type":"string","format":"uri"}}}}}}},"careInstructions":{"type":"object","description":"Care and maintenance instructions according to ISO 3758","properties":{"symbols":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["WASHING","BLEACHING","DRYING","IRONING","PROFESSIONAL_CARE"]},"code":{"type":"string","description":"ISO 3758 symbol code"},"instruction":{"type":"object","additionalProperties":{"type":"string"}}}}},"washingTemperature":{"type":"integer","enum":[30,40,50,60,70,95]},"machineWashable":{"type":"boolean"},"tumbleDry":{"type":"string","enum":["NO","LOW","NORMAL","HIGH"]},"ironingTemperature":{"type":"string","enum":["NO_IRON","LOW_110","MEDIUM_150","HIGH_200"]},"dryCleanOnly":{"type":"boolean"},"additionalInstructions":{"type":"object","additionalProperties":{"type":"string"}},"sustainableCareAdvice":{"type":"object","description":"Eco-friendly care tips","additionalProperties":{"type":"string"}}}},"endOfLife":{"type":"object","description":"End-of-life information according to ESPR","properties":{"recyclability":{"type":"object","properties":{"recyclablePercentage":{"type":"number","minimum":0,"maximum":100},"recyclingInstructions":{"type":"object","additionalProperties":{"type":"string"}},"disassemblyInstructions":{"type":"string","format":"uri"},"materialSeparation":{"type":"array","items":{"type":"object","properties":{"component":{"type":"string"},"material":{"type":"string"},"recyclable":{"type":"boolean"},"separationMethod":{"type":"string"}}}}}},"takeBackProgram":{"type":"object","properties":{"available":{"type":"boolean"},"programName":{"type":"string"},"url":{"type":"string","format":"uri"},"incentive":{"type":"object","properties":{"type":{"type":"string","enum":["DISCOUNT","VOUCHER","CREDIT","NONE"]},"value":{"type":"number"},"currency":{"type":"string"}}},"locations":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["STORE","DROP_OFF","MAIL_IN"]},"description":{"type":"string"}}}}}},"resaleProgram":{"type":"object","properties":{"available":{"type":"boolean"},"platform":{"type":"string"},"url":{"type":"string","format":"uri"}}},"donationInformation":{"type":"object","properties":{"recommendedOrganizations":{"type":"array","items":{"type":"string"}}}},"disposalInstructions":{"type":"object","additionalProperties":{"type":"string"}}}},"consumerInformation":{"type":"object","description":"Additional consumer-facing information","properties":{"userGuide":{"type":"string","format":"uri"},"sizingGuide":{"type":"string","format":"uri"},"sustainabilityStory":{"type":"object","additionalProperties":{"type":"string"}},"certificationLogos":{"type":"array","items":{"type":"object","properties":{"certification":{"type":"string"},"logoUrl":{"type":"string","format":"uri"},"verificationUrl":{"type":"string","format":"uri"}}}},"videos":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["PRODUCT","CARE","SUSTAINABILITY","REPAIR"]},"url":{"type":"string","format":"uri"},"title":{"type":"string"}}}}}},"compliance":{"type":"object","description":"Regulatory compliance information","required":["euDeclarationOfConformity","espr"],"properties":{"euDeclarationOfConformity":{"type":"object","required":["available"],"properties":{"available":{"type":"boolean"},"declarationNumber":{"type":"string"},"declarationDate":{"type":"string","format":"date"},"documentUrl":{"type":"string","format":"uri"},"notifiedBody":{"type":"object","properties":{"name":{"type":"string"},"number":{"type":"string"}}}}},"espr":{"type":"object","required":["compliant"],"properties":{"compliant":{"type":"boolean"},"delegatedActReference":{"type":"string"},"complianceDate":{"type":"string","format":"date"}}},"textileRegulation":{"type":"object","properties":{"compliant":{"type":"boolean"},"regulation":{"type":"string","default":"EU 1007/2011"}}},"reachCompliant":{"type":"boolean"},"productCertifications":{"type":"array","items":{"type":"object","required":["standard","status"],"properties":{"standard":{"type":"string","enum":["GOTS","OCS","GRS","RCS","OEKO_TEX_100","OEKO_TEX_MADE_IN_GREEN","BLUESIGN","CRADLE_TO_CRADLE","EU_ECOLABEL","FAIRTRADE","B_CORP","FSC","PEFC"]},"status":{"type":"string","enum":["CERTIFIED","PENDING","EXPIRED","NOT_APPLICABLE"]},"certificateNumber":{"type":"string"},"validFrom":{"type":"string","format":"date"},"validUntil":{"type":"string","format":"date"},"certificationBody":{"type":"string"},"verificationUrl":{"type":"string","format":"uri"}}}},"marketSurveillance":{"type":"object","properties":{"notifiedAuthority":{"type":"string"},"lastInspectionDate":{"type":"string","format":"date"},"inspectionResult":{"type":"string","enum":["PASS","FAIL","PENDING"]}}}}},"accessControl":{"type":"object","description":"Access control according to prEN 18239","properties":{"publicFields":{"type":"array","items":{"type":"string"},"description":"Fields visible to consumers"},"restrictedFields":{"type":"array","items":{"type":"string"},"description":"Fields requiring authentication"},"authorizedRoles":{"type":"array","items":{"type":"string","enum":["consumer","recycler","customs","market_surveillance","repair_service","researcher"]}}}}},"$defs":{"address":{"type":"object","required":["streetAddress","city","postalCode","country"],"properties":{"streetAddress":{"type":"string","maxLength":200},"streetAddress2":{"type":"string"},"city":{"type":"string","maxLength":100},"region":{"type":"string"},"postalCode":{"type":"string","maxLength":20},"country":{"type":"string","pattern":"^[A-Z]{2}$","description":"ISO 3166-1 alpha-2"}}}}}