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
}]