API de Modelos de Dados de Produtos
Identifiers
Every record in the dictionary has one resolvable identifier. This is the form that appears in every export, in declarations, and in the uri field of every record the API returns.
https://pdts.pt/uri/0.1/{entity}/{code}
https://pdts.pt/uri/0.1/{entity}/{code}/v{versionNumber}
The unversioned form is canonical and always resolves to the record's current state; the /v{n} form pins a known version. "latest" is accepted in place of the dictionary version and redirects to the current release. The language never changes a record's identifier.
| Entity | Segment | Code | Example |
|---|---|---|---|
| Property | prop |
Name |
https://pdts.pt/uri/0.1/prop/Nome
|
| Product data template | dt |
Name |
https://pdts.pt/uri/0.1/dt/Lavatorio
|
| Construction object | class |
Name |
https://pdts.pt/uri/0.1/class/Mestre
|
| Group of properties | gop |
{id}-Name |
https://pdts.pt/uri/0.1/gop/12-DadosGeometricos
|
| Class property | classprop |
{classPropertyId}-Name |
https://pdts.pt/uri/0.1/classprop/1-SistemaClassificacaoTabelaCodigo
|
| Reference document | doc |
Name |
https://pdts.pt/uri/0.1/doc/CWA173772019
|
| Unit | unit |
Name |
https://pdts.pt/uri/0.1/unit/in%C2%B3
|
| Quantity kind | pq |
Name |
https://pdts.pt/uri/0.1/pq/cubic%20centimetre
|
| Dimension | dim |
Name |
https://pdts.pt/uri/0.1/dim/L2T-2
|
| Enumerated value | enum |
{id}-Name |
— |
Where names legitimately repeat (groups of properties, class properties, enumerated values) the identifier carries the record id. Any identifier requested with Accept: application/json, ?format=json or a .json suffix returns the record as JSON.
The code is the Portuguese name: this is a Portuguese dictionary, and namePt is what appears in exports, in DoPCs and in the canonical URI. A record's English name also resolves, as an alias: a request using nameEn finds the same record and redirects (301) to the canonical Portuguese URI. It is a second way to arrive at the same URI, never a second identity.
Get a product data template (complete)
Returns the product data template with the given id (ISO 23387 structure). It includes everything: groups of properties, properties with their full data-dictionary attributes (EN ISO 23386), reference documents, and the construction object.
GET /api/{pdtID}
Formato: JSON
Inclui: Todas as colunas das tabelas productdatatemplates, groupofproperties, propertiesdatadictionaries, referencedocuments, constructionobjects
Example: GET /api/1
Export a product data template as JSON (EN ISO 23387 structure)
Returns the product data template as JSON, fully compliant with EN ISO 23387.
GET /api/{pdtID}/json
Formato: JSON (estrutura EN ISO 23387)
Content-Type: application/json
Estrutura:
GUIDs are emitted as dashed UUIDs (8-4-4-4-12) so they validate against the ed-2 XSD pattern. The <code>Library</code> element admits only the <code>dt:GUID</code> attribute and <code>Name</code> elements (no <code>dateOfCreation</code>, <code>URI</code> or <code>Definition</code> at Library level).
{"Library": {
"dt:GUID": "8d2f...-...-...-...-...",
"Name": [
{ "language": "pt", "value": "..." },
{ "language": "en", "value": "..." }
],
"DataTemplates": [{
"Name": [...],
"Definition": [...],
"ReferenceDocumentRef": { "dt:GUID": "..." },
"MajorVersion": 1,
"MinorVersion": 0,
"Status": "Active",
"IsSubtypeOfRef": { "referenceURI": "https://pdts.pt/uri/0.1/dt/{Name}" },
"HasPartRef": [ { "referenceURI": "..." } ],
"HasObjectTypeRef": { "dt:GUID": "..." },
"HasPropertyRef": [ { "dt:GUID": "...", "referenceURI": "..." } ],
"HasGroupOfPropertiesRef": [ { "dt:GUID": "...", "referenceURI": "..." } ],
"dt:GUID": "...",
"dateOfCreation": "2026-03-31T12:00:00Z"
}],
"ObjectType": {
"Name": [...],
"Definition": [...],
"dt:GUID": "...",
"dateOfCreation": "..."
},
"GroupOfProperties": [{
"Name": [...],
"Definition": [...],
"IsSubtypeOfRef": { "referenceURI": "..." },
"HasPartRef": [ { "referenceURI": "..." } ],
"HasPropertyRef": [ { "dt:GUID": "...", "referenceURI": "..." } ],
"dt:GUID": "...",
"dateOfCreation": "..."
}],
"Properties": [{
"Name": [...],
"Definition": [...],
"LanguageOfCreator": "pt-PT",
"CountryOfOrigin": "PT",
"MajorVersion": 1,
"MinorVersion": 1,
"Status": "Active",
"DataType": {},
"DimensionRef": { "dt:GUID": "..." },
"UnitRef": [ { "dt:GUID": "...", "referenceURI": "..." } ],
"QuantityKindRef": [ { "dt:GUID": "...", "referenceURI": "..." } ],
"_physicalQuantity": "millimetre | en.EN",
"IsDependentOnRef": [ { "referenceURI": "..." } ],
"_dependencyDetails": [ {
"dependencyKind": "...", "expression": "...",
"targets": [ { "referenceURI": "...", "isPreferred": true, "position": 0 } ]
} ],
"IsSpecializationOfRef": { "referenceURI": "..." },
"dt:GUID": "...",
"dateOfCreation": "..."
}],
"ReferenceDocuments": [{
"Name": [...],
"Definition": [...],
"Status": "...",
"URI": "https://pdts.pt/uri/0.1/doc/{Name}",
"Language": "en",
"dt:GUID": "...",
"dateOfCreation": "..."
}]
}}
Example: GET /api/1/json
Unit / physical quantity / dimension:
the unit is referenced by UnitRef (stable GUID, plus the QUDT referenceURI where available);
the physical quantity by QuantityKindRef and the dimension by DimensionRef.
The _physicalQuantity field carries the ISO 23386 "physical quantity | language" pair
(e.g. "millimetre | en.EN"), or "without" for unit-less / text properties.
Export a product data template as XML (EN ISO 23387 structure)
Returns the product data template as XML, fully compliant with the EN ISO 23387 XSD.
GET /api/{pdtID}/xml
Formato: XML
Content-Type: application/xml
Estrutura:
<?xml version="1.0" encoding="UTF-8"?>
<dt:Library xmlns:dt="https://standards.iso.org/iso/23387/ed-2/en/"
dt:GUID="8d2f...-...-...-...-...">
<dt:Name language="pt">...</dt:Name>
<dt:Name language="en">...</dt:Name>
<dt:DataTemplate dt:GUID="..." dateOfCreation="2026-03-31T12:00:00Z">
<dt:Name language="pt">...</dt:Name>
<dt:Name language="en">...</dt:Name>
<dt:Definition language="pt">...</dt:Definition>
<dt:Definition language="en">...</dt:Definition>
<dt:ReferenceDocumentRef dt:GUID="..."/>
<dt:MajorVersion>1</dt:MajorVersion>
<dt:MinorVersion>0</dt:MinorVersion>
<dt:Status>Active</dt:Status>
<dt:IsSubtypeOfRef dt:referenceURI="https://pdts.pt/uri/0.1/dt/{Name}"/>
<dt:HasPartRef dt:referenceURI="..."/>
<dt:HasObjectTypeRef dt:GUID="..."/>
<dt:HasPropertyRef dt:GUID="..." dt:referenceURI="..."/>
<dt:HasGroupOfPropertiesRef dt:GUID="..." dt:referenceURI="..."/>
</dt:DataTemplate>
<dt:ObjectType dt:GUID="..." dateOfCreation="...">
<dt:Name language="en">...</dt:Name>
<dt:Definition language="en">...</dt:Definition>
<dt:IsSubtypeOfRef dt:referenceURI="..."/>
</dt:ObjectType>
<dt:GroupOfProperties dt:GUID="..." dateOfCreation="...">
<dt:Name language="pt">...</dt:Name>
<dt:Definition language="pt">...</dt:Definition>
<dt:IsSubtypeOfRef dt:referenceURI="..."/>
<dt:HasPropertyRef dt:GUID="..." dt:referenceURI="..."/>
</dt:GroupOfProperties>
<dt:Property dt:GUID="..." dateOfCreation="...">
<dt:Name language="pt">...</dt:Name>
<dt:Definition language="pt">...</dt:Definition>
<dt:LanguageOfCreator>pt-PT</dt:LanguageOfCreator>
<dt:CountryOfOrigin>PT</dt:CountryOfOrigin>
<dt:MajorVersion>1</dt:MajorVersion>
<dt:MinorVersion>1</dt:MinorVersion>
<dt:Status>Active</dt:Status>
<dt:ReferenceDocumentRef dt:GUID="..."/>
<dt:DataType name="STRING"/>
<dt:DimensionRef dt:GUID="..."/>
<dt:UnitRef dt:GUID="..." dt:referenceURI="..."/>
<dt:QuantityKindRef dt:GUID="..." dt:referenceURI="..."/>
<dt:IsDependentOnRef dt:referenceURI="..."/>
<dt:IsSpecializationOfRef dt:referenceURI="..."/>
</dt:Property>
<dt:ReferenceDocument dt:GUID="..." dateOfCreation="...">
<dt:Name language="en">...</dt:Name>
<dt:Definition language="en">...</dt:Definition>
<dt:Status>...</dt:Status>
<dt:Language>en</dt:Language>
<dt:URI>https://pdts.pt/uri/0.1/doc/{Name}</dt:URI>
</dt:ReferenceDocument>
</dt:Library>
Example: GET /api/1/xml
Get all product data templates
Returns every product data template.
GET /api/productDataTemplates
Get every data-dictionary property
Returns every property in the data dictionary behind the product data templates.
GET /api/dataDictionary
Get one data-dictionary property
Returns one property and its data-dictionary attributes.
GET /api/dataDictionary/{Id}
Get reference documents
Returns the reference documents cited by the product data templates.
GET /api/referenceDocuments
Get one reference document
Returns one reference document cited by the product data templates.
GET /api/referenceDocuments/{GUID}
Get groups of properties
Returns the groups of properties used by the product data templates.
GET /api/groupsOfProperties
Get one group of properties
Returns one group of properties and its attributes for a product data template.
GET /api/groupsOfProperties/{Id}
Get all construction objects
Returns every construction object.
GET /api/constructionObjects
Get all units
Returns every unit (ISO 23387 UnitType), each with its resolvable identity URI (@id), the physical quantity and dimension it belongs to, and the link to the external QUDT authority (sameAs, where available).
GET /api/units
Formato: JSON
[{
"@id": "https://pdts.pt/uri/0.1/unit/mm",
"type": "Unit",
"guid": "...",
"code": "mm",
"name": "millimetre",
"physicalQuantity": { "name": "length", "languageIsoCode": "en.EN", "@id": "https://pdts.pt/uri/0.1/pq/length" },
"dimension": { "canonical": "L", "@id": "https://pdts.pt/uri/0.1/dim/L" },
"sameAs": "http://qudt.org/vocab/unit/MilliM"
}]
Detalhe: siga o @id de cada unidade para GET /api/unit/{code} (representação completa, incl. escala/base/coeficiente).
Get all quantity kinds
Returns every physical quantity (ISO 23387 QuantityKindType), each with its identity URI (@id) and the dimension it belongs to.
GET /api/quantityKinds
Formato: JSON
[{
"@id": "https://pdts.pt/uri/0.1/pq/length",
"type": "QuantityKind",
"guid": "...",
"name": "length",
"languageIsoCode": "en.EN",
"dimension": { "canonical": "L", "@id": "https://pdts.pt/uri/0.1/dim/L" },
"sameAs": null
}]
Get all dimensions
Returns every dimension (ISO 23387 DimensionType), each with its identity URI (@id) and the 7 SI exponents (ISO 80000 order).
GET /api/dimensions
Formato: JSON
[{
"@id": "https://pdts.pt/uri/0.1/dim/L",
"type": "Dimension",
"guid": "...",
"canonical": "L",
"exponents": {
"Length": "1.000", "Mass": "0.000", "Time": "0.000", "ElectricCurrent": "0.000",
"ThermodynamicTemperature": "0.000", "AmountOfSubstance": "0.000", "LuminousIntensity": "0.000"
},
"sameAs": null
}]