DMI URI
DMI URI format to follow below pattern
<OP> dmi/ <v{v-number}> / <data|operations|dmi-action> / ch /<cmHandle> /ds/{datastore} / [rp:]<resource-path> ?<query>
<OP> | mandatory | the HTTP method |
dmi | mandatory | the dmi root resource |
<v{v-number}> | mandatory | version of the dmi interface is the target resource URI is the query parameter list |
<data|operations|dmi-action> | mandatory | yang data, rpc operation or a (non-modelled) ncmp api action |
<cmHandle> | mandatory | unique (string) identifier of a yang tree instance. |
{datastore} | optional | optional datastore |
<resource-path> | optional | the path expression identifying the resource that is being accessed by the operation. If this field is not present, then the target resource is the API itself. |
<query> | optional | the set of parameters associated with the RESTCONF message; see Section 3.4 of [RFC3986]. RESTCONF parameters have the familiar form of "name=value" pairs. Most query parameters are optional to implement by the server and optional to use by the client. Each optional query parameter is identified by a URI |
Datastore
If datastore (ds/{datastore}) is not included in the URL then the request is defaulted to ncmp-datastore:running/operational.
If the cmhandle metadata indicates that data is not synched in CPS then the request is forwarded to the dmi-plugin
RESTCONF/NETCONF relationship
Usecase | REST Method | URI | Example | |||||
---|---|---|---|---|---|---|---|---|
1 | Add a data resource for a cmHandle | POST | dmi-root}/dmi/v1/data/ch/<cm-handle>/{parent-data-resource-identifier} { <new-yang-data-resource> } Content-Type: application/json "data" payload : yang-data+json | |||||
2 | Delete a data resource for a cmHandle | PUT | {dmiroot}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} | |||||
3 | Patch a data resource for a cmHandle | PATCH | {dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} { Content-Type: application/json "data" payload : yang-data+json | |||||
4 | dmi-CM-001-8 Patch multiple child resources for a single cmHandle | PATCH | {dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier} Content-Type: application/json "data" payload : yang-patch+json | |||||
5 | Execute a yang action on a cmhandle instance | POST | dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier}/{action} input: { Note : If the "action" statement has no "input" section, the request message MUST NOT include a message-body | |||||
6 | Execute an rpc operation | POST | {dmi-root}/dmi/v1/operations/ch/<cm-handle>/ {module-name}:{action} { Note : If there is no "input" section, the request MUST NOT include a message-body | |||||
7 | Read a filtered set of data under a data resource for a cmHandle | PUT | dmiroot}/dmi/v1/data/ch/<cm-handle>/{resource-identifier}?fields={fields-expression}
| |||||
8 | Read data resources with specified fields under a given data resource for a given cmHandle | PUT | {dmi-root}/dmi/v1/data/ch/<cm-handle>/{resource-identifier}?fields={fields-expression}
| |||||
9 | ||||||||
10 | ||||||||
11 | ||||||||
12 | ||||||||
13 | ||||||||
14 |
References
Follow principles/patterns of RESTCONF RFC-8040 https://datatracker.ietf.org/doc/html/rfc8040
Follow principles/patterns of yang-patch RFC-8072 https://datatracker.ietf.org/doc/html/rfc8040
Follow principles/patterns of RESTCONF NMDA RFC-8527 https://datatracker.ietf.org/doc/html/rfc8527