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