Assumptions
# | Description |
---|
1 | Yang namespaces are globally unique (except for multiple revisions) |
Open Issues/Decisions
# | Description | Details | Decisions |
---|
1 | How to differentiatie GET queries with different parameters. If we dont have named parameters how best to know what is meant | Alternatives - GET /anchorpoint/dataspace/{dataspace} versus /anchor-point/name/{dataspace}
- GET /anchorpoint?dataspace={dataspace} versus /anchor-point?name={dataspace}
- GET /dataspace/{dataspace-id}/anchorpoint versus /anchor-point/{name}
- GET /dataspace/{dataspace-id}/anchorpoint versus /anchor-point/name/{name}
- GET /dataspace/{dataspace-id}/anchorpoint versus /name/{name}/anchor-point
|
|
2 | Advance queries v Simple Queries (gets) for data fragments. Do we want/need differentiatie on UTL? | - GET /fragment/query/{xpath}
- GET/fragment/{xpath}
- GET /query/{xpath}
Note . The xpath could be a full unambiguous xpath returning one object or it could be partial path using wildcards etc allowing for more advanced queries return 0 or more fragments (developed over many iterations) |
|
3 | We have no modules sets! | model files just arbitrarily group a few modules, is there a need to persist this grouping (We do have the concept of a dataspace as well) |
|
API definitions
Group | # | Operation | Payload | Description |
---|
Modelling storage | 1 | PUT /module |
-set/{dataspace} | File | Create/Update (and validate) a module set. (upload a model file) |
2 | GET / |
modulesmodule/ |
| Read all modules in the store. |
3 |
PUT -setmodule-set}/Create a module instance and validate it against a model set. | Anchor point persistencenamespace} (see assumption #1 and issue #1) |
| Read all modules in the store for the given namespace |
4 | GET /module/{namespace}/{revision} |
| Read all modules in the store for the given namespace and revision |
5 | GET /module/{dataspace} (see issue #1) |
| Read all modules in the store for the given dataspace |
Anchor Points persistence | 6 | PUT /anchor-point/ |
{name}/{dataspace}/ | Json Object | Create an anchor point given a name and a dataspace |
. and module (namespace and revision) |
7 | GET /anchor-point/{ |
namedataspacename}/ |
| Read an anchor point and the associated attributes given a name and a dataspace. |
8 |
GET DELETE /anchor-point/{dataspace} |
/Read all anchor points in the system given a dataspace. | DELETE /anchor-point/{dataspace}/ |
| Delete an anchor point given a name and a dataspace. |
PUT (will delete whole tree) |
9 | GET /anchor-point/{ |
module-set}/Create an anchor point to a module set given an anchor point and a module set reference. | GET /modulesdataspace} (see isue#1) |
| Read all anchor points in the system given a dataspace. |
10 | GET /module/{dataspace}/{anchor-point}/ |
| Get a |
model set PUT module (reference), given an anchor point |
Fragment persistence | 11 | GET /anchor-point/fragment/{ |
parent-fragmentCreate a fragment given a parent fragment
| Get the anchor point of a fragment given a fragments xpath |
Fragment persistence | 12 | PUT /fragment/{dataspace}/{ |
anchor-point a fragment given an anchor pointa (root) fragment for a given anchor point, the fragment can have children. |
13 | PUT /fragment/{parent-fragment-id}/ | File | Create a fragment given an ID relative to the parent |
14 | GET /fragment/{dataspace}/{ |
anchor-pointname}/ |
| Get a fragment given a anchor point (return just one level with just xpath references to its children) |
15 | GET /fragment/{dataspace}/{xpath}/ (see isue#2) |
| Get a fragment given a Xpath expression |
Queries{fragment}/parent-fragment/Get the parent of a fragment given a fragment | GET /anchor-point/{fragment}/ | Get the anchor point of a fragment given a fragment |
GET /fragments/fragments/{dataspace}/{anchor-point}/ |
| Get all the fragments under an anchor point given a anchor point |
GET (notice similarity with /fragment/{dataspace}/ |
Get all the relevant fragments given a dataspace{anchor-point}/ (just one letter!) |
17 | GET /fragment/{dataspace}/schema-node-identifier/{schema-node-identifier}/ |
| Get all the relevant fragments given a schema node identifier (not need to specify dataspace is schema-node-identifier is globally unique) |