Skip to content
Snippets Groups Projects
Commit 3044bff3 authored by Jorge Moratinos's avatar Jorge Moratinos
Browse files

Deployed cb22ae2f to develop in public with MkDocs 1.6.1 and mike 2.1.3

parent 909d6edf
No related branches found
No related tags found
No related merge requests found
public/develop/images/vendor-ext/aef_profile.png

179 KiB

public/develop/images/vendor-ext/aef_profile_2.png

167 KiB

public/develop/images/vendor-ext/publish_supported_features.png

298 KiB

public/develop/images/vendor-ext/publish_supported_features_2.png

264 KiB

public/develop/images/vendor-ext/service_api_description.png

149 KiB

public/develop/images/vendor-ext/service_api_description_2.png

136 KiB

Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -2,106 +2,106 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://ocf.etsi.org/develop/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/FAQ/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/architecture/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/releasenotes/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/api-status/api-status/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/contribute/documenting/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/example-clients/example-clients/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/gettingstarted/howtorun/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/gettingstarted/repository/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/sdk/sdk/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/postman/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/robotframework/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_access_control_policy/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_auditing_service/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_discover_service/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_events_service/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_invoker_management/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_logging_service/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_provider_management/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_publish_service/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_security_service/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/api_status/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/common_operations/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/testing/testplan/vendor_extensibility/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
<url>
<loc>https://ocf.etsi.org/develop/vendor-ext/vendor-ext/</loc>
<lastmod>2025-01-22</lastmod>
<lastmod>2025-01-30</lastmod>
</url>
</urlset>
\ No newline at end of file
No preview for this file type
......@@ -447,6 +447,17 @@
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Vendor Extensibility
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
......@@ -457,6 +468,67 @@
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#vendor-extensibility-in-capif" class="md-nav__link">
<span class="md-ellipsis">
Vendor Extensibility in CAPIF:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#vendor-extensibility-in-capif-apis" class="md-nav__link">
<span class="md-ellipsis">
Vendor Extensibility in CAPIF APIs
</span>
</a>
<nav class="md-nav" aria-label="Vendor Extensibility in CAPIF APIs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#publish-api" class="md-nav__link">
<span class="md-ellipsis">
Publish API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#discover-api" class="md-nav__link">
<span class="md-ellipsis">
Discover API
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
......@@ -824,6 +896,56 @@
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#vendor-extensibility-in-capif" class="md-nav__link">
<span class="md-ellipsis">
Vendor Extensibility in CAPIF:
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#vendor-extensibility-in-capif-apis" class="md-nav__link">
<span class="md-ellipsis">
Vendor Extensibility in CAPIF APIs
</span>
</a>
<nav class="md-nav" aria-label="Vendor Extensibility in CAPIF APIs">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#publish-api" class="md-nav__link">
<span class="md-ellipsis">
Publish API
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#discover-api" class="md-nav__link">
<span class="md-ellipsis">
Discover API
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
......@@ -838,7 +960,157 @@
<h1 id="vendor-extensibility">Vendor Extensibility</h1>
<p>DOC:Work in Progress</p>
<p>Mechanism for the APIs to re-use, extend their functionalities and data models and engage with third-party API frameworks (e.g. ETSI MEC)</p>
<p>Vendor specific extensions are defined on 3GPP TS 29.122 (section 5.2.13) and 29.500 (section 6.6.3) and is tightly connected with "supported-features” and "feature negotiation" procedures.</p>
<h2 id="vendor-extensibility-in-capif">Vendor Extensibility in CAPIF:</h2>
<p>Vendor Extensibility is a feature focused on the APIs that are published and exposed via CAPIF.
As a result, the feature is supported by the ServiceAPIDescription object (and any other objects embeded on it e.g. AefProfile). In the figure below, depicting all supported features of ServiceAPIDescription,
VendExt feature is noted, which enables vendor-specific extension in the body of the specific object.</p>
<p><img alt="Publish Supported Features" src="../../images/vendor-ext/publish_supported_features_2.png" /></p>
<p>Vendor extensibility feature can be enabled and leveraged in 2 CAPIF APIs, Publish and Discover.</p>
<h2 id="vendor-extensibility-in-capif-apis">Vendor Extensibility in CAPIF APIs</h2>
<h3 id="publish-api">Publish API</h3>
<p>A vendor can extend the ServiceAPIDescription object by adding additional member elements. However, in order to avoid duplication of member names inside a same object
it is necessary to comply with a naming scheme for vendor-specific data elements, to avoid clashing names between vendors.
Vendor-specific member names in JSON objects shall be named in the following manner:</p>
<pre><code> &quot;vendorSpecific-nnnnnnnnn&quot;: {
...
}
</code></pre>
<p>where the value "nnnnnn" can be:</p>
<ol>
<li>6-digit IANA-assigned enterprise code:</li>
</ol>
<pre><code> &quot;vendorSpecific-010415&quot;: {
...
}
</code></pre>
<ol>
<li>domain name:</li>
</ol>
<pre><code>&quot;vendorSpecific-3gpp.org&quot;: {
...
}
</code></pre>
<ol>
<li>URN:</li>
</ol>
<pre><code>&quot;vendorSpecific-urn:3gpp:example&quot;: {
...
}
</code></pre>
<p>A concrete example of vendor-specific extensibility exists on section 9 of ETSI GS MEC 011 V3.2.1, where ETSI MEC extends the ServiceAPIDescription as depicted on the following two figures.</p>
<p><img alt="Service API Description" src="../../images/vendor-ext/service_api_description_2.png" /></p>
<p><img alt="AEF Profile" src="../../images/vendor-ext/aef_profile_2.png" /></p>
<p><strong>Example:</strong></p>
<p>ServiceAPIDescription vendorSpecific looks like:</p>
<pre><code class="language-json">&quot;vendorSpecific-urn:etsi:mec:capifext:service-info&quot;: {
&quot;serializer&quot;: &quot;JSON&quot;,
&quot;state&quot;: &quot;ACTIVE&quot;,
&quot;scopeOfLocality&quot;: &quot;MEC_SYSTEM&quot;,
&quot;consumedLocalOnly&quot;: &quot;True&quot;,
&quot;isLocal&quot;: &quot;True&quot;,
&quot;category&quot;: {
&quot;href&quot;: &quot;https://www.location.com&quot;,
&quot;id&quot;: &quot;location_1&quot;,
&quot;name&quot;: &quot;Location&quot;,
&quot;version&quot;: &quot;1.0&quot;
}
}
</code></pre>
<p>AEFProfile vendorSpecific looks like:</p>
<pre><code class="language-json">&quot;vendorSpecific-urn:etsi:mec:capifext:transport-info&quot;: {
&quot;name&quot;: &quot;trasport1&quot;,
&quot;description&quot;: &quot;Transport Info 1&quot;,
&quot;type&quot;: &quot;REST_HTTP&quot;,
&quot;protocol&quot;: &quot;HTTP&quot;,
&quot;version&quot;: &quot;2&quot;,
&quot;security&quot;: {
&quot;grantTypes&quot;: &quot;OAUTH2_CLIENT_CREDENTIALS&quot;,
&quot;tokenEndpoint&quot;: &quot;https://token-endpoint/&quot;
}
}
</code></pre>
<p>Complete ETSI MEC ServiceAPIDescription with vendor extensibility would be like this:</p>
<pre><code class="language-json">{
&quot;apiName&quot;: &quot;service_1&quot;,
&quot;vendorSpecific-urn:etsi:mec:capifext:service-info&quot;: {
&quot;serializer&quot;: &quot;JSON&quot;,
&quot;state&quot;: &quot;ACTIVE&quot;,
&quot;scopeOfLocality&quot;: &quot;MEC_SYSTEM&quot;,
&quot;consumedLocalOnly&quot;: &quot;True&quot;,
&quot;isLocal&quot;: &quot;True&quot;,
&quot;category&quot;: {
&quot;href&quot;: &quot;https://www.location.com&quot;,
&quot;id&quot;: &quot;location_1&quot;,
&quot;name&quot;: &quot;Location&quot;,
&quot;version&quot;: &quot;1.0&quot;
}
},
&quot;aefProfiles&quot;: [
{
&quot;aefId&quot;: &quot;string&quot;,
&quot;vendorSpecific-urn:etsi:mec:capifext:transport-info&quot;: {
&quot;name&quot;: &quot;trasport1&quot;,
&quot;description&quot;: &quot;Transport Info 1&quot;,
&quot;type&quot;: &quot;REST_HTTP&quot;,
&quot;protocol&quot;: &quot;HTTP&quot;,
&quot;version&quot;: &quot;2&quot;,
&quot;security&quot;: {
&quot;grantTypes&quot;: &quot;OAUTH2_CLIENT_CREDENTIALS&quot;,
&quot;tokenEndpoint&quot;: &quot;https://token-endpoint/&quot;
}
},
&quot;versions&quot;: [
{}
],
&quot;protocol&quot;: &quot;HTTP_1_1&quot;,
&quot;dataFormat&quot;: &quot;JSON&quot;,
&quot;securityMethods&quot;: [&quot;PSK&quot;],
&quot;interfaceDescriptions&quot;: [
{
&quot;ipv4Addr&quot;: &quot;string&quot;,
&quot;port&quot;: 65535,
&quot;securityMethods&quot;: [&quot;PSK&quot;]
}
]
}
],
&quot;description&quot;: &quot;string&quot;,
&quot;supportedFeatures&quot;: &quot;0&quot;,
&quot;shareableInfo&quot;: {
&quot;isShareable&quot;: true,
&quot;capifProvDoms&quot;: [
&quot;string&quot;
]
},
&quot;serviceAPICategory&quot;: &quot;string&quot;,
&quot;apiSuppFeats&quot;: &quot;fffff&quot;,
&quot;pubApiPath&quot;: {
&quot;ccfIds&quot;: [
&quot;string&quot;
]
},
&quot;ccfId&quot;: &quot;string&quot;
}
</code></pre>
<h3 id="discover-api">Discover API</h3>
<p>In order to use vendor-specific fields as filters in Discover API, vendor-specific query parameter shall be encoded as follows:</p>
<pre><code class="language-json">https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/{{DISCOVER_URL}}?
...
vend-spec-&lt;query parameter name&gt;={
&quot;target&quot;: &lt;string that contains the JSON pointer to the attribute in the resource representation&gt;,
&quot;value&quot;: &lt;query parameter value&gt;
}
</code></pre>
<p><strong>Example:</strong></p>
<pre><code class="language-json"> https://{{CAPIF_HOSTNAME}}:{{CAPIF_PORT}}/{{DISCOVER_URL}}?
...
vend-spec-type={
&quot;target&quot;: &quot;/vendorSpecific-urn:etsi:mec:capifext:transport-info&quot;,
&quot;value&quot;: &quot;REST_HTTP&quot;
}
</code></pre>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment