API de Modelos de Dados de Produtos
Identificadores
Cada registo do dicionário tem um identificador único e resolúvel. É esta a forma que aparece em todas as exportações, declarações e no campo uri de cada registo devolvido pela API.
https://pdts.pt/uri/0.1/{entity}/{code}
https://pdts.pt/uri/0.1/{entity}/{code}/v{versionNumber}
A forma sem versão é a canónica e resolve sempre para o estado atual do registo; a forma /v{n} fixa uma versão conhecida. "latest" é aceite no lugar da versão do dicionário e reencaminha para a versão em vigor. O idioma nunca altera o identificador de um registo.
| Entidade | Segmento | Código | Exemplo |
|---|---|---|---|
| Propriedade | prop |
Name |
https://pdts.pt/uri/0.1/prop/Nome
|
| Modelo de dados de produto | dt |
Name |
https://pdts.pt/uri/0.1/dt/Lavatorio
|
| Objeto de construção | class |
Name |
https://pdts.pt/uri/0.1/class/Mestre
|
| Grupo de propriedades | gop |
{id}-Name |
https://pdts.pt/uri/0.1/gop/12-DadosGeometricos
|
| Propriedade em classe | classprop |
{classPropertyId}-Name |
https://pdts.pt/uri/0.1/classprop/1-SistemaClassificacaoTabelaCodigo
|
| Documento de referência | doc |
Name |
https://pdts.pt/uri/0.1/doc/CWA173772019
|
| Unidade | unit |
Name |
https://pdts.pt/uri/0.1/unit/in%C2%B3
|
| Grandeza física | pq |
Name |
https://pdts.pt/uri/0.1/pq/cubic%20centimetre
|
| Dimensão | dim |
Name |
https://pdts.pt/uri/0.1/dim/L2T-2
|
| Valor enumerado | enum |
{id}-Name |
— |
Onde os nomes se repetem legitimamente (grupos de propriedades, propriedades em classe, valores enumerados) o identificador inclui o id do registo. Qualquer identificador pedido com Accept: application/json, ?format=json ou sufixo .json devolve o registo em JSON.
O código é o nome em português: este é um dicionário português, e é namePt que consta das exportações, das DoPC e do URI canónico. O nome em inglês também resolve, como alias: um pedido com nameEn encontra o mesmo registo e reencaminha (301) para o URI canónico em português. É uma segunda forma de chegar ao mesmo URI, nunca uma segunda identidade.
Obter Modelo de Dados de Produto (Completo)
Retorna o modelo de dados do produto com o ID especificado (estrutura ISO 23387). Inclui TODAS as informações: grupos de propriedades, propriedades com atributos completos do dicionário de dados (EN ISO 23386), documentos de referência, e objeto de construção.
GET /api/{pdtID}
Formato: JSON
Inclui: Todas as colunas das tabelas productdatatemplates, groupofproperties, propertiesdatadictionaries, referencedocuments, constructionobjects
Exemplo: GET /api/1
Exportar Modelo de Dados de Produto como JSON (estrutura EN ISO 23387)
Retorna o modelo de dados do produto em formato JSON completamente compatível com EN ISO 23387.
GET /api/{pdtID}/json
Formato: JSON (estrutura EN ISO 23387)
Content-Type: application/json
Estrutura:
Os GUIDs são emitidos no formato UUID com hífens (8-4-4-4-12) para validarem contra o padrão do XSD ed-2. O elemento <code>Library</code> só admite o atributo <code>dt:GUID</code> e os elementos <code>Name</code> (sem <code>dateOfCreation</code>, <code>URI</code> ou <code>Definition</code> ao nível da Library).
{"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": "..."
}]
}}
Exemplo: GET /api/1/json
Unidades / grandeza física / dimensão:
a unidade é referenciada por UnitRef (GUID estável, e referenceURI QUDT quando disponível);
a grandeza física por QuantityKindRef e a dimensão por DimensionRef.
O campo _physicalQuantity apresenta o par ISO 23386 "grandeza física | idioma"
(ex. "millimetre | en.EN"), ou "without" para propriedades sem unidade / de texto.
Exportar Modelo de Dados de Produto como XML (estrutura EN ISO 23387)
Retorna o modelo de dados do produto em formato XML completamente compatível com 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>
Exemplo: GET /api/1/xml
Obter Todos os Modelos de Dados de Produtos
Retorna todos os templates de dados de produtos.
GET /api/productDataTemplates
Obter todas as propriedades do Dicionário de Dados
Retorna todas as propriedades do dicionário de dados dos modelos de dados do produto.
GET /api/dataDictionary
Obter uma propriedade do Dicionário de dados
Retorna uma propriedade e seus atributos do dicionário de dados.
GET /api/dataDictionary/{Id}
Obter Documentos de Referência
Retorna os documentos de referência usados nos templates de dados de produtos.
GET /api/referenceDocuments
Obter um Documento de Referência
Retorna um documento de referência usado nos templates de dados de produtos.
GET /api/referenceDocuments/{GUID}
Obter Grupos de Propriedades
Retorna os grupos de propriedades para os templates de dados de produtos.
GET /api/groupsOfProperties
Obter um Grupo de Propriedades
Retorna um grupo de propriedades e seus atributos para um template de dados de produto.
GET /api/groupsOfProperties/{Id}
Obter Todos os objectos de construção
Retorna todos os objectos de construção.
GET /api/constructionObjects
Obter Todas as Unidades
Retorna todas as unidades (ISO 23387 UnitType), cada uma com o seu URI de identidade resolúvel (@id), grandeza física e dimensão associadas, e a ligação à autoridade externa QUDT (sameAs, quando disponível).
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).
Obter Todas as Grandezas Físicas
Retorna todas as grandezas físicas (ISO 23387 QuantityKindType), cada uma com o seu URI de identidade (@id) e a dimensão associada.
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
}]
Obter Todas as Dimensões
Retorna todas as dimensões (ISO 23387 DimensionType), cada uma com o seu URI de identidade (@id) e os 7 expoentes SI (ordem ISO 80000).
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
}]