├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── issue-template-for-bugs.md
│ ├── issue-template-for-feature-requests.md
│ └── issue-template-for-review-findings.md
└── workflows
│ └── check-changed-files.yml
├── .qodana
├── asciidoc-inspection.xml
└── qodana.yaml
├── AasxFileServerServiceSpecification
└── V3.1_SSP-001.yaml
├── AssetAdministrationShellRegistryServiceSpecification
├── V3.1_SSP-001.yaml
├── V3.1_SSP-002.yaml
├── V3.1_SSP-003.yaml
├── V3.1_SSP-004.yaml
└── V3.1_SSP-005.yaml
├── AssetAdministrationShellRepositoryServiceSpecification
├── V3.1_SSP-001.yaml
├── V3.1_SSP-002.yaml
└── V3.1_SSP-003.yaml
├── AssetAdministrationShellServiceSpecification
├── V3.1_SSP-001.yaml
└── V3.1_SSP-002.yaml
├── CONTRIBUTING.md
├── ConceptDescriptionRepositoryServiceSpecification
├── V3.1_SSP-001.yaml
└── V3.1_SSP-002.yaml
├── DINSPEC16593-Schemas
└── openapi.yaml
├── DiscoveryServiceSpecification
├── V3.1_SSP-001.yaml
└── V3.1_SSP-002.yaml
├── Entire-API-Collection
└── V3.1.yaml
├── LICENSE.txt
├── Part1-MetaModel-Schemas
└── openapi.yaml
├── Part2-API-Schemas
└── openapi.yaml
├── README.md
├── SubmodelRegistryServiceSpecification
├── V3.1_SSP-001.yaml
├── V3.1_SSP-002.yaml
├── V3.1_SSP-003.yaml
└── V3.1_SSP-004.yaml
├── SubmodelRepositoryServiceSpecification
├── V3.1_SSP-001.yaml
├── V3.1_SSP-002.yaml
├── V3.1_SSP-003.yaml
├── V3.1_SSP-004.yaml
└── V3.1_SSP-005.yaml
├── SubmodelServiceSpecification
├── V3.1_SSP-001.yaml
├── V3.1_SSP-002.yaml
└── V3.1_SSP-003.yaml
└── documentation
├── IDTA-01002-3
├── antora.yml
└── modules
│ └── ROOT
│ ├── images
│ ├── aas-api-versioning-url-scheme.svg
│ ├── aas-api-versioning-url-scheme2.png
│ ├── aas-info-exchange-types.jpg
│ ├── coverpage.png
│ ├── idta-logo.png
│ ├── plantuml
│ │ ├── query-language-overview.png
│ │ └── query-language-overview.puml
│ ├── private_key_certchain_jwt-method.png
│ ├── se-hierarchy.drawio
│ ├── se-hierarchy.png
│ └── swaggerhub-gen-code.png
│ ├── nav.adoc
│ ├── pages
│ ├── annex
│ │ ├── api-tables-templates.adoc
│ │ ├── backus-naur-form.adoc
│ │ ├── handling-constraints.adoc
│ │ ├── overview-constraints.adoc
│ │ ├── serialization-modifier-examples.adoc
│ │ ├── uml-templates.adoc
│ │ └── uml.adoc
│ ├── bibliography.adoc
│ ├── changelog.adoc
│ ├── general.adoc
│ ├── http-rest-api
│ │ ├── api-code-generation.adoc
│ │ ├── http-rest-api.adoc
│ │ ├── interactions.adoc
│ │ ├── service-specifications-and-profiles.adoc
│ │ └── test
│ │ │ └── query
│ │ │ └── test1.json
│ ├── includes
│ │ ├── constraints.adoc
│ │ └── special-parameters.adoc
│ ├── index.adoc
│ ├── introduction.adoc
│ ├── json-grammar.txt
│ ├── preamble.adoc
│ ├── query-language.adoc
│ ├── schema.adoc
│ ├── shared
│ │ ├── conformance.adoc
│ │ └── versioning.adoc
│ ├── specification
│ │ ├── interfaces-operation-parameters.adoc
│ │ ├── interfaces-payload.adoc
│ │ └── interfaces.adoc
│ ├── summary-and-outlook.adoc
│ └── terms-definitions-and-abbreviations.adoc
│ └── partials
│ ├── bnf
│ └── grammar.bnf
│ ├── diagrams
│ ├── asset-related-info-retrieval.puml
│ ├── i40-service-model.puml
│ ├── query-language-overview.puml
│ ├── se-operation-invocation.puml
│ ├── seq-aas-endpoints.puml
│ ├── seq-sm-endpoints-http.puml
│ ├── seq-sm-endpoints.puml
│ ├── sequence-of-bulk.puml
│ └── uml-basics
│ │ ├── 64-class.puml
│ │ ├── 65-inheritance.puml
│ │ ├── 66-multiplicity.puml
│ │ ├── 67-2-association.puml
│ │ ├── 67-3-labeled-association.puml
│ │ ├── 67-ordered-multiplicity.puml
│ │ ├── 68-composition.puml
│ │ ├── 69-aggregation.puml
│ │ ├── 70-navigable-attribute-notation-for-associations.puml
│ │ ├── 71-default-value.puml
│ │ ├── 72-dependency.puml
│ │ ├── 73-abstract-class.puml
│ │ ├── 74-package.puml
│ │ ├── 75-imported-package.puml
│ │ ├── 76-enumeration.puml
│ │ ├── 79-note.puml
│ │ ├── 80-constraint.puml
│ │ ├── 81-composite-aggregation-composition.puml
│ │ ├── 82-shared-aggregation.puml
│ │ ├── 83-generalization-inheritance.puml
│ │ ├── 84-enumeration-with-inheritance.puml
│ │ ├── 85-experimental-classes.puml
│ │ ├── 86-deprecated-elements.puml
│ │ └── 87-template-class.puml
│ └── query-json-schema.json
├── decisions
└── README.md
├── favicon.png
├── idta-logo.png
└── style.css
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # This is the CODEOWNERS file.
2 | # For understanding CODEOWNERS, see https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
3 |
4 | # Default owners
5 | * @sebbader-sap @BirgitBoss @aorzelskiGH @alexgordtop @mjacoby @danielporta @g1zzm0 @getag @waltersve @zrgt
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/issue-template-for-bugs.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Issue Template for Bug Reports
3 | about: Describe this issue's purpose here.
4 | title: 'Replace Title'
5 | labels: 'bug'
6 | assignees: ''
7 |
8 | ---
9 |
10 | # What happens?
11 |
12 | *Describe the problem in short sentences, add a minimal example if possible*
13 | ...
14 |
15 | # Why is this wrong?
16 |
17 | *Describe why this is a problem.*
18 |
19 | # How should it be fixed?
20 |
21 | *Describe which change will fix the problem.*
22 | ...
23 |
24 | - [ ] I have signed the required Developer Certificate of Origin ([DCO](https://developercertificate.org)) already.
25 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/issue-template-for-feature-requests.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Issue Template for Requesting new AAS API Features
3 | about: Describe this issue's purpose here.
4 | title: 'Replace Title'
5 | labels: 'enhancement'
6 | assignees: ''
7 |
8 | ---
9 |
10 | # What is missing?
11 |
12 | *Describe the problem in short sentences, add a minimal example if possible*
13 | ...
14 |
15 |
16 | # How should it be fixed?
17 |
18 | *Describe which change will fix the problem.*
19 | ...
20 |
21 |
22 | - [ ] I have signed the required Developer Certificate of Origin ([DCO](https://developercertificate.org)) already.
23 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/issue-template-for-review-findings.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Issue Template for Review Findings
3 | about: Describe this issue template's purpose here.
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | # What?
11 |
12 | ...
13 |
14 | # How?
15 |
16 | ...
17 |
18 | This issue relates to finding `XX#??`.
19 |
20 |
21 | - [ ] I have signed the required Developer Certificate of Origin ([DCO](https://developercertificate.org)) already.
--------------------------------------------------------------------------------
/.github/workflows/check-changed-files.yml:
--------------------------------------------------------------------------------
1 | name: Check-changed-files
2 |
3 | on:
4 | pull_request:
5 | types: [opened, synchronize, reopened]
6 |
7 | permissions:
8 | actions: read
9 |
10 | jobs:
11 | qodana:
12 | runs-on: ubuntu-latest
13 | steps:
14 | - name: Fetch Sources
15 | uses: actions/checkout@v4
16 | with:
17 | fetch-depth: ${{ github.event.pull_request.commits }}
18 |
19 | - name: Get two more commits so Qodana we can identify the changes
20 | if: github.event_name == 'pull_request'
21 | run: git fetch --deepen=2
22 |
23 | - name: Run Qodana inspection
24 | uses: JetBrains/qodana-action@v2024.3.4
25 | with:
26 | upload-result: true
27 | args: >
28 | --baseline,doc/qodana-baseline.sarif.json,
29 | --config,.qodana/qodana.yaml
30 |
31 | # This step uploads the SARIF file to GitHub so that the code scanning feature can use it.
32 | # https://docs.github.com/en/code-security/code-scanning/integrating-with-code-scanning/uploading-a-sarif-file-to-github#example-workflow-that-runs-the-eslint-analysis-tool
33 | - name: Upload SARIF report to GitHub
34 | uses: github/codeql-action/upload-sarif@v3
35 | with:
36 | sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json
37 |
--------------------------------------------------------------------------------
/.qodana/asciidoc-inspection.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.qodana/qodana.yaml:
--------------------------------------------------------------------------------
1 | version: 1.0
2 | profile:
3 | path: .qodana/asciidoc-inspection.xml
4 | linter: jetbrains/qodana-jvm-community:2024.3
5 | plugins:
6 | - id: org.asciidoctor.intellij.asciidoc
7 |
8 | include:
9 | - name: HttpUrlsUsage
10 | - name: GrazieInspection
11 |
12 | exclude:
13 | - name: All
14 | paths:
15 | - .github
16 | - .qodana
17 | - CONTRIBUTING.md
18 | - LICENSE.txt
19 | - README.md
20 | - AasxFileServerServiceSpecification
21 | - AssetAdministrationShellRegistryServiceSpecification
22 | - AssetAdministrationShellRepositoryServiceSpecification
23 | - AssetAdministrationShellServiceSpecification
24 | - ConceptDescriptionServiceSpecification
25 | - DINSPEC16593-Schemas
26 | - DiscoveryServiceSpecification
27 | - Entire-API-Collection
28 | - Part1-MetaModel-Schemas
29 | - Part2-API-Schemas
30 | - SubmodelRegistryServiceSpecification
31 | - SubmodelRepositoryServiceSpecification
32 | - SubmodelServiceSpecification
--------------------------------------------------------------------------------
/AssetAdministrationShellRegistryServiceSpecification/V3.1_SSP-002.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Registry Service Specification
4 | description: >-
5 | The Read Profile of the Asset Administration Shell Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-002
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-002
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 | paths:
20 | /shell-descriptors:
21 | get:
22 | tags:
23 | - Asset Administration Shell Registry API
24 | summary: Returns all Asset Administration Shell Descriptors
25 | operationId: GetAllAssetAdministrationShellDescriptors
26 | x-semanticIds:
27 | - https://admin-shell.io/aas/API/GetAllAssetAdministrationShellDescriptors/3/0
28 | - https://admin-shell.io/aas/API/GetAllAssetAdministrationShellDescriptorsByAssetType/3/0
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetKind'
33 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetType'
34 | responses:
35 | '200':
36 | description: Requested Asset Administration Shell Descriptors
37 | content:
38 | application/json:
39 | schema:
40 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/GetAssetAdministrationShellDescriptorsResult'
41 | '400':
42 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
43 | '403':
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
45 | '500':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
47 | default:
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
49 | /shell-descriptors/{aasIdentifier}:
50 | get:
51 | tags:
52 | - Asset Administration Shell Registry API
53 | summary: Returns a specific Asset Administration Shell Descriptor
54 | operationId: GetAssetAdministrationShellDescriptorById
55 | x-semanticIds:
56 | - https://admin-shell.io/aas/API/GetAssetAdministrationShellDescriptorById/3/0
57 | parameters:
58 | - name: aasIdentifier
59 | in: path
60 | description: The Asset Administration Shell’s unique id (UTF8-BASE64-URL-encoded)
61 | required: true
62 | style: simple
63 | explode: false
64 | schema:
65 | type: string
66 | responses:
67 | '200':
68 | description: Requested Asset Administration Shell Descriptor
69 | content:
70 | application/json:
71 | schema:
72 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/AssetAdministrationShellDescriptor'
73 | '400':
74 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
75 | '403':
76 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
77 | '404':
78 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
79 | '500':
80 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
81 | default:
82 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
83 | /shell-descriptors/{aasIdentifier}/submodel-descriptors:
84 | parameters:
85 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetAdministrationShellIdentifier'
86 | get:
87 | tags:
88 | - Asset Administration Shell Registry API
89 | summary: Returns all Submodel Descriptors
90 | operationId: GetAllSubmodelDescriptorsThroughSuperpath
91 | x-semanticIds:
92 | - https://admin-shell.io/aas/API/GetAllSubmodelDescriptors/3/0
93 | parameters:
94 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
95 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
96 | responses:
97 | '200':
98 | description: Requested Submodel Descriptors
99 | content:
100 | application/json:
101 | schema:
102 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/GetSubmodelDescriptorsResult'
103 | '400':
104 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
105 | '403':
106 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
107 | '404':
108 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
109 | '500':
110 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
111 | default:
112 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
113 | /shell-descriptors/{aasIdentifier}/submodel-descriptors/{submodelIdentifier}:
114 | parameters:
115 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetAdministrationShellIdentifier'
116 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/SubmodelIdentifier'
117 | get:
118 | tags:
119 | - Asset Administration Shell Registry API
120 | summary: Returns a specific Submodel Descriptor
121 | operationId: GetSubmodelDescriptorByIdThroughSuperpath
122 | x-semanticIds:
123 | - https://admin-shell.io/aas/API/GetSubmodelDescriptorById/3/0
124 | responses:
125 | '200':
126 | description: Requested Submodel Descriptor
127 | content:
128 | application/json:
129 | schema:
130 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
131 | '400':
132 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
133 | '403':
134 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
135 | '404':
136 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
137 | '500':
138 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
139 | default:
140 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
141 |
142 | /description:
143 | get:
144 | tags:
145 | - Description API
146 | summary: Returns the self-describing information of a network resource (ServiceDescription)
147 | operationId: GetSelfDescription
148 | x-semanticIds:
149 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
150 | responses:
151 | '200':
152 | description: Requested Description
153 | content:
154 | application/json:
155 | schema:
156 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
157 | '403':
158 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
159 | default:
160 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
161 |
--------------------------------------------------------------------------------
/AssetAdministrationShellRegistryServiceSpecification/V3.1_SSP-003.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.1.0
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Bulk Asset Administration Shell Registry Service Specification
4 | description: >-
5 | The Bulk Profile of the Asset Administration Shell Registry Service
6 | Specification as part of the [Specification of the Asset Administration
7 | Shell: Part 2](https://industrialdigitaltwin.org/content-hub/aasspecifications).
8 |
9 | The server processes all requests asynchronously, ensuring atomic
10 | operations. This means that requested manipulations will either fully
11 | succeed or be completely rolled back if any error occurs during the
12 | process.
13 |
14 | Copyright: Industrial Digital Twin Association (IDTA) 2025
15 | contact:
16 | name: Industrial Digital Twin Association (IDTA)
17 | email: info@idtwin.org
18 | license:
19 | name: CC BY 4.0
20 | url: https://creativecommons.org/licenses/by/4.0/
21 | version: V3.1.0_SSP-003
22 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-003
23 | servers:
24 | - url: 'https://admin-shell.io/api/v3/'
25 | - url: 'https://example.com/'
26 |
27 | paths:
28 | /bulk/shell-descriptors:
29 | post:
30 | tags:
31 | - Async Bulk Asset Administration Shell Registry API
32 | summary: >-
33 | Creates multiple new Asset Administration Shell Descriptors, i.e.
34 | registers multiple Asset Administration Shells
35 | operationId: CreateBulkAssetAdministrationShellDescriptors
36 | x-semanticIds:
37 | - https://admin-shell.io/aas/API/CreateBulkAssetAdministrationShellDescriptors/3/1
38 | requestBody:
39 | description: List of Asset Administration Shell Descriptor objects
40 | content:
41 | application/json:
42 | schema:
43 | type: array
44 | minItems: 1
45 | items:
46 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/AssetAdministrationShellDescriptor"
47 | required: true
48 | responses:
49 | '202':
50 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/accepted"
51 | '400':
52 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
53 | '401':
54 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
55 | '403':
56 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
57 | '500':
58 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
59 | put:
60 | tags:
61 | - Async Bulk Asset Administration Shell Registry API
62 | summary: Creates or updates multiple existing Asset Administration Shell Descriptors
63 | operationId: PutBulkAssetAdministrationShellDescriptorsById
64 | x-semanticIds:
65 | - https://admin-shell.io/aas/API/PutBulkAssetAdministrationShellDescriptorsById/3/1
66 | requestBody:
67 | description: List of Asset Administration Shell Descriptor objects
68 | content:
69 | application/json:
70 | schema:
71 | type: array
72 | minItems: 1
73 | items:
74 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/AssetAdministrationShellDescriptor"
75 | required: true
76 | responses:
77 | '202':
78 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/accepted"
79 | '400':
80 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
81 | '401':
82 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
83 | '403':
84 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
85 | '500':
86 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
87 | delete:
88 | tags:
89 | - Async Bulk Asset Administration Shell Registry API
90 | summary: >-
91 | Deletes multiple Asset Administration Shell Descriptors, i.e.
92 | de-registers multiple Asset Administration Shells
93 | operationId: DeleteBulkAssetAdministrationShellDescriptorsById
94 | x-semanticIds:
95 | - https://admin-shell.io/aas/API/DeleteBulkAssetAdministrationShellDescriptorsById/3/1
96 | requestBody:
97 | description: List of Asset Administration Shell Identifiers
98 | content:
99 | application/json:
100 | schema:
101 | type: array
102 | minItems: 1
103 | items:
104 | type: string
105 | responses:
106 | '202':
107 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/accepted"
108 | '400':
109 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
110 | '401':
111 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
112 | '404':
113 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found"
114 | '500':
115 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
116 | /bulk/status/{handleId}:
117 | get:
118 | tags:
119 | - Async Bulk Status API
120 | summary: Returns the status of an asynchronously invoked bulk operation
121 | operationId: GetAsyncBulkStatus
122 | x-semanticIds:
123 | - https://admin-shell.io/aas/API/GetAsyncBulkStatus/3/1
124 | parameters:
125 | - in: path
126 | name: handleId
127 | schema:
128 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/HandleId"
129 | required: true
130 | responses:
131 | '200':
132 | description: Bulk operation result object containing information that the
133 | 'executionState' is still 'Running'
134 | headers:
135 | Retry-After:
136 | schema:
137 | type: integer
138 | required: false
139 | description: The number of seconds to wait before retrying the request.
140 | content:
141 | application/json:
142 | schema:
143 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/BaseOperationResult"
144 | '302':
145 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/found"
146 | '401':
147 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
148 | '403':
149 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
150 | '404':
151 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found"
152 | '500':
153 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
154 | /bulk/result/{handleId}:
155 | get:
156 | tags:
157 | - Async Bulk Result API
158 | summary: Returns the result object of an asynchronously invoked bulk operation
159 | operationId: GetBulkAsyncResult
160 | x-semanticIds:
161 | - https://admin-shell.io/aas/API/GetBulkAsyncResult/3/1
162 | parameters:
163 | - in: path
164 | name: handleId
165 | schema:
166 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/HandleId"
167 | required: true
168 | responses:
169 | '204':
170 | description: The bulk request itself was correct and all elements have been
171 | processed. The server may remove the result resource after it was
172 | requested once (by any client) or after a certain time period.
173 | '400':
174 | description: There was an error in the processing of the request. Either the bulk
175 | request itself was not correct, or at least of it's part requests.
176 | The whole transaction has been rolled back.
177 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
178 | '401':
179 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
180 | '403':
181 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
182 | '404':
183 | description: The handleId is not known to the server. This means either it never
184 | came into existence or it was successfully completed a considerable
185 | time in the past.
186 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found"
187 | '500':
188 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
189 | /description:
190 | get:
191 | tags:
192 | - Description API
193 | summary: >-
194 | Returns the self-describing information of a network resource
195 | (ServiceDescription)
196 | operationId: GetSelfDescription
197 | x-semanticIds:
198 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
199 | responses:
200 | '200':
201 | description: Requested Description
202 | content:
203 | application/json:
204 | schema:
205 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription"
206 | '403':
207 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
208 | default:
209 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default"
210 |
--------------------------------------------------------------------------------
/AssetAdministrationShellRegistryServiceSpecification/V3.1_SSP-004.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Asset Administration Shell Registry Service Specification
4 | description: >-
5 | The Query Profile of the Asset Administration Shell Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-004
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-004
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /query/shell-descriptors:
22 | post:
23 | tags:
24 | - Asset Administration Shell Registry API
25 | summary: Returns all Asset Administration Shell Descriptors that confirm to the input query
26 | operationId: QueryAssetAdministrationShellDescriptors
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/QueryAssetAdministrationShellDescriptors/3/1
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | requestBody:
33 | content:
34 | application/json:
35 | schema:
36 | # Note: It is a known problem that SwaggerHub cannot render the oneOf statement in the Query definition.
37 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Query'
38 | responses:
39 | '200':
40 | description: Requested Asset Administration Shell Descriptors
41 | content:
42 | application/json:
43 | schema:
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/QueryResultAssetAdministrationShellDescriptor'
45 | '400':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
47 | '401':
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
49 | '403':
50 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
51 | '500':
52 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
53 | default:
54 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
55 |
56 |
57 | /description:
58 | get:
59 | tags:
60 | - Description API
61 | summary: Returns the self-describing information of a network resource (ServiceDescription)
62 | operationId: GetSelfDescription
63 | x-semanticIds:
64 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
65 | responses:
66 | '200':
67 | description: Requested Description
68 | content:
69 | application/json:
70 | schema:
71 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
72 | '401':
73 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
74 | '403':
75 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
--------------------------------------------------------------------------------
/AssetAdministrationShellRegistryServiceSpecification/V3.1_SSP-005.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Asset Administration Shell Registry Service Specification
4 | description: >-
5 | The Minimal Read Profile of the Asset Administration Shell Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-005
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRegistryServiceSpecification/SSP-005
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 | paths:
20 | /shell-descriptors:
21 | get:
22 | tags:
23 | - Asset Administration Shell Registry API
24 | summary: Returns all Asset Administration Shell Descriptors
25 | operationId: GetAllAssetAdministrationShellDescriptors
26 | x-semanticIds:
27 | - https://admin-shell.io/aas/API/GetAllAssetAdministrationShellDescriptors/3/1
28 | - https://admin-shell.io/aas/API/GetAllAssetAdministrationShellDescriptorsByAssetType/3/0
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetKind'
33 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetType'
34 | responses:
35 | '200':
36 | description: Requested Asset Administration Shell Descriptors
37 | content:
38 | application/json:
39 | schema:
40 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/GetAssetAdministrationShellDescriptorsResult'
41 | '400':
42 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
43 | '403':
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
45 | '500':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
47 | default:
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
49 | /shell-descriptors/{aasIdentifier}:
50 | get:
51 | tags:
52 | - Asset Administration Shell Registry API
53 | summary: Returns a specific Asset Administration Shell Descriptor
54 | operationId: GetAssetAdministrationShellDescriptorById
55 | x-semanticIds:
56 | - https://admin-shell.io/aas/API/GetAssetAdministrationShellDescriptorById/3/1
57 | parameters:
58 | - name: aasIdentifier
59 | in: path
60 | description: The Asset Administration Shell’s unique id (UTF8-BASE64-URL-encoded)
61 | required: true
62 | style: simple
63 | explode: false
64 | schema:
65 | type: string
66 | responses:
67 | '200':
68 | description: Requested Asset Administration Shell Descriptor
69 | content:
70 | application/json:
71 | schema:
72 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/AssetAdministrationShellDescriptor'
73 | '400':
74 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
75 | '403':
76 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
77 | '404':
78 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
79 | '500':
80 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
81 | default:
82 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
83 |
84 | /description:
85 | get:
86 | tags:
87 | - Description API
88 | summary: Returns the self-describing information of a network resource (ServiceDescription)
89 | operationId: GetSelfDescription
90 | x-semanticIds:
91 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
92 | responses:
93 | '200':
94 | description: Requested Description
95 | content:
96 | application/json:
97 | schema:
98 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
99 | '403':
100 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
101 | default:
102 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
103 |
--------------------------------------------------------------------------------
/AssetAdministrationShellRepositoryServiceSpecification/V3.1_SSP-003.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Asset Administration Shell Repository Service Specification
4 | description: >-
5 | The Query Profile of the Asset Administration Shell Repository Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-003
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/AssetAdministrationShellRepositoryServiceSpecification/SSP-003
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /query/shells:
22 | post:
23 | tags:
24 | - Asset Administration Shell Repository API
25 | summary: Returns all Asset Administration Shells that confirm to the input query
26 | operationId: QueryAssetAdministrationShells
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/QueryAssetAdministrationShells/3/1
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | requestBody:
33 | content:
34 | application/json:
35 | schema:
36 | # Note: It is a known problem that SwaggerHub cannot render the oneOf statement in the Query definition.
37 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Query'
38 | responses:
39 | '200':
40 | description: Requested Asset Administration Shells
41 | content:
42 | application/json:
43 | schema:
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/QueryResultAssetAdministrationShell'
45 | '400':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
47 | '401':
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
49 | '403':
50 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
51 | '500':
52 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
53 | default:
54 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
55 |
56 |
57 | /description:
58 | get:
59 | tags:
60 | - Description API
61 | summary: Returns the self-describing information of a network resource (ServiceDescription)
62 | operationId: GetSelfDescription
63 | x-semanticIds:
64 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
65 | responses:
66 | '200':
67 | description: Requested Description
68 | content:
69 | application/json:
70 | schema:
71 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
72 | '401':
73 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
74 | '403':
75 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | The [Specification of the Asset Administration Shell - Part 2] is an official publication of the [IDTA] work stream "Specification of the Asset Administration Shell" within the Work Group "Open Technology".
4 | The API definitions in this repository must be particularly compliant with this specification.
5 | To ensure a faster adoption and improvement of AAS API, we invite the community to contribute with reviews, reporting issues, and fixing them.
6 | Do you want to contribute? Great! But before you do it, please follow the defined procedure for the contribution in this repository.
7 |
8 | [Specification of the Asset Administration Shell - Part 2]: https://industrialdigitaltwin.org/en/content-hub/
9 |
10 |
11 | ## Prerequisites
12 |
13 | **Please note** that by submitting an Issue or a Pull Request (PR), you aggree that the created content falls under a Developer Certificate of Origin ([DCO]), by which you declare that you have the legal right to contribute the content under the stated license and that the [IDTA] and the maintainers of this repository are allowed to use your contribution for publications, e.g., [Specification of the Asset Administration Shell - Part 2]. In certain cases, an additional signing of a Contributor License Agreement (CLA) can be required. It is up to the maintainers of this repository to decide whether an individual contribution needs also a signed CLA. In case the contributor does not sign it in an appropriate time span after being notified, the contribution cannot be used further and in particular can not appear in any release.
14 |
15 | [DCO]: https://developercertificate.org
16 |
17 |
18 | ## Raising Issues
19 |
20 | [Github Issues](https://github.com/admin-shell-io/aas-specs-api/issues) are the preferred way to inform the community about bugs, shortcomings, feature requests and so on.
21 |
22 |
23 | **Use a template**. Several issue templates are available to better structure the process. Depending on your issue, submit a review finding, a bug report, or a request for a new feature. Only if none of these fits, [open a new blank issue](https://github.com/admin-shell-io/aas-specs-api/issues/new). Due to legal reasons, click also the checkmark stating that you have already signed the [DCO] (see [Section Prerequisites](#prerequisites)).
24 | A maintainer will then assign additional labels, milestones, and individual other contributers if possible.
25 |
26 |
27 | ## Before the Pull Requests
28 |
29 | If you are contributing for the first time, please inform yourself about the [LICENSE](./LICENSE.txt) used for this repository. Also, you will be asked to sign a [DCO] if not done already (see [Section Prerequisites](#prerequisites)). Different to issues, Pull Requests are checked automatically through the [CLA Assistant](https://cla-assistant.io).
30 |
31 |
32 | **Create Feature branches**.
33 | We develop using the feature branches, see [this section of the Git book].
34 |
35 | [this section of the Git book]: https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows.
36 |
37 | If you are a member of the IDTA workstream team, [create a feature branch] directly within the repository.
38 |
39 | [create a feature branch]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository
40 |
41 | Otherwise, if you are a non-member contributor, fork the repository and create the feature branch in your forked repository. See [this Github tutorial] for more guidance.
42 |
43 | [this Github tutorial]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork
44 |
45 |
46 |
47 | **Branch Prefix**.
48 | Please prefix the branch with your Github user name (*e.g.,* `my-user/Add-some-feature`).
49 |
50 | ## Recommendation for Commit Messages
51 |
52 | The commit messages follow the guidelines from https://chris.beams.io/posts/git-commit:
53 | * Separate subject from body with a blank line
54 | * Limit the subject line to 50 characters
55 | * Capitalize the subject line
56 | * Do not end the subject line with a period
57 | * Use the imperative mood in the subject line
58 | * Wrap the body at 72 characters
59 | * Use the body to explain *what* and *why* (instead of *how*)
60 |
61 | ## Create Pull Request
62 | After all changes have been committed to your feature branch, a [pull request] (PR) has to be created.
63 | Every PR must be linked to an issue for tracking.
64 | See [this Github tutorial] for more guidance.
65 |
66 | [pull request]: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request
67 |
68 | [link PR to issue]: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
69 |
70 | The discussion on the issue's content happends in the issue and not the PR. The discussion in the PR should focus on the reviewer's remarks.
71 |
72 | ## Pre-Merge Checks
73 | **Continuous Integration.**
74 | Github will run the continuous integration (CI) automatically through Github actions to verify that the submitted changes are valid.
75 | Every pull request automatically runs the continuous integration with every update.
76 |
77 | The continuous integration must be **successfully completed** with `All checks have passed` before proceeding with the approval process.
78 |
79 |
80 | ### Check Commit and Pull Request Messages
81 | In accordance with Section "Recommendation for Commit Messages" the continuous integration checks the previously defined conditions.
82 | For the present development, however, this is not enforced.
83 |
84 | ## Approval Process
85 | All changes must be **reviewed** and **approved** by members of the IDTA workstream "Specification of the Asset Administration Shell".
86 |
87 | Minor changes (simple failures, typos, *etc.*) and additional content (more examples, etc.) can be accepted straight away after a brief review by at least one responsible reviewers.
88 |
89 | Major changes must first be presented and approved in the [IDTA] workstream "AAS in Detail". If the creator of a PR is not a member of the workstream, a dedicated assignee will present it.
90 |
91 | [Platform Industrie 4.0]: http://www.plattform-i40.de
92 | [IDTA]: https://industrialdigitaltwin.org/
93 |
94 |
95 | ## Merge into `main` Branch
96 |
97 | After the approval, the pull request can be merged into the repository. This is done by one of the maintainers.
98 | Bugfixes might be collected together first and then be merged through one indivdual commit. Similarly, new features are first collected in defined minor/major release branches, and merged into the `main` at the time when the corresponding version of the specification is published.
99 |
100 | *Note:* Changes into external resources, e.g. Swaggerhub, are done by the members of the IDTA workstream immediatly after the indivdual PRs have been merged. The leading source is always the content of this repository.
101 |
102 |
103 | ## Post-Merge Cleanup
104 | **Congratulation.**
105 | You successfully contributed to the aas-spec-api repository.
106 |
107 | If you are a member of the workstream team, please delete the feature branch you directly created within the aas-specs-api repository.
108 |
109 | Otherwise, if you are not part of the team and you forked the repository, feel free to delete your fork.
110 |
--------------------------------------------------------------------------------
/ConceptDescriptionRepositoryServiceSpecification/V3.1_SSP-002.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Concept Description Repository Service Specification
4 | description: >-
5 | The Query Profile of the Concept Description Repository Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-002
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/ConceptDescriptionRepositoryServiceSpecification/SSP-002
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /query/concept-descriptions:
22 | post:
23 | tags:
24 | - Concept Description Repository API
25 | summary: Returns all Concept Descriptions that confirm to the input query
26 | operationId: QueryConceptDescriptions
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/QueryConceptDescriptions/3/1
29 | - https://admin-shell.io/aas/API/QueryConceptDescriptionIds/3/1
30 | parameters:
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
32 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
33 | requestBody:
34 | content:
35 | application/json:
36 | schema:
37 | # Note: It is a known problem that SwaggerHub cannot render the oneOf statement in the Query definition.
38 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Query'
39 | responses:
40 | '200':
41 | description: Requested Concept Descriptions
42 | content:
43 | application/json:
44 | schema:
45 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/QueryResultConceptDescription'
46 | '400':
47 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
48 | '401':
49 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
50 | '403':
51 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
52 | '500':
53 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
54 | default:
55 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
56 |
57 |
58 | /description:
59 | get:
60 | tags:
61 | - Description API
62 | summary: Returns the self-describing information of a network resource (ServiceDescription)
63 | operationId: GetSelfDescription
64 | x-semanticIds:
65 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
66 | responses:
67 | '200':
68 | description: Requested Description
69 | content:
70 | application/json:
71 | schema:
72 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
73 | '401':
74 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
75 | '403':
76 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
--------------------------------------------------------------------------------
/DINSPEC16593-Schemas/openapi.yaml:
--------------------------------------------------------------------------------
1 | # OpenAPI version identifier - required for OpenAPI 3.0 domains
2 | openapi: 3.0.3
3 | info:
4 | title: DotAAS Part 2 | DIN SPEC 16593 | Schemas
5 | description: The depricated schemas implementing DIN SPEC 16593. This file is out of date. The publication of the DINSPEC16593 schemas never happened officially. The mirror standard in Part II DINSPEC16593 schemas is therefore obsolete. The specification of the ProtocolInformation is defined in Part2 API schemas.
6 | contact:
7 | name: Michael Hoffmeister, Torben Miny, Andreas Orzelski, Manuel Sauer, Constantin Ziesche, Sebastian Bader, Marko Ristin, Nico Braunisch
8 | version: V3.0.1
9 | termsOfService: https://github.com/admin-shell-io/aas-specs-metamodel
10 | components:
11 | schemas:
12 | Endpoint:
13 | properties:
14 | interface:
15 | type: string
16 | protocolInformation:
17 | $ref: "#/components/schemas/ProtocolInformation"
18 | required:
19 | - protocolInformation
20 | - interface
21 | type: object
22 | ProtocolInformation:
23 | properties:
24 | endpointAddress:
25 | type: string
26 | endpointProtocol:
27 | type: string
28 | endpointProtocolVersion:
29 | type: string
30 | subprotocol:
31 | type: string
32 | subprotocolBody:
33 | type: string
34 | subprotocolBodyEncoding:
35 | type: string
36 | securityAttributes:
37 | type: array
38 | items:
39 | $ref: "#/components/schemas/SecurityAttribute"
40 | required:
41 | - endpointAddress
42 | type: object
43 | SecurityAttribute:
44 | type: object
45 | properties:
46 | type:
47 | type: string
48 | key:
49 | type: string
50 | value:
51 | type: string
52 |
--------------------------------------------------------------------------------
/DiscoveryServiceSpecification/V3.1_SSP-001.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Discovery Service Specification (V3.1 Draft, not released)
4 | description: >-
5 | The entire Full Profile of the Discovery Service Specification as part of the [Specification of the Asset Administration Shell - Part 2: API](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-001
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/DiscoveryServiceSpecification/SSP-001
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /lookup/shells:
22 | get:
23 | deprecated: true
24 | tags:
25 | - Asset Administration Shell Basic Discovery API
26 | summary: Returns a list of Asset Administration Shell IDs linked to specific asset identifiers or the global asset ID
27 | operationId: GetAllAssetAdministrationShellIdsByAssetLink
28 | x-semanticIds:
29 | - https://admin-shell.io/aas/API/GetAllAssetAdministrationShellIdsByAssetLink/3/0
30 | parameters:
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetIds'
32 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
33 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
34 | responses:
35 | '200':
36 | description: Requested Asset Administration Shell IDs
37 | content:
38 | application/json:
39 | schema:
40 | allOf:
41 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/PagedResult'
42 | - type: object
43 | properties:
44 | result:
45 | type: array
46 | items:
47 | type: string
48 | default:
49 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
50 | /lookup/shellsByAssetLink:
51 | post:
52 | tags:
53 | - Asset Administration Shell Basic Discovery API
54 | summary: Returns a list of Asset Administration Shell IDs linked to specific asset identifiers or the global asset ID
55 | operationId: SearchAllAssetAdministrationShellIdsByAssetLink
56 | x-semanticIds:
57 | - https://admin-shell.io/aas/API/SearchAllAssetAdministrationShellIdsByAssetLink/3/1
58 | parameters:
59 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
60 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
61 | requestBody:
62 | description: A list of specific asset identifiers. Search for the global asset ID is supported by setting "name" to "globalAssetId" (see Constraint AASd-116).
63 | content:
64 | application/json:
65 | schema:
66 | type: array
67 | items:
68 | '$ref': 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/AssetLink'
69 | responses:
70 | '200':
71 | description: Requested Asset Administration Shell IDs
72 | content:
73 | application/json:
74 | schema:
75 | allOf:
76 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/PagedResult'
77 | - type: object
78 | properties:
79 | result:
80 | type: array
81 | items:
82 | type: string
83 | '400':
84 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
85 | default:
86 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
87 |
88 | /lookup/shells/{aasIdentifier}:
89 | parameters:
90 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetAdministrationShellIdentifier'
91 | get:
92 | tags:
93 | - Asset Administration Shell Basic Discovery API
94 | summary: Returns a list of specific asset identifiers based on an Asset Administration Shell ID to edit discoverable content. The global asset ID is returned as specific asset ID with "name" equal to "globalAssetId" (see Constraint AASd-116).
95 | operationId: GetAllAssetLinksById
96 | x-semanticIds:
97 | - https://admin-shell.io/aas/API/GetAllAssetLinksById/3/0
98 | responses:
99 | '200':
100 | description: Requested specific Asset identifiers (including the global asset ID represented by a specific asset ID)
101 | content:
102 | application/json:
103 | schema:
104 | type: array
105 | items:
106 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/SpecificAssetId'
107 | '404':
108 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
109 | default:
110 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
111 | post:
112 | tags:
113 | - Asset Administration Shell Basic Discovery API
114 | summary: Creates specific asset identifiers linked to an Asset Administration Shell to edit discoverable content
115 | operationId: PostAllAssetLinksById
116 | x-semanticIds:
117 | - https://admin-shell.io/aas/API/PostAllAssetLinksById/3/0
118 | requestBody:
119 | description: A set of specific asset identifiers
120 | content:
121 | application/json:
122 | schema:
123 | type: array
124 | items:
125 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/SpecificAssetId'
126 | required: true
127 | responses:
128 | '201':
129 | description: Specific asset identifiers created successfully
130 | content:
131 | application/json:
132 | schema:
133 | type: array
134 | items:
135 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/SpecificAssetId'
136 | '400':
137 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
138 | '404':
139 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
140 | '409':
141 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/conflict'
142 | default:
143 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
144 | delete:
145 | tags:
146 | - Asset Administration Shell Basic Discovery API
147 | summary: "Deletes specified specific asset identifiers linked to an Asset Administration Shell: discovery via these specific asset IDs shall not be supported any longer"
148 | operationId: DeleteAllAssetLinksById
149 | x-semanticIds:
150 | - https://admin-shell.io/aas/API/DeleteAllAssetLinksById/3/0
151 | responses:
152 | '204':
153 | description: Specific asset identifiers deleted successfully
154 | '404':
155 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
156 | default:
157 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
158 | /description:
159 | get:
160 | tags:
161 | - Description API
162 | summary: Returns the self-describing information of a network resource (ServiceDescription)
163 | operationId: GetSelfDescription
164 | x-semanticIds:
165 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
166 | responses:
167 | '200':
168 | description: Requested Description
169 | content:
170 | application/json:
171 | schema:
172 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
173 | default:
174 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
--------------------------------------------------------------------------------
/DiscoveryServiceSpecification/V3.1_SSP-002.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Discovery Service Specification
4 | description: >-
5 | The READ Profile of the Discovery Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-002
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/DiscoveryServiceSpecification/SSP-002
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /lookup/shellsByAssetLink:
22 | post:
23 | tags:
24 | - Asset Administration Shell Basic Discovery API
25 | summary: Returns a list of Asset Administration Shell ids linked to specific Asset identifiers
26 | operationId: SearchAllAssetAdministrationShellIdsByAssetLink
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/SearchAllAssetAdministrationShellIdsByAssetLink/3/1
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | requestBody:
33 | description: A list of specific Asset identifiers
34 | content:
35 | application/json:
36 | schema:
37 | type: array
38 | items:
39 | '$ref': 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/AssetLink'
40 | responses:
41 | '200':
42 | description: Requested Asset Administration Shell ids
43 | content:
44 | application/json:
45 | schema:
46 | allOf:
47 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/PagedResult'
48 | - type: object
49 | properties:
50 | result:
51 | type: array
52 | items:
53 | type: string
54 | '400':
55 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
56 | default:
57 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
58 |
59 | /lookup/shells/{aasIdentifier}:
60 | parameters:
61 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/AssetAdministrationShellIdentifier'
62 | get:
63 | tags:
64 | - Asset Administration Shell Basic Discovery API
65 | summary: Returns a list of specific Asset identifiers based on an Asset Administration Shell id to edit discoverable content
66 | operationId: GetAllAssetLinksById
67 | x-semanticIds:
68 | - https://admin-shell.io/aas/API/GetAllAssetLinksById/3/0
69 | responses:
70 | '200':
71 | description: Requested specific Asset identifiers
72 | content:
73 | application/json:
74 | schema:
75 | type: array
76 | items:
77 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/SpecificAssetId'
78 | '404':
79 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
80 | default:
81 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
82 | /description:
83 | get:
84 | tags:
85 | - Description API
86 | summary: Returns the self-describing information of a network resource (ServiceDescription)
87 | operationId: GetSelfDescription
88 | x-semanticIds:
89 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
90 | responses:
91 | '200':
92 | description: Requested Description
93 | content:
94 | application/json:
95 | schema:
96 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
97 | default:
98 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
99 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # IDTA-01002 - APIs of the Asset Administration Shell
2 |
3 | [](
6 | https://creativecommons.org/licenses/by/4.0/
7 | )
8 |
9 | This repository contains specifications of the APIs of the Asset Administration Shell (AAS), including the normative OpenAPI files of the AAS HTTP/REST API.
10 |
11 | ## Industrial Digital Twin Association (IDTA)
12 |
13 | Governance of the specification is done in the working group Open Technology of the [IDTA](https://industrialdigitaltwin.org/en/)
14 |
15 | The specification number is: **IDTA-01002**
16 |
17 | ## Content
18 | This repository provides the OpenAPI files published in the SwaggerHub organization [Plattform_i40](https://app.swaggerhub.com/search?owner=Plattform_i40).
19 | All published SwaggerHub APIs are synchronized all the time with the respective folders in this repository using the [GitHub Integration](https://support.smartbear.com/swaggerhub/docs/integrations/github-sync.html) feature. In particular, the following APIs are contained:
20 |
21 | |API SPEC|GitHub|SwaggerHub|
22 | |-----------------------------------------------------------------------|-----------------------------------------------------------------|----------------------------------------------------|
23 | |Entire-API-Collection |[Link](./Entire-API-Collection/V3.1.yaml)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/Entire-API-Collection)|https://app.swaggerhub.com/apis/Plattform_i40/Entire-API-Collection
24 | |Asset Administration Shell Registry Service Specification|[Link](./AssetAdministrationShellRegistryServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/AssetAdministrationShellRegistryServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/RegistryServiceSpecification/V3.1.0_SSP-001
25 | |Asset Administration Shell Repository Service Specification|[Link](./AssetAdministrationShellRepositoryServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/AssetAdministrationShellRepositoryServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/AssetAdministrationShellRepositoryServiceSpecification/V3.1.0_SSP-001
26 | |Asset Administration Shell Service Specification|[Link](./AssetAdministrationShellServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/AssetAdministrationShellServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/AssetAdministrationShellServiceSpecification/V3.1.0_SSP-001
27 | |Submodel Registry Service Specification |[Link](./SubmodelRegistryServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/SubmodelRegistryServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/SubmodelRegistryServiceSpecification/V3.1.0_SSP-001
28 | |Submodel Repository Service Specification|[Link](./SubmodelRepositoryServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/SubmodelRepositoryServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/SubmodelRepositoryServiceSpecification/V3.1.0_SSP-001
29 | |Submodel Service Specification|[Link](./SubmodelServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/SubmodelServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/SubmodelServiceSpecification/V3.1.0_SSP-001
30 | |Discovery Service Specification |[Link](./DiscoveryServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/DiscoveryServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/DiscoveryServiceSpecification/V3.1.0_SSP-001
31 | |Concept Description Repository Service Specification|[Link](./ConceptDescriptionRepositoryServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/ConceptDescriptionRepositoryServiceSpecification)|https://app.swaggerhub.com/apis/Plattform_i40/ConceptDescriptionRepositoryServiceSpecification/V3.1.0_SSP-001
32 | |Aasx-File-Server Service Specification |[Link](./AasxFileServerServiceSpecification)|[Link](https://app.swaggerhub.com/apis/Plattform_i40/AasxFileServerServiceSpecification)
33 |
34 | The following *domains* are synchronized manually as domain synchronization is not yet available in SwaggerHub:
35 | |API SPEC|GitHub|SwaggerHub|
36 | |------------------------------------------------------------------------|-----------------------------------------------------------------|----------------------------------------------------|
37 | | Part1-MetaModel-Schemas Domain |[Link](./Part1-MetaModel-Schemas/openapi.yaml)|[Link](https://app.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas)|
38 | | Part2-API-Schemas Domain |[Link](./Part2-API-Schemas/openapi.yaml)|[Link](https://app.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas)|
39 | | DINSPEC16593-Schemas Domain (Deprecated) |[Link](./DINSPEC16593-Schemas/openapi.yaml)|[Link](https://app.swaggerhub.com/domains/Plattform_i40/DINSPEC16593-Schemas)|
40 |
41 | The sources of the specification, both website and PDF document, are maintained in the [documentation](./documentation/) folder. The different versions are identified through the respective release tags, while the latest state on the `main` branch always represents a `SNAPSHOT` version.
42 |
43 |
44 | ## API Versions in GitHub Branches
45 |
46 | The `main` branch contains the latest released version of all APIs and Domains. Current and previously released states are tagged with the corresponding release version in this repository, and marked with the `Published` tag in SwaggerHub.
47 | Working versions may be marked as `private` in SwaggerHub and therefore may not be visible to the public audience yet. In this repository, working versions appear as branches named after the target release version.
48 | **Note:** In order to synchronize with the same GitHub branch, all versions should follow the exact same pattern.
49 |
50 | ### Releases
51 |
52 | The following versioning scheme is applied for release tags: 'V\.\.\'.
53 | Major versions indicate breaking changes while minor updates are backward compatible.
54 | The patch position is increased whenever bugfixes need to be applied.
55 | The following release contains the latest version of the AAS schemas (see also the [releases](https://github.com/admin-shell-io/aas-specs-api/releases) section of this repository):
56 |
57 | * [3.1.0](https://github.com/admin-shell-io/aas-specs-api/releases/tag/v3.1.0) is the latest release for the `V3.1.0` version of the AAS APIs, containing the normative schemas for the published document "Specification of the Asset Administration Shell - Part 2: Application Programming Interfaces - **Version 3.1.0**". *Use this release if you want to work with the latest specified AAS version.*
58 |
59 | Previous releases:
60 |
61 | * [3.0.4](https://github.com/admin-shell-io/aas-specs-api/releases/tag/v3.0.4) is the latest bugfix release for the `V3.0.4` version of the AAS APIs, containing the normative schemas for the published document "Specification of the Asset Administration Shell - Part 2: Application Programming Interfaces - Version 3.0.4".
62 |
63 | * [3.0.3](https://github.com/admin-shell-io/aas-specs-api/releases/tag/V3.0.3) is the bugfix release for the `V3.0.3` version of the AAS APIs, containing the normative schemas for the published document "Specification of the Asset Administration Shell - Part 2: Application Programming Interfaces - Version 3.0.3".
64 |
65 | * [3.0.2](https://github.com/admin-shell-io/aas-specs-api/releases/tag/V3.0.2) is the bugfix release for the `V3.0.2` version of the AAS APIs, containing the normative schemas for the published document "Specification of the Asset Administration Shell - Part 2: Application Programming Interfaces - Version 3.0.2".
66 |
67 | * [3.0.1](https://github.com/admin-shell-io/aas-specs-api/releases/tag/V3.0.1) is the bugfix release for the `V3.0.1` version of the AAS APIs, containing the normative schemas for the published document "Specification of the Asset Administration Shell - Part 2: Application Programming Interfaces - Version 3.0.1".
68 |
69 | * [3.0](https://github.com/admin-shell-io/aas-specs-api/releases/tag/V3.0) is the first major release for the AAS APIs, containing the normative API descriptions for the published document "Specification of the Asset Administration Shell - Part 2: Application Programming Interfaces - Version 3.0".
70 |
71 |
72 | ## Contributing
73 |
74 | Feature requests, reports about inconsistencies, mistakes *etc.* are highly
75 | welcome! Please [submit a new issue](
76 | https://github.com/admin-shell-io/aas-specs-api/issues/new/choose
77 | ).
78 |
79 | If you want to contribute, see [CONTRIBUTING.md](CONTRIBUTING.md).
80 |
81 |
82 |
83 | ## SwaggerHub GitHub Synchronization
84 |
85 | SwaggerHub requires a GitHub Access Token with `repo` permissions. It is good practice that the selected token has a defined expiration date. Therefore, at some point in time when the current token expires, the synchronization will fail and a new token needs to be added through the IDTA repository management team.
86 |
--------------------------------------------------------------------------------
/SubmodelRegistryServiceSpecification/V3.1_SSP-001.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Submodel Registry Service Specification
4 | description: >-
5 | The Full Profile of the Submodel Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-001
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-001
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 | paths:
20 | /submodel-descriptors:
21 | get:
22 | tags:
23 | - Submodel Registry API
24 | summary: Returns all Submodel Descriptors
25 | operationId: GetAllSubmodelDescriptors
26 | x-semanticIds:
27 | - https://admin-shell.io/aas/API/GetAllSubmodelDescriptors/3/0
28 | parameters:
29 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
31 | responses:
32 | '200':
33 | description: Requested Submodel Descriptors
34 | content:
35 | application/json:
36 | schema:
37 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/GetSubmodelDescriptorsResult'
38 | '400':
39 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
40 | '403':
41 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
42 | '404':
43 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
44 | '500':
45 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
46 | default:
47 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
48 | post:
49 | tags:
50 | - Submodel Registry API
51 | summary: Creates a new Submodel Descriptor, i.e. registers a submodel
52 | operationId: PostSubmodelDescriptor
53 | x-semanticIds:
54 | - https://admin-shell.io/aas/API/PostSubmodelDescriptor/3/0
55 | requestBody:
56 | description: Submodel Descriptor object
57 | content:
58 | application/json:
59 | schema:
60 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
61 | required: true
62 | responses:
63 | '201':
64 | description: Submodel Descriptor created successfully
65 | headers:
66 | Location:
67 | description: URL of the newly created resource
68 | schema:
69 | type: string
70 | content:
71 | application/json:
72 | schema:
73 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
74 | '400':
75 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
76 | '403':
77 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
78 | '409':
79 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/conflict'
80 | default:
81 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
82 | /submodel-descriptors/{submodelIdentifier}:
83 | parameters:
84 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/SubmodelIdentifier'
85 | get:
86 | tags:
87 | - Submodel Registry API
88 | summary: Returns a specific Submodel Descriptor
89 | operationId: GetSubmodelDescriptorById
90 | x-semanticIds:
91 | - https://admin-shell.io/aas/API/GetSubmodelDescriptorById/3/0
92 | responses:
93 | '200':
94 | description: Requested Submodel Descriptor
95 | content:
96 | application/json:
97 | schema:
98 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
99 | '400':
100 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
101 | '403':
102 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
103 | '404':
104 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
105 | '500':
106 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
107 | default:
108 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
109 | put:
110 | tags:
111 | - Submodel Registry API
112 | summary: Creates or updates an existing Submodel Descriptor
113 | operationId: PutSubmodelDescriptorById
114 | x-semanticIds:
115 | - https://admin-shell.io/aas/API/PutSubmodelDescriptorById/3/0
116 | requestBody:
117 | description: Submodel Descriptor object
118 | content:
119 | application/json:
120 | schema:
121 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
122 | required: true
123 | responses:
124 | '201':
125 | description: Submodel Descriptor created successfully
126 | headers:
127 | Location:
128 | description: URL of the newly created resource
129 | schema:
130 | type: string
131 | content:
132 | application/json:
133 | schema:
134 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
135 | '204':
136 | description: Submodel Descriptor updated successfully
137 | '400':
138 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
139 | '403':
140 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
141 | '500':
142 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
143 | default:
144 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
145 | delete:
146 | tags:
147 | - Submodel Registry API
148 | summary: Deletes a Submodel Descriptor, i.e. de-registers a submodel
149 | operationId: DeleteSubmodelDescriptorById
150 | x-semanticIds:
151 | - https://admin-shell.io/aas/API/DeleteSubmodelDescriptorById/3/0
152 | responses:
153 | '204':
154 | description: Submodel Descriptor deleted successfully
155 | '400':
156 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
157 | '403':
158 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
159 | '404':
160 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
161 | '500':
162 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
163 | /description:
164 | get:
165 | tags:
166 | - Description API
167 | summary: Returns the self-describing information of a network resource (ServiceDescription)
168 | operationId: GetSelfDescription
169 | x-semanticIds:
170 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
171 | responses:
172 | '200':
173 | description: Requested Description
174 | content:
175 | application/json:
176 | schema:
177 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
178 | '403':
179 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
180 | default:
181 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
182 |
--------------------------------------------------------------------------------
/SubmodelRegistryServiceSpecification/V3.1_SSP-002.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Submodel Registry Service Specification
4 | description: >-
5 | The Read Profile of the Submodel Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-002
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-002
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 | paths:
20 | /submodel-descriptors:
21 | get:
22 | tags:
23 | - Submodel Registry API
24 | summary: Returns all Submodel Descriptors
25 | operationId: GetAllSubmodelDescriptors
26 | x-semanticIds:
27 | - https://admin-shell.io/aas/API/GetAllSubmodelDescriptors/3/0
28 | parameters:
29 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
31 | responses:
32 | '200':
33 | description: Requested Submodel Descriptors
34 | content:
35 | application/json:
36 | schema:
37 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/GetSubmodelDescriptorsResult'
38 | '400':
39 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
40 | '403':
41 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
42 | '404':
43 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
44 | '500':
45 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
46 | default:
47 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
48 | /submodel-descriptors/{submodelIdentifier}:
49 | parameters:
50 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/SubmodelIdentifier'
51 | get:
52 | tags:
53 | - Submodel Registry API
54 | summary: Returns a specific Submodel Descriptor
55 | operationId: GetSubmodelDescriptorById
56 | x-semanticIds:
57 | - https://admin-shell.io/aas/API/GetSubmodelDescriptorById/3/0
58 | responses:
59 | '200':
60 | description: Requested Submodel Descriptor
61 | content:
62 | application/json:
63 | schema:
64 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor'
65 | '400':
66 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
67 | '403':
68 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
69 | '404':
70 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
71 | '500':
72 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
73 | default:
74 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
75 |
76 | /description:
77 | get:
78 | tags:
79 | - Description API
80 | summary: Returns the self-describing information of a network resource (ServiceDescription)
81 | operationId: GetSelfDescription
82 | x-semanticIds:
83 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
84 | responses:
85 | '200':
86 | description: Requested Description
87 | content:
88 | application/json:
89 | schema:
90 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
91 | '403':
92 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
93 | default:
94 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
95 |
--------------------------------------------------------------------------------
/SubmodelRegistryServiceSpecification/V3.1_SSP-003.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.1.0
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Bulk Submodel Registry Service Specification
4 | description: >-
5 | The Bulk Profile of the Submodel Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/content-hub/aasspecifications).
6 |
7 | The server processes all requests asynchronously, ensuring atomic
8 | operations. This means that requested manipulations will either fully
9 | succeed or be completely rolled back if any error occurs during the process.
10 |
11 | Copyright: Industrial Digital Twin Association (IDTA) 2025
12 | contact:
13 | name: Industrial Digital Twin Association (IDTA)
14 | email: info@idtwin.org
15 | license:
16 | name: CC BY 4.0
17 | url: https://creativecommons.org/licenses/by/4.0/
18 | version: V3.1.0_SSP-003
19 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-003
20 | servers:
21 | - url: 'https://admin-shell.io/api/v3/'
22 | - url: 'https://example.com/'
23 |
24 | paths:
25 | /bulk/submodel-descriptors:
26 | post:
27 | tags:
28 | - Async Bulk Submodel Registry API
29 | summary: Creates multiple new Submodel Descriptors
30 | operationId: CreateBulkSubmodelDescriptors
31 | x-semanticIds:
32 | - https://admin-shell.io/aas/API/CreateBulkSubmodelDescriptors/3/1
33 | requestBody:
34 | description: List of Submodel Descriptor objects
35 | content:
36 | application/json:
37 | schema:
38 | type: array
39 | minItems: 1
40 | items:
41 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor"
42 | required: true
43 | responses:
44 | '202':
45 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/accepted"
46 | '400':
47 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
48 | '401':
49 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
50 | '403':
51 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
52 | '500':
53 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
54 | put:
55 | tags:
56 | - Async Bulk Submodel Registry API
57 | summary: Creates or updates multiple existing Submodel Descriptors
58 | operationId: PutBulkSubmodelDescriptorsById
59 | x-semanticIds:
60 | - https://admin-shell.io/aas/API/PutBulkSubmodelDescriptorsById/3/1
61 | requestBody:
62 | description: List of Submodel Descriptor objects
63 | content:
64 | application/json:
65 | schema:
66 | type: array
67 | minItems: 1
68 | items:
69 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelDescriptor"
70 | required: true
71 | responses:
72 | '202':
73 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/accepted"
74 | '400':
75 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
76 | '401':
77 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
78 | '403':
79 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
80 | '500':
81 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
82 | delete:
83 | tags:
84 | - Async Bulk Submodel Registry API
85 | summary: Deletes multiple Submodel Descriptors
86 | operationId: DeleteBulkSubmodelDescriptorsById
87 | x-semanticIds:
88 | - https://admin-shell.io/aas/API/DeleteBulkSubmodelDescriptorsById/3/1
89 | requestBody:
90 | description: List of Submodel Identifiers
91 | content:
92 | application/json:
93 | schema:
94 | type: array
95 | minItems: 1
96 | items:
97 | type: string
98 | responses:
99 | '202':
100 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/accepted"
101 | '400':
102 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
103 | '401':
104 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
105 | '403':
106 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
107 | '500':
108 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
109 | /bulk/status/{handleId}:
110 | get:
111 | tags:
112 | - Async Bulk Status API
113 | summary: Returns the status of an asynchronously invoked bulk operation
114 | operationId: GetBulkAsyncStatus
115 | x-semanticIds:
116 | - https://admin-shell.io/aas/API/GetBulkAsyncStatus/3/1
117 | parameters:
118 | - in: path
119 | name: handleId
120 | schema:
121 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/HandleId"
122 | required: true
123 | responses:
124 | '200':
125 | description: Bulk operation result object containing information that the
126 | 'executionState' is still 'Running'
127 | headers:
128 | Retry-After:
129 | schema:
130 | type: integer
131 | required: false
132 | description: The number of seconds to wait before retrying the request.
133 | content:
134 | application/json:
135 | schema:
136 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/BaseOperationResult"
137 | '302':
138 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/found"
139 | '401':
140 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
141 | '403':
142 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
143 | '404':
144 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found"
145 | '500':
146 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
147 | /bulk/result/{handleId}:
148 | get:
149 | tags:
150 | - Async Bulk Result API
151 | summary: Returns the result object of an asynchronously invoked bulk operation
152 | operationId: GetBulkAsyncResult
153 | x-semanticIds:
154 | - https://admin-shell.io/aas/API/GetBulkAsyncResult/3/1
155 | parameters:
156 | - in: path
157 | name: handleId
158 | schema:
159 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/HandleId"
160 | required: true
161 | responses:
162 | '204':
163 | description: The bulk request itself was correct and all elements have been
164 | processed. The server may remove the result resource after it was
165 | requested once (by any client) or after a certain time period.
166 | '400':
167 | description: There was an error in the processing of the request. Either the bulk
168 | request itself was not correct, or at least of it's part requests.
169 | The whole transaction has been rolled back.
170 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request"
171 | '401':
172 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized"
173 | '403':
174 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
175 | '404':
176 | description: The handleId is not known to the server. This means either it never
177 | came into existence or it was successfully completed a considerable
178 | time in the past.
179 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found"
180 | '500':
181 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error"
182 | /description:
183 | get:
184 | tags:
185 | - Description API
186 | summary: Returns the self-describing information of a network resource
187 | (ServiceDescription)
188 | operationId: GetSelfDescription
189 | x-semanticIds:
190 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
191 | responses:
192 | '200':
193 | description: Requested Description
194 | content:
195 | application/json:
196 | schema:
197 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription"
198 | '403':
199 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden"
200 | default:
201 | $ref: "https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default"
--------------------------------------------------------------------------------
/SubmodelRegistryServiceSpecification/V3.1_SSP-004.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Submodel Registry Service Specification
4 | description: >-
5 | The Query Profile of the Submodel Registry Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-004
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/SubmodelRegistryServiceSpecification/SSP-004
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /query/submodel-descriptors:
22 | post:
23 | tags:
24 | - Submodel Registry API
25 | summary: Returns all Submodel Descriptors that confirm to the input query
26 | operationId: QuerySubmodelDescriptors
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/QuerySubmodelDescriptors/3/1
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | requestBody:
33 | content:
34 | application/json:
35 | schema:
36 | # Note: It is a known problem that SwaggerHub cannot render the oneOf statement in the Query definition.
37 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Query'
38 | responses:
39 | '200':
40 | description: Requested Submodels
41 | content:
42 | application/json:
43 | schema:
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/QueryResultSubmodelDescriptor'
45 | '400':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
47 | '401':
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
49 | '403':
50 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
51 | '500':
52 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
53 | default:
54 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
55 |
56 |
57 | /description:
58 | get:
59 | tags:
60 | - Description API
61 | summary: Returns the self-describing information of a network resource (ServiceDescription)
62 | operationId: GetSelfDescription
63 | x-semanticIds:
64 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
65 | responses:
66 | '200':
67 | description: Requested Description
68 | content:
69 | application/json:
70 | schema:
71 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
72 | '401':
73 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
74 | '403':
75 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
--------------------------------------------------------------------------------
/SubmodelRepositoryServiceSpecification/V3.1_SSP-005.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Submodel Repository Service Specification
4 | description: >-
5 | The Query Profile of the Submodel Repository Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-005
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/SubmodelRepositoryServiceSpecification/SSP-005
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 |
20 | paths:
21 | /query/submodels:
22 | post:
23 | tags:
24 | - Submodel Repository API
25 | summary: Returns all Submodels that confirm to the input query
26 | operationId: QuerySubmodels
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/QuerySubmodels/3/1
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Limit'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Cursor'
32 | requestBody:
33 | content:
34 | application/json:
35 | schema:
36 | # Note: It is a known problem that SwaggerHub cannot render the oneOf statement in the Query definition.
37 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Query'
38 | responses:
39 | '200':
40 | description: Requested Submodels
41 | content:
42 | application/json:
43 | schema:
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/QueryResultSubmodel'
45 | '400':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
47 | '401':
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
49 | '403':
50 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
51 | '500':
52 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
53 | default:
54 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
55 |
56 |
57 | /description:
58 | get:
59 | tags:
60 | - Description API
61 | summary: Returns the self-describing information of a network resource (ServiceDescription)
62 | operationId: GetSelfDescription
63 | x-semanticIds:
64 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
65 | responses:
66 | '200':
67 | description: Requested Description
68 | content:
69 | application/json:
70 | schema:
71 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
72 | '401':
73 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
74 | '403':
75 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
--------------------------------------------------------------------------------
/SubmodelServiceSpecification/V3.1_SSP-003.yaml:
--------------------------------------------------------------------------------
1 | openapi: 3.0.3
2 | info:
3 | title: DotAAS Part 2 | HTTP/REST | Submodel Service Specification
4 | description: >-
5 | The Value Profile of the Submodel Service Specification as part of the [Specification of the Asset Administration Shell: Part 2](https://industrialdigitaltwin.org/en/content-hub/aasspecifications).
6 |
7 | Copyright: Industrial Digital Twin Association (IDTA) 2025
8 | contact:
9 | name: Industrial Digital Twin Association (IDTA)
10 | email: info@idtwin.org
11 | license:
12 | name: CC BY 4.0
13 | url: https://creativecommons.org/licenses/by/4.0/
14 | version: V3.1.0_SSP-003
15 | x-profile-identifier: https://admin-shell.io/aas/API/3/1/SubmodelServiceSpecification/SSP-003
16 | servers:
17 | - url: 'https://admin-shell.io/api/v3/'
18 | - url: 'https://example.com/'
19 | paths:
20 |
21 | /submodel:
22 | get:
23 | tags:
24 | - Submodel API
25 | summary: Returns the Submodel
26 | operationId: GetSubmodel
27 | x-semanticIds:
28 | - https://admin-shell.io/aas/API/GetSubmodel/3/0
29 | parameters:
30 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Level'
31 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Extent'
32 | responses:
33 | '200':
34 | description: Requested Submodel
35 | content:
36 | application/json:
37 | schema:
38 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part1-MetaModel-Schemas/V3.1.0#/components/schemas/Submodel'
39 | '400':
40 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
41 | '401':
42 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
43 | '403':
44 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
45 | '500':
46 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
47 | default:
48 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
49 | /submodel/$value:
50 | get:
51 | tags:
52 | - Submodel API
53 | summary: Returns the Submodel in the ValueOnly representation
54 | operationId: GetSubmodel-ValueOnly
55 | x-semanticIds:
56 | - https://admin-shell.io/aas/API/GetSubmodelById/3/0
57 | parameters:
58 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Level'
59 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/Extent'
60 | responses:
61 | '200':
62 | description: ValueOnly representation of the Submodel
63 | content:
64 | application/json:
65 | schema:
66 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/SubmodelValue'
67 | '400':
68 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
69 | '401':
70 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
71 | '403':
72 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
73 | '500':
74 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
75 | default:
76 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
77 | /submodel/submodel-elements/{idShortPath}/invoke:
78 | parameters:
79 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/IdShortPath'
80 | post:
81 | tags:
82 | - Submodel API
83 | summary: Synchronously invokes an Operation at a specified path
84 | operationId: InvokeOperation
85 | x-semanticIds:
86 | - https://admin-shell.io/aas/API/InvokeOperationSync/3/0
87 | requestBody:
88 | description: Operation request object
89 | content:
90 | application/json:
91 | schema:
92 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/OperationRequest'
93 | required: true
94 | responses:
95 | '200':
96 | description: Operation result object
97 | content:
98 | application/json:
99 | schema:
100 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/OperationResult'
101 | '400':
102 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
103 | '401':
104 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
105 | '403':
106 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
107 | '404':
108 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
109 | '405':
110 | description: Method not allowed - Invoke only valid for Operation submodel element
111 | content:
112 | application/json:
113 | schema:
114 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Result'
115 | '500':
116 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
117 | default:
118 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
119 | /submodel/submodel-elements/{idShortPath}/invoke/$value:
120 | parameters:
121 | - $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/parameters/IdShortPath'
122 | post:
123 | tags:
124 | - Submodel API
125 | summary: Synchronously invokes an Operation at a specified path
126 | operationId: InvokeOperationSync-ValueOnly
127 | x-semanticIds:
128 | - https://admin-shell.io/aas/API/InvokeOperationSync/3/0
129 | requestBody:
130 | description: Operation request object
131 | content:
132 | application/json:
133 | schema:
134 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/OperationRequestValueOnly'
135 | required: true
136 | responses:
137 | '200':
138 | description: Operation result object
139 | content:
140 | application/json:
141 | schema:
142 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/OperationResultValueOnly'
143 | '400':
144 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/bad-request'
145 | '401':
146 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
147 | '403':
148 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
149 | '404':
150 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/not-found'
151 | '405':
152 | description: Method not allowed - Invoke only valid for Operation submodel element
153 | content:
154 | application/json:
155 | schema:
156 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/Result'
157 | '500':
158 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/internal-server-error'
159 | default:
160 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/default'
161 |
162 | /description:
163 | get:
164 | tags:
165 | - Description API
166 | summary: Returns the self-describing information of a network resource (ServiceDescription)
167 | operationId: GetSelfDescription
168 | x-semanticIds:
169 | - https://admin-shell.io/aas/API/GetSelfDescription/3/1
170 | responses:
171 | '200':
172 | description: Requested Description
173 | content:
174 | application/json:
175 | schema:
176 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/schemas/ServiceDescription'
177 | '401':
178 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/unauthorized'
179 | '403':
180 | $ref: 'https://api.swaggerhub.com/domains/Plattform_i40/Part2-API-Schemas/V3.1.0#/components/responses/forbidden'
181 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/antora.yml:
--------------------------------------------------------------------------------
1 | name: IDTA-01002
2 | title: 'Part 2: API'
3 | version: 'v3.1'
4 | start_page: ROOT:index.adoc
5 | nav:
6 | - modules/ROOT/nav.adoc
7 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/aas-api-versioning-url-scheme.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/aas-api-versioning-url-scheme2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/aas-api-versioning-url-scheme2.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/aas-info-exchange-types.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/aas-info-exchange-types.jpg
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/coverpage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/coverpage.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/idta-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/idta-logo.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/plantuml/query-language-overview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/plantuml/query-language-overview.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/plantuml/query-language-overview.puml:
--------------------------------------------------------------------------------
1 | @startuml
2 | !pragma useIntermediatePackages false
3 | skinparam classAttributeIconSize 0
4 |
5 | hide methods
6 |
7 | class Query {
8 | +$select: SelectField[0..1]
9 | +$condition: Condition[1]
10 | }
11 |
12 | Query --> SelectField
13 | Query --> Condition
14 |
15 | ' to better arrange the SelectField
16 | SelectField -r[hidden]- Placeholder1
17 | Placeholder1 -r[hidden]- Condition
18 | hide Placeholder1
19 |
20 | ' to better arrange the elements
21 | Placeholder2 -l[hidden]- Condition
22 | hide Placeholder2
23 |
24 | enum SelectField {
25 | id
26 | }
27 |
28 |
29 | abstract class Condition <>{
30 | }
31 |
32 | enum LogicalOperation {
33 | $and
34 | $or
35 | $not
36 | ' nested
37 | }
38 |
39 | class LogicalExpression {
40 | +operation: LogicalOperation[1]
41 | +operands: Condition[1..*]
42 | }
43 |
44 | class MatchExpression {
45 | +$match: Condition[1..*]
46 | }
47 |
48 | abstract class Operation <> {
49 |
50 | }
51 |
52 | enum ComparisonOperation {
53 | $eq
54 | $ne
55 | $gt
56 | $ge
57 | $lt
58 | $le
59 | }
60 | Operation <|-- ComparisonOperation
61 |
62 | enum StringOperation {
63 | $contains
64 | $starts-with
65 | $ends-with
66 | $regex
67 | }
68 | Operation <|-- StringOperation
69 |
70 | class Comparison {
71 | +operation: Operation[1]
72 | +operands: Operand[2]
73 | }
74 |
75 | enum CastingOperation {
76 | $strCast
77 | $numCast
78 | $hexCast
79 | $boolCast
80 | $dateTimeCast
81 | $timeCast
82 | }
83 |
84 | abstract class Operand <> {
85 |
86 | }
87 |
88 | enum FieldIdentifier {
89 | $strModel
90 | }
91 |
92 | enum Value {
93 | $strVal
94 | $numVal
95 | $hexVal
96 | $dateTimeVal
97 | $timeVal
98 | $dayOfWeek
99 | $dayOfMonth
100 | $month
101 | $year
102 | }
103 |
104 | LogicalExpression -u-|> Condition
105 | LogicalExpression --> Condition
106 | LogicalExpression --> LogicalOperation
107 | Comparison -u-|> Condition
108 | Condition <|-- MatchExpression
109 | Condition <-- MatchExpression
110 | Comparison --> Operation
111 | Comparison --> Operand
112 | Operand <|-- CastingOperation
113 | Operand <|--Value
114 | Operand <|-- FieldIdentifier
115 |
116 | 'for better arrangements of the classes below Condition
117 | LogicalExpression .r[hidden]. Comparison
118 | 'Comparison .r[hidden]. MatchExpression
119 |
120 | 'Operation .r[hidden]. Operand
121 |
122 |
123 |
124 | @enduml
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/private_key_certchain_jwt-method.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/private_key_certchain_jwt-method.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/se-hierarchy.drawio:
--------------------------------------------------------------------------------
1 | 7Vptb9owEP41fGwV5w34CBTaTZtUCU37nCYusebEmWMK7NfPJjYkdligbYgmUqQqOcdn+57Hd+dLBs4s2T7SIIu/kwjigW1F24HzMLDtsTvm/4VgVwj8oVUIVhRFhQgcBUv0B0qhemyNIphXHmSEYIayqjAkaQpDVpEFlJJN9bFXgqujZsEKGoJlGGBT+hNFLC6kI3t4lD9BtIrVyMCXC04C9bBcSR4HEdmURM584MwoIay4SrYziIXtlF2KfosTrYeJUZiyczo8vv54enmehElosWz9FSyHu+md6CDUvAV4LVcsZ8t2ygSUrNMICi3WwJluYsTgMgtC0brhmHNZzBLM7wC/zBklv+CMYEL3vZ25L36HFmVEvvzpK0mZRHwkbhHGdR3lDCFlcHty7eBgUc5ESBLI6I4/Iju4EgNJQqBIuDlCOvSlLC7B6aiOgaTR6qD6aGl+IY19geFBjd19zIedvvCLFduvuxAIM1UQ8X+viWq4y/cGnPAHRtm26CWblZ7l+iUptqUcgKoWMUPRM2ZMbKdJECUovctjiO8R4cvKgyTDcPld9eSiYjLVCXJxadIn2QOa2RPQUBICeLWUMehl8b/F4nNYMqqyxLZMloA6lrRGkrrN2TJJ5hgm3Fzcwpi7U0TSOtYsY0JZoS9PILgReoCxxg+/a344zc4bptFEhEF+l5IUVu1Z9eyaOzZsuVgIa9bavRgWRkYsbbRtyXZejemUjEIcMPRWVV9nTznCM0H7/bDVYFHQjTRIcrKmIZS9ykG0SZGnKWIBXUFmKNrDe1j2+xF3L0KcZDC9AHHec4HEfB6sHv8TivQYoStqGX/PwD+vOu7c4AN3eOxfOZp0C+XsS4oCjFacPw8h1wu5fCrcJ+K58UQ2JCiKxDC1frtKtebsT9zKWavk6CPeenhio5YIN67L+Nry1X5nsfwbyllzFLdvJIo7VpUYjt11FB/2Ufw8L67vaeN0dq4XNxSB63rxUR/Fu8V/3KCoZfzH14sF85QhtjPd/xdOoG3R1boRz+8CDfVR155fTah3/U1b39Hybtd659bXFTnD6259UFf4633/9QjgWg2K2ibAFYt6z5Tzh9a5/0r2n91KBc+zNezdziNAX8I70wG4Ws7m+u91ALoi/cjftgPoa3jdEsADDYraJoBZxCsudRbcaOXuUIPTT+clnrk1PGutdAfM2l0PWLmk5p7IqTsDzCyp5Sxg+2poD5oW9vQwWAKt9pOI1kAzq2IyS73L9t/STMw09pjyyvfQhwT400HG8JX9ZxA7+lsv3zMgvuo7EGAWvi6E+F6+qehxLm9lvS5qd4yzOmZ9FGdvag28hx5u7RSrl7BGXcNt1rQ+APd91jtyDXFfP/q4rSHOb4+fpBYnnuN3vc78Lw==
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/se-hierarchy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/se-hierarchy.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/images/swaggerhub-gen-code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/admin-shell-io/aas-specs-api/e67e5851f3fd2c57795a6bc5db7a13e53cb07c5f/documentation/IDTA-01002-3/modules/ROOT/images/swaggerhub-gen-code.png
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/nav.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | Illustrations:
10 | Plattform Industrie 4.0; Anna Salari, Publik. Agentur für Kommunikation GmbH, designed by Publik. Agentur für Kommunikation GmbH
11 | ////
12 |
13 | :doctype: book
14 | :toc: left
15 | :toc-title: Specification of the Asset Administration Shell. Part 2: Application Programming Interfaces
16 | :toclevels: 4
17 | :sectlinks:
18 | :sectnums:
19 | :imagesdir: ./images/
20 | :nofooter:
21 | :xrefstyle: short
22 |
23 |
24 |
25 | = image:idta-logo.png[width=100%]
26 |
27 | :author: IDTA
28 | :version-label: Number
29 | :revnumber: 01002-3-1
30 | :revdate: December 2023 (TBD)(
31 | :revremark: Specification of the Asset Administration Shell
32 | :releasetag: 2024-1 (TBD)
33 |
34 | ////
35 |
36 | Shared .adoc file are used from https://github.com/admin-shell-io/aas-specs-metamodel
37 |
38 | ////
39 | ////
40 | * xref:index.adoc[Editorial Notes]
41 | ////
42 |
43 | * xref:terms-definitions-and-abbreviations.adoc[Terms and Definitions]
44 |
45 | * xref:preamble.adoc[Preamble]
46 |
47 | * xref:introduction.adoc[Introduction]
48 |
49 | * xref:general.adoc[General]
50 |
51 | * xref:query-language.adoc[Query Language]
52 |
53 | * API Specification
54 |
55 | ** xref:specification/interfaces.adoc[API Interfaces]
56 |
57 | ** xref:specification/interfaces-payload.adoc[Data Types for Payload]
58 |
59 | ** xref:specification/interfaces-operation-parameters.adoc[Basic Operation Parameters]
60 |
61 | * HTTP/REST API
62 |
63 | ** xref:http-rest-api/http-rest-api.adoc[HTTP/REST API]
64 |
65 | ** xref:http-rest-api/service-specifications-and-profiles.adoc[Service Profiles]
66 |
67 | ** xref:http-rest-api/interactions.adoc[Interactions]
68 |
69 | ** xref:http-rest-api/api-code-generation.adoc[API Code Generation]
70 |
71 | * xref:summary-and-outlook.adoc[Summary and Outlook]
72 |
73 | * Annex
74 |
75 | ** xref:annex/serialization-modifier-examples.adoc[SerializationModifier Examples]
76 |
77 | ** xref:annex/backus-naur-form.adoc[Backus Naur Form]
78 |
79 | ** xref:annex/uml-templates.adoc[Class Table Templates]
80 |
81 | ** xref:annex/api-tables-templates.adoc[API Table Templates]
82 |
83 | ** xref:annex/handling-constraints.adoc[Handling Constraints]
84 |
85 | ** xref:annex/overview-constraints.adoc[Overview Constraints]
86 |
87 | ** xref:annex/uml.adoc[UML]
88 |
89 | * xref:changelog.adoc[Change Log]
90 |
91 | * xref:bibliography.adoc[Bibliography]
92 |
93 |
94 |
95 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/annex/api-tables-templates.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 | [appendix]
12 | == Templates for Specification of APIs and API Operations
13 |
14 | This Annex explains the table templates used for documentation of interfaces, operations, data types, etc.
15 |
16 | _Card._ is the cardinality (or multiplicity) defining the lower and upper bound of the number of instances of the member element. "*" denotes an arbitrary infinite number of elements of the corresponding Type. "0..1" means optional. "0..*" or "0..3" etc. means that the list may be either not available (null object) or empty or has infinitely many / exactly three elements.
17 |
18 | ====
19 | Note: attributes having a default value are always considered to be optional; there is always a value for the attribute because the default value is used for initialization in this case.
20 | ====
21 |
22 | .Interface Description
23 | [%autowidth,width="100%",cols="19%,81%",options="header",]
24 | |===
25 | 2+h|Interface:
26 | h|Operation Name h|Description
27 | e|Oper1 a|
28 | Human-understandable description of the operation of the interface.
29 | Only major input and output information shall be described, no individual request and result parameters.
30 |
31 |
32 | ====
33 | Note: all words in the service operation name are written together in italics without a blank in between.
34 | The first letter of the first word is lower case, all other words are upper case.
35 | ====
36 |
37 |
38 | e|… a|
39 | e|operN (optional) a|
40 | Human-understandable description of the operation n of the interface.
41 | Optional operations are to be marked by suffix (optional) after the operation name.
42 | |===
43 |
44 | [.table-with-appendix-table]
45 | .Operation Description
46 | :table-caption: Template
47 | [cols="25%,30%,25%,10%,10%"]
48 | |===
49 | h|Operation Name: 4+e|Name of the operation: all individual words in the operation name are capitalized
50 | h|Explanation: 4+a|
51 | Human-understandable description of the functionality
52 |
53 | The operation provides its functionality through the following input and output parameters:
54 |
55 | • Input parameter 1: human-understandable description of the purpose of the input parameter 1
56 |
57 | • …
58 |
59 | • Input parameter N: human-understandable description of the purpose of input parameter N
60 |
61 | • Output parameter 1: human-understandable description of the purpose of output parameter 1: human-understandable description of the purpose of the input parameter 1
62 |
63 | • …
64 |
65 | • Output Parameter N: human-understandable description of the purpose of output parameter N:
66 |
67 | If *_payload_* is mentioned as output parameter, only the returned payload in case of a successful operation (status code: Success, SuccessCreated) is denoted in column _Type_.
68 | In case of failure see xref:specification/interfaces-payload.adoc#StatusCode[Generic Status Codes].
69 | // Previously pointing to Clause 12.10
70 | If [.underline]#no# *_payload_* is mentioned as output parameter, the status code shall be SuccessNoContent in case of success, otherwise see xref:bibliography.adoc#bib1[[1]].
71 |
72 | Convention: all words in the interface name are written together in italics without a blank in between.
73 | The first letter of the first word and all other words are written in upper case letters.
74 |
75 | h|semanticId 4+|`The unique identifier of this operation`
76 |
77 | h|Name h|Description h|Mand. h|Type h|Card.
78 |
79 | 5+h|Input Parameter
80 |
81 | e|inputParameter1 a|Human-understandable description of the input parameter 1 of the operation. |States whether the inputParameter1 is mandatory (“yes”) or optional (“no”) |Type of the input parameter 1 |The cardinality of type of the inputParameter1, e.g. zero-to-one (“0..1”) or at-least-one (“1..*”).
82 | e|… | | | |
83 | e|inputParameterN |Human-understandable description of the input parameter N of the operation. |States whether the inputParameterN is mandatory (“yes”) or optional (“no”) |Type of the input parameter N |The cardinality of type of the inputParameterN, e.g. zero-to-one (“0..1”) or at-least-one (“1..*”).
84 |
85 | 5+h|Output Parameter
86 |
87 | e|outputParameter1 |Human-understandable description of the output parameter 1 of the operation. |States whether the outputParameter1 is mandatory (“yes”) or optional (“no”) a|
88 | Type of the output
89 |
90 | parameter 1
91 |
92 | |The cardinality of type of the outputParameter1, e.g. zero-to-one (“0..1”) or at-least-one (“1..*”).
93 | e|… | | | |
94 | e|outputParameterN a|Human-understandable description of the output parameter N of the operation. |States whether the outputParameterN is mandatory (“yes”) or optional (“no”) |Type of the output eparameter N a|The cardinality of type of the outputParameterN, e.g. zero-to-one (“0..1”) or at-least-one (“1..*”).
95 | |===
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/annex/backus-naur-form.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 |
12 | [appendix]
13 | = Backus-Naur-Form
14 |
15 | The Backus-Naur form (BNF) – a meta-syntax notation for context-free grammars – is used to define grammars.
16 | For more information see https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form[Wikipedia].
17 |
18 | A BNF specification is a set of derivation rules, written as
19 |
20 | [listing]
21 | ....
22 | ::= __expression__
23 | ....
24 |
25 | where:
26 |
27 | * is a https://en.wikipedia.org/wiki/Nonterminal[nonterminal] (variable) and the https://en.wikipedia.org/wiki/Expression_(mathematics)[__expression__] consists of one or more sequences of either terminal or nonterminal symbols,
28 | * ::= means that the symbol on the left must be replaced with the expression on the right,
29 | * more sequences of symbols are separated by the https://en.wikipedia.org/wiki/Vertical_bar[vertical bar] "|", indicating a https://en.wikipedia.org/wiki/Alternation_(formal_language_theory)[choice], the whole being a possible substitution for the symbol on the left,
30 | * symbols that never appear on a left side are https://en.wikipedia.org/wiki/Terminal_symbol[terminals], while symbols that appear on a left side are https://en.wikipedia.org/wiki/Nonterminal_symbol[non-terminals] and are always enclosed between the pair of angle brackets <>,
31 | * terminals are enclosed with quotation marks: "text". "" is an empty string,
32 | * optional items are enclosed in square brackets: [], or suffixed with an additional (questionmark) symbol, ?, such as ?,
33 | * items existing 0 or more times are enclosed in curly brackets are suffixed with an asterisk (\*) such as ::= {}*,
34 | * items existing 1 or more times are suffixed with an addition (plus) symbol, \+, such as ::= {}+,
35 | * round brackets are used to explicitly define the order of expansion to indicate precedence, example: ( | ) ,
36 | * text without quotation marks is an informal explanation of what is expected; this text is cursive if grammar is non-recursive and vice versa.
37 |
38 | [.underline]#Example:#
39 |
40 | [example]
41 | ....
42 |
43 | ::= "e-mail addresses:"
44 |
45 | ::= {}*
46 |
47 | ::= "@"
48 |
49 | ::= characters
50 |
51 | ::= characters conformant to local-part in RFC 5322
52 |
53 | ::= characters conformant to domain in RFC 5322
54 | ....
55 |
56 | Valid contact addresses:
57 |
58 | [example]
59 | ....
60 | Hugo Me e-mail addresses: Hugo@example.com
61 |
62 | Hugo e-mail addresses: Hugo.Me@text.de
63 | ....
64 |
65 | Invalid contact addresses:
66 |
67 | [example]
68 | ....
69 | Hugo
70 |
71 | Hugo Hugo@ example.com
72 |
73 | Hugo@example.com
74 | ....
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/annex/handling-constraints.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | Illustrations:
10 | Plattform Industrie 4.0; Anna Salari, Publik. Agentur für Kommunikation GmbH, designed by Publik. Agentur für Kommunikation GmbH
11 | ////
12 |
13 | [[annex-handling-of-constraints]]
14 | = Handling of Constraints
15 |
16 | Constraints are prefixed with *AASa-* followed by a three-digit number.
17 | The "a" in "AASa-" was motivated by "API".
18 | The numbering of constraints is unique within namespace AASa; a number of a constraint that was removed will not be used again.
19 |
20 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/annex/overview-constraints.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 |
12 | [appendix]
13 | = Overview Constraints (non-normative)
14 | include::../includes/constraints.adoc[]
15 |
16 |
17 | This annex gives an overview of the constraints contained in this document. No additional comments are added, for details please refer to the normative parts of the specification.
18 |
19 | For handling of constraints see xref:annex/handling-constraints.adoc[].
20 |
21 | [[constraint-AASa-001]]
22 | {aasa001}
23 |
24 | [[constraint-AASd-002]]
25 | {aasa002}
26 |
27 | [[constraint-AASd-003]]
28 | {aasa003}
29 |
30 | [[constraint-AASd-004]]
31 | {aasa004}
32 |
33 | [[constraint-AASd-005]]
34 | {aasa005}
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/annex/uml-templates.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | Illustrations:
10 | Plattform Industrie 4.0; Anna Salari, Publik. Agentur für Kommunikation GmbH, designed by Publik. Agentur für Kommunikation GmbH
11 | ////
12 |
13 |
14 | [appendix]
15 | = Templates for UML Tables
16 |
17 | == General
18 |
19 | The templates used for element specification are explained in this annex.
20 | For details for the semantics see Legend for UML Modelling.
21 |
22 | For capitalization of titles, rules according to https://capitalizemytitle.com/ are used.
23 |
24 | == Template for Classes
25 |
26 | [.table-with-appendix-table]
27 | .Class
28 | :table-caption: Template
29 | [cols="25%,40%,25%,10%"]
30 | |===
31 | h|Class: 3+e| ["\<>"] ["\<>"] ["\<>"] ["\<>"]
32 | h|Explanation: 3+a|
33 | h|Inherits from: 3+|{ ";" }+ \| "-"
34 | h|ID: 3+| ``
35 |
36 | .2+h|Attribute 3+h| ID
37 | h|Explanation h|Type h|Card.
38 |
39 | .2+e|__ ["\<>"] ["\<>"] ["\<>"] 3+| ``
40 | a| | |
41 | |===
42 |
43 | _ID_ is the metamodel ID of the class or attribute, conformant to the grammar defined in xref:bibliography.adoc#bib1[[1]]. A metamodel ID for a class attribute is concatenated by _/_.
44 |
45 | The following stereotypes can be used:
46 |
47 | * \<>: Class cannot be instantiated but serves as superclass for inheriting classes
48 | * \<>: Class is experimental, i.e. usage is only recommended for experimental purposes because non-backward compatible changes may occur in future versions
49 | * \<>: Class is deprecated, i.e. it is recommended to not use the element any longer; it will be removed in a next major version of the model
50 | * \<>: Class is a template only, i.e. class is not instantiated but used for additional specification purposes (for details see parts 3 of document series)
51 |
52 | The following kinds of _Types_ are distinguished:
53 |
54 | ** _:_ Type is an object type (class); it is realized as composite aggregation (composition), and does not exist independent of its parent
55 | ** _ModelReference<\{Referable}>:_ Type is a Reference with _Reference/type=ModelReference_ and is called model reference; the \{Referable} is to be substituted by any referable element (including _Referable_ itself for the most generic case) – the element that is referred to is denoted in the __Key/type__=<\{Referable}> for the last _Key_ in the model reference; for the graphical representation see xref:annex/uml.adoc#image-82-shared-aggregation[Figure in Legend for UML Modelling]; for more information on referencing see xref:bibliography.adoc#bib1[[1]].
56 | ** _: Type_ Type is no object type (class) but a data type; it is just a value, see xref:bibliography.adoc#bib1[[1]].
57 | ** _:_ Type is an enumeration
58 |
59 | _Card._ is the cardinality (or multiplicity) defining the lower and upper bound of the number of instances of the member element. "\*" denotes an arbitrary infinite number of elements of the corresponding Type. "0..1" means optional. "0..*" or "0..3" etc. means that the list may be either not available (null object) or empty.
60 |
61 | ====
62 | Note 1: attributes having a default value are always considered to be optional; there is always a value for the attribute because the default value is used for initialization in this case.
63 | ====
64 |
65 | ====
66 | Note 2: attributes or attribute elements with data type “string” or “langString” are considered to consist of at least one character.
67 | ====
68 |
69 | ====
70 | Note 3: optional lists, i.e. attributes with cardinality > 1 and minimum 0, are considered to consist of at least one element.
71 | ====
72 |
73 | [.underline]#Examples for valid and invalid model references#
74 |
75 | If class type equal to "ModelReference", the following reference would be a valid reference (using the text serialization as defined in xref:bibliography.adoc#bib1[[1]]):
76 |
77 | [listing]
78 | ....
79 | (Submodel)\https://example.com/aas/1/1/1234859590
80 | ....
81 |
82 | This would be an invalid reference for "ModelReference" because it references a submodel element "Property":
83 |
84 | [listing]
85 | ....
86 | (Submodel)https://example.com/aas/1/1/1234859590, (Property)temperature
87 | ....
88 |
89 | If class type equal to "ModelReference", the following references would be valid references (using the text serialization as defined in xref:bibliography.adoc#bib1[[1]]) because "Property" and "File" are Referables and "Submodel" itself is also Referable since all Identifiables are referable:
90 |
91 | [listing]
92 | ....
93 | (Submodel)\https://example.com/aas/1/1/1234859590
94 |
95 | (Submodel)\https://example.com/aas/1/1/1234859590, (Property)temperature
96 |
97 | (Submodel)\https://example.com/aas/1/1/1234859590, (File)myDocument
98 | ....
99 |
100 | This would be an invalid reference for "ModelReference" because FragmentReference is no Referable:
101 |
102 | [listing]
103 | ....
104 | (Submodel)\https://example.com/aas/1/1/1234859590, (File)myDocument (FragmentReference)Hints
105 | ....
106 |
107 | == Template for Enumerations
108 |
109 | [.table-with-appendix-table]
110 | .Enumeration
111 | :table-caption: Template
112 | [cols="30%h,70%"]
113 | |===
114 | h|Enumeration: | ["\<>"] ["\<>"]
115 | h|Explanation: |
116 | h|Set of: |{ ";" }+ \| "-"
117 | h|ID: | ``
118 |
119 | h|Literal h|Explanation
120 |
121 | .2+e|enumValue1>["\<>"] ["\<>"] | ``
122 | a|
123 |
124 |
125 |
126 |
127 | .2+e| ["\<>"] ["\<>"] | ``
128 | a|
129 |
130 |
131 |
132 | |===
133 |
134 | "*Set of:*" lists enumerations that are contained in the enumeration.
135 | It is only relevant for validation, making sure that all elements relevant for the enumeration are considered.
136 |
137 | "*Literal*" lists values of enumeration.
138 | All values that are element of one of the enumeration listed in "*Set of:*" are listed explicitly as well.
139 |
140 | Enumeration values use Camel Case notation and start with a small letter.
141 | However, there might be exceptions in case of very well-known enumeration values.
142 |
143 | == Template for Primitives
144 |
145 | .Primitives
146 | :table-caption: Template
147 | [cols="13%,30%,57%"]
148 | |===
149 |
150 | .2+h|Primitive 2+h| ID
151 | h|Definition h|Value Examples
152 |
153 | .2+e| 2+| ``
154 | a|
155 |
156 |
157 |
158 |
159 | a|
160 |
161 | |===
162 |
163 |
164 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/bibliography.adoc:
--------------------------------------------------------------------------------
1 | [bibliography]
2 | == Bibliography
3 |
4 | [#bib1]
5 | [1] IDTA-01001-3-1. Specification of the Asset Administration Shell.
6 | Part 1: Metamodel.
7 | Industrial Digital Twin Association (IDTA).
8 | Online.
9 | Available: https://industrialdigitaltwin.org/en/content-hub/aasspecifications
10 |
11 | [#bib2]
12 | [2] IDTA-01003-a-3-1. Specification of the Asset Administration Shell.
13 | Part 3a: Data Specification – IEC 61360. Industrial Digital Twin Association (IDTA).
14 | Online.
15 | Available: https://industrialdigitaltwin.org/en/content-hub/aasspecifications
16 |
17 | [#bib3]
18 | [3] IDTA-01004-3-1. Specification of the Asset Administration Shell.
19 | Part 4: Security. Industrial Digital Twin Association (IDTA).
20 | Online.
21 | Available: https://industrialdigitaltwin.org/en/content-hub/aasspecifications
22 |
23 | [#bib4]
24 | [4] IDTA-01005-3-1. Specification of the Asset Administration Shell.
25 | Part 5: Package File Format.
26 | Industrial Digital Twin Association (IDTA).
27 | Online.
28 | Available: https://industrialdigitaltwin.org/en/content-hub/aasspecifications
29 |
30 | [#bib5]
31 | [5] RFC 8820: URI Design and Ownership.
32 | Internet Engineering Task Force (IETF), 2020. Online.
33 | Available: https://tools.ietf.org/html/rfc8820
34 |
35 | [#bib6]
36 | [6] DIN EN IEC 61406-1: "Identification Link - Part 1: General requirements (IEC 61406-1:2022)".
37 | December 2023. Online.
38 | Available: https://www.dinmedia.de/en/standard/din-en-iec-61406-1/372053652
39 |
40 | [#bib7]
41 | [7] Decentralized Identifiers (DIDs) v1.0. Edited by Manu Sporny, Amy Guy, Markus Sabadello, and Drummond Reed.
42 | W3C Recommendation.
43 | Online.
44 | Available: https://www.w3.org/TR/did-core/
45 |
46 | [#bib8]
47 | [8] OData Version 4.01 Part 1: Protocol.
48 | Edited by Michael Pizzo, Ralf Handl, and Martin Zurmuehl.
49 | OASIS Standard.
50 | Online.
51 | Available: https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html
52 |
53 | [#bib9]
54 | [9] Tom Preston-Werner.
55 | Semantic Versioning.
56 | Version 2.0.0. Online.
57 | Available: https://semver.org/spec/v2.0.0.html
58 |
59 | [#bib10]
60 | [10] "OMG Unified Modelling Language (OMG UML)".
61 | Formal/2017-12-05.
62 | Version 2.5.1.
63 | December 2018.
64 | Online.
65 | Available: https://www.omg.org/spec/UML/
66 |
67 | [#bib11]
68 | [11] "RQL: A resource query language for REST".
69 | Ariel Mashraki
70 | Version 1.3.0.
71 | March 2021.
72 | Online.
73 | Available: https://github.com/a8m/rql
74 |
75 | [#bib12]
76 | [12] "SPARQL 1.1 Query Language".
77 | W3C Recommendation.
78 | Edited by Steve Harris and Andy Seaborne
79 | March 2013.
80 | Online.
81 | Available: https://www.w3.org/TR/sparql11-query/
82 |
83 | [#bib13]
84 | [13] ISO/IEC 39075:2024. Information technology — Database languages — GQL.
85 | ISO/IEC.
86 | 2024.
87 | Online.
88 | Available: https://www.iso.org/standard/76120.html
89 |
90 | [#bib14]
91 | [14] "JSONPath - XPath for JSON".
92 | Stefan Gössner
93 | 2007.
94 | Online.
95 | Available: http://goessner.net/articles/JsonPath/
96 |
97 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/http-rest-api/api-code-generation.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 | ////
12 | Copyright (c) 2023 Industrial Digital Twin Association
13 |
14 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
15 | https://creativecommons.org/licenses/by/4.0/).
16 |
17 | SPDX-License-Identifier: CC-BY-4.0
18 |
19 | ////
20 |
21 |
22 | = API Code Generation
23 |
24 | SwaggerHub includes the possibility to generate code from an API, e.g. for C# .NET:
25 |
26 | image:swaggerhub-gen-code.png[width=203,height=110]
27 |
28 | API code can be created for both servers and clients in various programming languages.
29 |
30 | Known issues include the following:
31 |
32 | * When generating the aspnetcore server stub for the AssetAdministrationShellEnvironmentApi, the operation PutFileByPath is not generated automatically and must be added manually.
33 | * When generating the aspnetcore server stub for the AasxFileServerInterfaceApi, the operations PostAASXPackage and PutAASXByPackageId are not generated automatically and must be added manually.
34 |
35 | The SwaggerHub code generator development team is not part of the AAS activities and has been informed about these issues.
36 |
37 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/http-rest-api/interactions.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 |
12 | = Interactions
13 |
14 | Interactions describe the sequence of calls of operations by a client application to achieve a defined goal in a use case.
15 | In the following, exemplary interaction sequences are depicted.
16 |
17 | Currently, only the key use case "Access a submodel in a distributed system" with focus on a completely decentralized Industry 4.0 system or dataspace is described.
18 |
19 | Some constraints and assumptions are made according to the configuration and qualities of the system.
20 |
21 | Constraints and assumptions for calling an AAS and a submodel operation by a client application:
22 |
23 | * The calling application has to be aware that endpoints may change at any time.
24 | If the application has cached an endpoint that is no longer vivid, the application needs to start the interaction to resolve the appropriate endpoint again from the beginning.
25 | * Several ways are possible to get to know the endpoints for the infrastructure interfaces of AAS Discovery and/or Registries before calling the APIs. Some examples:
26 | - A discovery service for dataspace connectors as well as endpoints for AAS services can be found as part of the registered applications on a connector, as e.g. specified in the Catena-X dataspace.
27 | - The endpoints can be configured in the application during start or dynamically at runtime by a user.
28 | * The asset IDs (either the global asset ID or some specific asset IDs) are known to the calling application.
29 | * Access to any API is allowed only if the caller is authenticated.
30 | * Response to any API call takes access rules as defined for the services into account, e.g. access rules for the AASs, the Submodels, or SubmodelElements within a Submodel.
31 |
32 | An interaction typically starts with a client application using the discovery service to get the IDs of the AAS representing the asset under consideration.
33 | In the second step the AAS Registry is called to get the relevant endpoints for the AASs found.
34 | The AAS Registry provides the AAS Descriptor object belonging to this AAS ID (and thus the asset ID used for discovery) and containing the Submodel Descriptors of the Submodels, which are part of the related AAS.
35 |
36 | As explained in Clause xref:specification/interfaces-payload.adoc#descriptor[Descriptor], there are two ways of using the AssetAdministrationShellDescriptor when registering an Asset Administration Shell:
37 |
38 | 1. Either add the endpoint of the Asset Administration Shell (usage by client see <>)
39 |
40 | 2. Or add the endpoints of its Submodels (usage by client see <>)
41 |
42 | There is also a third way to combine both.
43 | In this case the endpoint of the Asset Administration Shell and the information that can be retrieved at this endpoint is the master and a separate Submodel Registry would provide the Submodel endpoints as single source of truth.
44 |
45 | ====
46 | Note: It is not recommended to combine the two approaches in one and the same AAS Registry.
47 | An AAS Registry either should always contain the AAS Endpoint or the AAS Endpoint should always be omitted and Submodel endpoints shall be added.
48 | ====
49 |
50 | In the second case, the lookup of the Submodel IDs and the Submodel endpoints can be skipped (compare <> and <> ).
51 | No separate AAS Service or Submodel Registry Service needs to be offered to the Client.
52 | From the point of view of a data provider the Submodel Registry interfaces are still needed to add new SubmodelDescriptors to an existing AssetAdministrationShellDescriptor.
53 |
54 | .Interaction for Client Application using Submodel Endpoints
55 | [[fig:seq-sm-endpoints]]
56 | [plantuml, seq-aas-endpoints, svg]
57 | ....
58 | include::partial$diagrams/seq-sm-endpoints.puml[]
59 | ....
60 |
61 | For accessing Submodels there are two different ways to do so:
62 |
63 | 1. Access a Submodel via an AAS or Submodel Server
64 |
65 | 2. Access a Submodel via a standardized Repository, either AAS or Submodel Repository
66 |
67 | In the sequence shown in <>, the first submodel is get via an AAS or Submodel interface whereas the second submodel is get via an AAS or Submodel Repository Service.
68 |
69 | ====
70 | Note: The client application just uses the endpoint as provided in the Registry.
71 | Thus, for the client there is no difference in the interaction with a pure submodel server or a submodel repository server.
72 | ====
73 |
74 | <> shows a sequence with a Registry providing AAS endpoints.
75 | In this case the client needs to look up the corresponding submodel IDs in an AAS or AAS Repository Service first.
76 | After looking up the relevant submodel IDs the client calls the Submodel Registry to get the Submodel Descriptors containing the endpoints of the submodels.
77 |
78 | ====
79 | Note: If the AAS or AAS Repository Service is used to get the submodel IDs it is recommended that the data provider adds a link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/spec-metamodel/referencing.html#Reference[referredSemanticId] to the references of the submodels.
80 | Otherwise, it is not possible for the client to decide which of the submodels is relevant.
81 | This is typically done via the semanticId of the submodel.
82 | ====
83 |
84 | .Interaction for Client Application using AAS Endpoints and Repositories
85 | [[fig:seq-aas-endpoints]]
86 | [plantuml, seq-aas-endpoints, svg]
87 | ....
88 | include::partial$diagrams/seq-aas-endpoints.puml[]
89 | ....
90 |
91 | The difference between Interface and API Operations is outlined in <>.
92 | This sequence translates the interaction on the interface level of <>, which is protocol-independent and therefore can be implemented in several different manners, to the specific HTTP API Operations.
93 | The generic operations are replaced with HTTP requests, e.g. "GetSubmodelById" can be realized by either "GET /shells//submodels/" within an AAS Repository or "GET /submodels/" within a Submodel Repository.
94 | The returned objects are shortened for better readability.
95 |
96 | .Interaction for Client Application using Submodel Endpoints (for HTTP API Operations)
97 | [[fig:seq-sm-endpoints-http]]
98 | [plantuml, seq-aas-endpoints, svg]
99 | ....
100 | include::partial$diagrams/seq-sm-endpoints-http.puml[]
101 | ....
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/http-rest-api/test/query/test1.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "../../query-json-schema.json",
3 | "select": "id",
4 | "filter": {
5 | "$and":[
6 | {
7 | "$eq": [
8 | {
9 | "strModel": "$sm.semanticId.keys.value"
10 | },
11 | {
12 | "strVal": "https://example.org/value"
13 | }
14 | ]
15 | },
16 | {}
17 | ]
18 | },
19 | "option": {
20 | "sort": {
21 | "id": "asc"
22 | },
23 | "limit": 10,
24 | "offset": 0
25 | }
26 | }
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/includes/constraints.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 | ////
9 |
10 | // Constraints
11 |
12 |
13 | :aasa001: pass:q[[underline]#Constraint AASa-001:# The value of the xref:http-rest-api/http-rest-api.adoc#pagination[cursor] query parameter must not be empty. If the client does not know the cursor value, it must omit the whole query parameter in the request.]
14 |
15 | :aasa002: pass:q[[underline]#Constraint AASa-002#: The base64url-encoded identifier of the link: https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/spec-metamodel/common.html#has-semantics-attributes[semanticId] shall have a length of maximum 3072 characters.]
16 |
17 | :aasa003: pass:q[[underline]#Constraint AASa-003#: A service implementing the link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01002/v3.1/http-rest-api/service-specifications-and-profiles.html#submodel-repositoryservice-specification-SSP-003[SubmodelRepositoryServiceSpecification/SSP-003] must not accept or provide any _Submodel_ with the attribute link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/spec-metamodel/common.html#ModellingKind[kind="Instance"].
18 |
19 | :aasa004: pass:q[[underline]#Constraint AASa-004#: A service implementing the link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01002/v3.1/http-rest-api/service-specifications-and-profiles.html#_submodel_repository_template_read_profile[SubmodelRepositoryServiceSpecification/SSP-004] must not accept or provide any _Submodel_ with the attribute link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/spec-metamodel/common.html#ModellingKind[kind="Instance"].]
20 |
21 | :aasa005: pass:q[[underline]#Constraint AASa-005:# Only the _SubmodelElements_ root delaration can be followed with link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#_format_path_idshortpath_serialization_in_json[IdShortPaths].]
22 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/includes/special-parameters.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 | ////
9 |
10 | // Special Parameters
11 |
12 |
13 | :path: idShortPath via relative Reference/Keys to a submodel element
14 | :OperationHandle: The returned handle of an operation’s asynchronous invocation used to request the current state of the operation’s execution
15 | :OperationResult: The returned result of an operation’s invocation
16 | :SerializationModifier: Defines the format of the input or the output of an operation
17 | :SerializationFormat: Determines the format of serialization, i.e. JSON, XML, RDF, AML, etc.
18 | :ShellDescriptor: Object containing the Asset Administration Shell’s identification and endpoint information
19 | :SubmodelDescriptor: Object containing the Submodel’s identification and endpoint information
20 | :SpecificAssetId: The name of the specific asset identifier or the predefined name “_globalAssetId_” that would refer to the _AssetInformation/globalAssetId_
21 | :SemanticId: Identifier of the semantic definition
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/index.adoc:
--------------------------------------------------------------------------------
1 | = Part 2: Application Programming Interfaces (IDTA-01002-3-1)
2 |
3 | *Specification of the Asset Administration Shell*
4 |
5 | ====
6 | This specification is part of the https://industrialdigitaltwin.org/en/content-hub/aasspecifications[Asset Administration Shell Specification series].
7 | ====
8 |
9 | == Version
10 |
11 | This is version 3.1 of the specification IDTA-01002.
12 |
13 | Previous version: 3.0.3
14 |
15 | [#metamodel-versions]
16 | == Metamodel Versions
17 |
18 | This document (version 3.1) uses the following parts of the “Specification of the Asset Administration Shell” series:
19 |
20 | * IDTA-01001 Part 1: Metamodel in version 3.1 xref:bibliography.adoc#bib1[[1\]]
21 | * IDTA-01003-a Part 3a: Data Specification – IEC 61360 in version 3.1 xref:bibliography.adoc#bib2[[2\]]
22 | * IDTA-01004 Part 4: Security in version 3.1 xref:bibliography.adoc#bib3[[3\]]
23 | * IDTA-01005 Part 5: Package File Format (AASX) in version 3.1 xref:bibliography.adoc#bib4[[4\]]
24 |
25 | == Notice
26 |
27 | Copyright: Industrial Digital Twin Association e.V. (IDTA)
28 |
29 | IDTA Document Number: IDTA-01002-3-1
30 |
31 | DOI: https://doi.org/10.62628/IDTA.01002-3-1
32 |
33 | This work is licensed under a
34 | https://creativecommons.org/licenses/by/4.0/[Creative Commons Attribution 4.0 International License].
35 |
36 | SPDX-License-Identifier: CC-BY-4.0
37 |
38 | May 2025
39 |
40 | == How to Get in Contact
41 |
42 | Contact: https://industrialdigitaltwin.org/en/contact[IDTA]
43 |
44 | Sources: https://github.com/admin-shell-io/aas-specs-api[GitHub]
45 |
46 | Feedback:
47 |
48 | * https://github.com/admin-shell-io/aas-specs-api/issues/new/choose[New issues, bugs]
49 |
50 | * https://github.com/admin-shell-io/questions-and-answers[Questions and Answers]
51 |
52 | [[editorial-notes]]
53 | == Editorial Notes
54 |
55 | === History
56 |
57 | This document (version 3.1) was produced by the Work Stream "Specification of the Asset Administration Shell" of the Working Group "Open Technology" of the https://industrialdigitaltwin.org/[Industrial Digital Twin Association (IDTA)].
58 | It is the first version published as html document and maintained completely open source.
59 |
60 | Version 3.0, the first release of the API, was finalized from November 2021 to May 2023 by the joint sub working group "Asset Administration Shell" of the working group "Reference Architectures, Standards and Norms" of the Plattform Industrie 4.0 and the working group "Open Technology" of the Industrial Digital Twin Association (IDTA).
61 |
62 | Earlier versions of this document were release candidates and used the version 1.0.
63 | It has been decided in the meantime that this first release will start with version 3.0, in line with the related release of the metamodel.
64 |
65 | Version 1.0 RC02 of this document was developed from November 2020 to November 2021 by the joint working groups “Asset Administration Shell” and “Infrastructure of the Asset Administration Shell” of the Plattform Industrie 4.0 working group “Reference Architectures, Standards and Norms“.
66 |
67 | Version 1.0 RC01 of this document was developed from December 2019 to November 2020 by the sub working groups “Asset Administration Shell” and “Infrastructure of the Asset Administration Shell” of the Plattform Industrie 4.0 working group “Reference Architectures, Standards and Norms“.
68 |
69 | This document is Part 2 of the document series “Specification of the Asset Administration Shell”.
70 |
71 |
72 | include::./shared/versioning.adoc[]
73 |
74 | include::./shared/conformance.adoc[]
75 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/introduction.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 | = Introduction
12 |
13 | This document defines APIs for enabling the access to the information provided by an Asset Administration Shell.
14 | The underlying information model is as defined in xref:bibliography.adoc#bib1[[1\]].
15 |
16 | Since an API can be specified in different technologies like HTTP/REST, MQTT and OPC UA, the specification offers a technology-neutral specification of the interfaces.
17 |
18 | While Part 5 of the specification series of the Asset Administration Shell xref:bibliography.adoc#bib4[[4\]] mainly considered file exchange, this specification focuses on the API that allows online access to information provided by the AAS (see <>).
19 |
20 | .Types of Information Exchange via Asset Administration Shells
21 | [[aas-info-exchange-types]]
22 | image::aas-info-exchange-types.jpg[]
23 |
24 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/preamble.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 | = Preamble
12 |
13 | == Scope of this Document
14 |
15 | This document specifies the interfaces as well as the APIs in selected technologies for the Asset Administration Shells and its submodels.
16 |
17 | == Structure of the Document
18 |
19 | xref:introduction.adoc[] gives an introduction to the topic.
20 |
21 | General topics are discussed in xref:general.adoc[].
22 |
23 | The query language is sepcified in xref:query-language.adoc[].
24 |
25 | The technology-neutral specification of the interfaces of the Asset Administration Shell can be found in Clauses:
26 |
27 | ** xref:specification/interfaces.adoc[API Interfaces]
28 |
29 | ** xref:specification/interfaces-payload.adoc[Data Types for Payload]
30 |
31 | ** xref:specification/interfaces-operation-parameters.adoc[Basic Operation Parameters]
32 |
33 | Following Clauses define the API specification for HTTP/REST:
34 |
35 | ** xref:http-rest-api/http-rest-api.adoc[HTTP/REST API]
36 |
37 | ** xref:http-rest-api/service-specifications-and-profiles.adoc[Service Profiles]
38 |
39 | ** xref:http-rest-api/interactions.adoc[Interactions]
40 |
41 | ** xref:http-rest-api/api-code-generation.adoc[API Code Generation]
42 |
43 | xref:summary-and-outlook.adoc[] provides a summary and outlook.
44 |
45 |
46 | Annex xref:annex/serialization-modifier-examples.adoc[] contains examples for the serialization modifiers.
47 |
48 | Annex xref:annex/backus-naur-form.adoc[] defines the grammar language used in the specification.
49 | Annex xref:annex/uml.adoc[] contains information about UML,
50 | while Annex xref:annex/uml-templates.adoc[] provides the tables used to specify UML classes etc. as used in this specification.
51 | Annex xref:annex/api-tables-templates.adoc[] explains the templates used to specify operations and interfaces.
52 |
53 | xref:annex/handling-constraints.adoc[] explains the numbering of constraints used in the specification.
54 | xref:annex/overview-constraints.adoc[] gives an (non-normative) overview of all constraints used in the documents.
55 |
56 | The xref:changelog.adoc[] describes metamodel changes compared to previous versions.
57 |
58 | Finally, a xref:bibliography.adoc[] is given.
59 |
60 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/shared/conformance.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | Illustrations:
10 | Plattform Industrie 4.0; Anna Salari, Publik. Agentur für Kommunikation GmbH, designed by Publik. Agentur für Kommunikation GmbH
11 | ////
12 |
13 |
14 | === Conformance
15 |
16 | The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in https://tools.ietf.org/html/bcp14[BCP 14] https://tools.ietf.org/html/rfc2119[RFC2119] https://tools.ietf.org/html/rfc8174[RFC8174]footnote:[https://www.ietf.org/rfc/rfc2119.txt]:
17 |
18 | * MUST word, or the terms "REQUIRED" or "SHALL", mean that the definition is an absolute requirement of the specification.
19 | * MUST NOT This phrase, or the phrase "SHALL NOT", mean that the definition is an absolute prohibition of the specification.
20 | * SHOULD This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course.
21 | * SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
22 | * MAY This word, or the adjective "OPTIONAL", mean that an item is truly optional.
23 | One vendor may choose to include the item because a particular marketplace requires it or because the vendor feels that it enhances the product while another vendor may omit the same item.
24 | An implementation which does not include a particular option MUST be prepared to interoperate with another implementation which does include the option, though perhaps with reduced functionality.
25 | In the same vein an implementation which does include a particular option MUST be prepared to interoperate with another implementation which does not include the option (except, of course, for the feature the option provides.)
26 |
27 |
28 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/shared/versioning.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | Illustrations:
10 | Plattform Industrie 4.0; Anna Salari, Publik. Agentur für Kommunikation GmbH, designed by Publik. Agentur für Kommunikation GmbH
11 | ////
12 |
13 |
14 | === Versioning
15 |
16 | This specification is versioned using link:https://semver.org/spec/v2.0.0.html[Semantic Versioning 2.0.0] (semver) and follows the semver specification xref:bibliography.adoc#bib9[[9\]].
17 |
18 |
19 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/specification/interfaces-operation-parameters.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 | include::../includes/special-parameters.adoc[]
12 |
13 |
14 |
15 | = Basic Operation Parameters
16 |
17 | == General
18 |
19 | This clause specifies the parameters for API operations.
20 |
21 | [#SerializationModifier]
22 | == SerializationModifiers in Operations
23 |
24 | === Definition
25 |
26 | For GET operations, a SerializationModifier indicates the requester’s expected or desired response content.
27 | For PUT and PATCH operations, a SerializationModifier indicates the input content.
28 | The SerializationModifier comprises three orthogonal enumerations.
29 | When combined, these enumerations influence the input or response content of the requested operation.
30 |
31 | ====
32 | Note: values remain unchanged with content=metadata.
33 | ====
34 |
35 | [[enumeration-level]]
36 | === Enumeration: Level
37 |
38 | The first enumeration _Level_ indicates the depth of the structure of the response or input content.
39 |
40 | .Level Parameters
41 | [%autowidth,width="100%",cols="35%,65%",options="header",]
42 | |===
43 | h|Value h|Explanation
44 | e|Deep (Default) a|
45 | All elements of a requested hierarchy level and all children on all sublevels are returned.
46 | Children in this sense are SubmodelElements which are contained at the ‘submodelElements’ field of Submodels, the ‘value’ field of SubmodelElementCollections or SubmodelElementLists, the ‘statements’ field of Entities, or the ‘annotations’ field of AnnotatedRelationshipElements.
47 | e|Core a|
48 | Only elements of a requested hierarchy level as well as direct children are returned.
49 | By this, a client can iterate the hierarchy step by step.
50 | |===
51 |
52 | ====
53 | Note: level parameters are mapped to the query parameter "?level" in the HTTP/REST APIs, see also xref:http-rest-api/http-rest-api.adoc#modifier-constraints[Modifier Constraints].
54 | ====
55 |
56 | [[enumeration-content]]
57 | === Enumeration: Content
58 |
59 | The second enumeration _Content_ indicates the kind of serialization of the response or input content.
60 |
61 | For Content equal to Normal see Clause link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#_format_normal_in_xml[] and link:https://https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#_format_normal_in_json[] in Part 1 for details.
62 | It is defined for XML and JSON only.
63 |
64 | For Content equal to Metadata see Clause link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#_format_metadata_metadata_serialization[] in Part 1 for details.
65 |
66 | For Content equal to Value see Clause link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#value-only-serialization-in-json[] in Part 1 for details.
67 | It is defined for JSON only.
68 |
69 | For Content equal to Reference see Clause link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#_format_reference[] in Part 1 for details.
70 |
71 | For Content equal to Path see Clause link:https://industrialdigitaltwin.io/aas-specifications/IDTA-01001/v3.1/mappings/mappings.html#_format_path_idshortpath_serialization_in_json[] in Part 1 for details.
72 |
73 | .Content Parameters
74 | [%autowidth,width="100%",cols="35%,65%",options="header",]
75 | |===
76 | h|Value h|Explanation
77 | e|Normal (Default) a|The standard serialization of the model element or child elements is applied.
78 | e|Metadata a|Only metadata of an element or child elements is returned; the value is not .
79 | e|Value a|Only the raw value of the model element or child elements is returned; it is commonly referred to as _ValueOnly_-serialization.
80 | e|Reference a|Only applicable to Referables. Only the reference to the found element is returned; potential child elements are ignored.
81 | e|Path a|Returns the idShort of the requested element and a list of _idShort_ paths to child elements if the requested element is a Submodel, a SubmodelElementCollection, a SubmodelElementList, a AnnotatedRelationshipElement, or an Entity.
82 | |===
83 |
84 | ====
85 | Note: level parameters are mapped to path suffixes "/$" in the HTTP/REST APIs, see also xref:http-rest-api/http-rest-api.adoc#modifier-constraints[Modifier Constraints].
86 | ====
87 |
88 | [[enumeration-extent]]
89 | === Enumeration: Extent
90 |
91 | The third enumeration _Extent_ indicates to which extent the response or input content is being serialized.
92 | At this stage, the listed values could also be represented as binary values on BLOB-elements.
93 | They are, however, kept as generic extent values for the sake of extension.
94 |
95 | .Extent Parameters
96 | [%autowidth,width="100%",cols="35%,65%",options="header",]
97 | |===
98 | h|Value h|Explanation
99 | e|WithoutBLOBValue (Default) |Only applicable to BLOB-elements; the BLOB content is not returned.
100 | e|WithBLOBValue |Only applicable to BLOB-elements; the BLOB content is returned as _base64_-encoded string.
101 | |===
102 |
103 | ====
104 | Note: level parameters are mapped to the query parameter "?extent" in the HTTP/REST APIs, see also xref:http-rest-api/http-rest-api.adoc#modifier-constraints[Modifier Constraints].
105 | ====
106 |
107 | == Applicability of SerializationModifiers
108 |
109 | The defined SerializationModifiers are only valid for specific operations due to their generic nature.
110 | Also, the applicability depends on the kind of the accessed resource.
111 | The following list defines the applicability of the modifiers to the resources.
112 |
113 | GET and PATCH operations may combine all SerializationModifiers as listed below.
114 | PUT operations may only use the Extent Modifier.
115 | POST operations do not use SerializationModifiers.
116 |
117 | .Applicability of SerializationModifiers
118 | [%autowidth,width="100%",cols="37%,13%,28%,22%",options="header",]
119 | |===
120 | h|Resource Name h|Level Modifier h|Content Modifier h|Extent Modifier
121 | |Asset Administration Shell |No |Normal/ Reference |No
122 | |Submodel Reference |No |No |No
123 | |Submodel |Deep/Core |Normal/ Metadata/ Value/ Reference/ Path a|
124 | WithoutBLOBValue/
125 |
126 | WithBLOBValue
127 |
128 | 4+|*SubmodelElements*
129 | |SubmodelElementCollection |Deep/Core |Normal/ Metadata/ Value/ Reference/ Path a|
130 | WithoutBLOBValue/
131 |
132 | WithBLOBValue
133 |
134 | |SubmodelElementList |Deep/Core |Normal/ Metadata/ Value/ Reference/ Path a|
135 | WithoutBLOBValue/
136 |
137 | WithBLOBValue
138 |
139 | |Entity |Deep/Core |Normal/ Metadata/ Value/ Reference/ Path a|
140 | WithoutBLOBValue/
141 |
142 | WithBLOBValue
143 |
144 | |BasicEventElement |No |Normal/ Metadata/ Value/ Reference |No
145 | |Capability |No |Normal/Reference |No
146 | |Operation |No |Normal/Reference |No
147 | 4+|*DataElements*
148 | |Property |No |Normal/ Metadata/ Value/ Reference |No
149 | |MultiLanguageProperty |No |Normal/ Metadata/ Value/ Reference |No
150 | |Range |No |Normal/ Metadata/ Value/ Reference |No
151 | |ReferenceElement |No |Normal/ Metadata/ Value/ Reference |No
152 | |RelationshipElement |No |Normal/ Metadata/ Value/ Reference |No
153 | |AnnotatedRelationshipElement |No |Normal/ Metadata/ Value/ Reference |No
154 | |Blob |No |Normal/ Metadata/ Value/ Reference a|
155 | WithoutBLOBValue/
156 |
157 | WithBLOBValue
158 |
159 | |File |No |Normal/ Metadata/ Value/ Reference |No
160 | |===
161 |
162 | ====
163 | Note: EventPayload defines the necessary information of an event instance sent out or received.
164 | It is, however not part of the AAS and submodel hierarchical structure.
165 | ====
166 |
167 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/summary-and-outlook.adoc:
--------------------------------------------------------------------------------
1 | ////
2 | Copyright (c) 2023 Industrial Digital Twin Association
3 |
4 | This work is licensed under a [Creative Commons Attribution 4.0 International License](
5 | https://creativecommons.org/licenses/by/4.0/).
6 |
7 | SPDX-License-Identifier: CC-BY-4.0
8 |
9 | ////
10 |
11 | = Summary and Outlook
12 |
13 | This document specifies the interfaces for a single Asset Administration Shell and its Submodels, as well as for a repository of Asset Administration Shells.
14 | Additionally, infrastructural interfaces like Registry and Discovery of a set of Asset Administration Shells are specified.
15 |
16 | All interfaces are specified in a technology-neutral way before defining technology-specific APIs.
17 |
18 | In this version of the specification, HTTP/REST APIs are defined and mapped to the technology-neutral specification as a frontrunner.
19 |
20 | In subsequent versions of this specification, APIs using other technologies are planned to be supported, e.g. gRPC or MQTT.
21 |
22 | Additionally, further interfaces, service specifications, and profiles may be defined.
23 |
24 |
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/pages/terms-definitions-and-abbreviations.adoc:
--------------------------------------------------------------------------------
1 | == Terms, Definitions and Abbreviations
2 |
3 | === Terms and Definitions
4 |
5 | ====
6 | [.underline]#Please note#: the definitions of terms are only valid in a certain context.
7 | This glossary applies only within the context of this document.
8 | ====
9 |
10 | If available, definitions were taken from IEC 63278-1:2023.
11 |
12 | *API*
13 |
14 | specification of the set of operations and events that forms an API in a selected technology
15 |
16 | *API Operation*
17 |
18 | specification of a single operation (procedure) that may be called through an API
19 |
20 | *Asset Administration Shell (AAS)*
21 |
22 | standardized digital representation of an asset
23 |
24 | ====
25 | Note: Asset Administration Shell and Administration Shell are used synonymously.
26 | ====
27 |
28 | * [SOURCE: IEC 63278-1:2023, note added]
29 |
30 | *interface*
31 |
32 | shared boundary between two entities defined by functional characteristics, signal characteristics, or other characteristics as appropriate
33 |
34 | * [SOURCE: IEC 61800-7-1: 2015]
35 |
36 | *interface operation*
37 |
38 | interface operations define interaction patterns via the specified interface
39 |
40 | *operation*
41 |
42 | executable realization of a function
43 |
44 | ====
45 | Note 1: the term method is synonymous to operation.
46 |
47 | Note 2: an operation has a name and a list of parameters [ISO 19119:2005, 4.1.3].
48 | ====
49 |
50 | * [SOURCE: Glossary Industrie 4.0, editorial changes]
51 |
52 | *service*
53 |
54 | distinct part of the functionality that is provided by an entity through interfaces
55 |
56 | * [SOURCE: IEC 63278-1:2023; IEC 60050-741:2020, 741-01-28]
57 |
58 | *service specification*
59 |
60 | specification of a service according to the notation, architectural style and constraints of a selected technology
61 |
62 | ====
63 | Note: one or multiple API Operations can be assigned to one service specification.
64 | ====
65 |
66 | *Submodel*
67 |
68 | representation of an aspect of an asset
69 |
70 | * [SOURCE: IEC 63278-1:2023]
71 |
72 | *SubmodelElement*
73 |
74 | element of a Submodel
75 |
76 | * [SOURCE: IEC 63278-1:2023]
77 |
78 | === Abbreviations
79 |
80 | [%autowidth,width="100%",cols="21%,79%",options="header",]
81 | |===
82 | |*Abbreviation* |*Description*
83 | |AAS |Asset Administration Shell
84 | |AASX |Package file format for the AAS
85 | |AML |AutomationML, Automation Markup Language
86 | |API |Application Programming Interface
87 | |BITKOM |Bundesverband Informationswirtschaft, Telekommunikation und neue Medien e. V.
88 | |BLOB |Binary Large Object
89 | |CDD |Common Data Dictionary
90 | |GUID |Globally unique identifier
91 | |ID |Identifier
92 | |IDTA |Industrial Digital Twin Association
93 | |IEC |International Electrotechnical Commission
94 | |IRDI |International Registration Data Identifier
95 | |ISO |International Organization for Standardization
96 | |JSON |JavaScript Object Notation
97 | |MIME |Multipurpose Internet Mail Extensions
98 | |OPC |Open Packaging Conventions (ECMA-376, ISO/IEC 29500-2)
99 | |OPCF |OPC Foundation
100 | |OPC UA |OPC Unified Architecture maintained by the OPC Foundation
101 | |PDF |Portable Document Format
102 | |RAMI4.0 |Reference Architecture Model Industrie 4.0
103 | |RDF |Resource Description Framework
104 | |REST |Representational State Transfer
105 | |RFC |Request for Comment
106 | |ROA |Resource Oriented Architecture
107 | |SOA |Service Oriented Architecture
108 | |UML |Unified Modeling Language
109 | |URI |Uniform Resource Identifier
110 | |URL |Uniform Resource Locator
111 | |URN |Uniform Resource Name
112 | |UUID |Universally Unique Identifier
113 | |VDE |Verband der Elektrotechnik Elektronik Informationstechnik e. V.
114 | |VDI |Verein Deutscher Ingenieure e.V.
115 | |VDMA |Verband Deutscher Maschinen- und Anlagenbau e.V.
116 | |W3C |World Wide Web Consortium
117 | |XML |eXtensible Markup Language
118 | |ZIP |archive file format that supports lossless data compression
119 | |ZVEI |Zentralverband Elektrotechnik- und Elektronikindustrie e. V.
120 | |===
--------------------------------------------------------------------------------
/documentation/IDTA-01002-3/modules/ROOT/partials/bnf/grammar.bnf:
--------------------------------------------------------------------------------
1 | ::= |
2 |
3 | ::= ?
4 | ::= "$select" "id"
5 |
6 | ::= | | |
7 | | | | |
8 | ::= "(" ")"
9 | ::= "$or" "(" ( "," )+ ")"
10 | ::= "$and" "(" ( "," )+ ")"
11 | ::= "$not" "(" ")"
12 |
13 | ::= ( "$match" "(" ( | ) ( "," ( | ) )* ")" )
14 |
15 | ::=
16 | |
17 | |
18 | |
19 | |
20 | |
21 |
22 |
23 | ::= ( "$eq" | "$ne" | "$gt" | "$lt" | "$ge" | "$le" )
24 |
25 | ::=
26 | ( ( "$starts-with" | "$ends-with" | "$contains" | "$regex") "(" "," ")" ) |
27 | ( ) |
28 | ( ) |
29 | ( )
30 |
31 | ::=
32 | ( ) |
33 | ( ) |
34 | ( )
35 |
36 | ::=
37 |
38 |
39 | ::=
40 | ( "$eq" | "$ne" )
41 |
42 | ::=
43 |
44 |
45 | ::=
46 | ( "$dayOfWeek" | "$dayOfMonth" | "$month" | "$year" ) "(" ")"
47 |
48 | ::=
49 |
50 |
51 | ::= | | | | |
52 |
53 | ::=
54 | | | |
55 |
56 | ::=
57 | | |
58 |
59 | ::=
60 | |
61 |
62 | ::=
63 | |
64 |
65 | ::=
66 | | |
67 |
68 |