We need enpoints to handle the following operation in one transaction
- Remove multiple inodes
- Save multiple inodes
- Copy multiple inodes to one location
- Restore multiple inodes
- Set / Unset as favorite multiple inodes
- Watch / Unwatch multiple inodes
- Upload multiple files
Endpoints are not definitive and need further discussion. Also returned codes & payloads on errors are to be defined.
We already have an enpoint for that:
{
"kind": "dms-core.InodeRefList",
"items": [
{
"kind": "dms-core.InodeRef",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name"
},
{
"kind": "dms-core.InodeRef",
"oid": "7ce7570d-7bac-46eb-a8c3-521b99fae156",
"name": "some other name"
}
]
}
No content
{
"kind": "dms-core.Inode",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
Return the updated list of inodes
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
{
"kind": "dms-core.InodeRefList",
"items": [
{
"kind": "dms-core.InodeRef",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name"
},
{
"kind": "dms-core.InodeRef",
"oid": "7ce7570d-7bac-46eb-a8c3-521b99fae156",
"name": "some other name"
}
]
}
Return the list of created inodes
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
We have to use a list of inodes (and not inodeRef), as we can in one call:
- restore an inode
- to a new location (by updating parent oid)
- update the type (respecting target's allowed children types)
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
Return the list of restored inodes
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
Maybe for those endpoints, a RESPONSE 204
would be enough
{
"kind": "dms-core.InodeRefList",
"items": [
{
"kind": "dms-core.InodeRef",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name"
},
{
"kind": "dms-core.InodeRef",
"oid": "7ce7570d-7bac-46eb-a8c3-521b99fae156",
"name": "some other name"
}
]
}
Return the list of inodes added to favorites.
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
{
"kind": "dms-core.InodeRefList",
"items": [
{
"kind": "dms-core.InodeRef",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name"
},
{
"kind": "dms-core.InodeRef",
"oid": "7ce7570d-7bac-46eb-a8c3-521b99fae156",
"name": "some other name"
}
]
}
Return the list of inodes removed from favorites.
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
Maybe for those endpoints, a RESPONSE 204
would be enough
{
"kind": "dms-core.InodeRefList",
"items": [
{
"kind": "dms-core.InodeRef",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name"
},
{
"kind": "dms-core.InodeRef",
"oid": "7ce7570d-7bac-46eb-a8c3-521b99fae156",
"name": "some other name"
}
]
}
Return the list of inodes watched.
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
{
"kind": "dms-core.InodeRefList",
"items": [
{
"kind": "dms-core.InodeRef",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name"
},
{
"kind": "dms-core.InodeRef",
"oid": "7ce7570d-7bac-46eb-a8c3-521b99fae156",
"name": "some other name"
}
]
}
Return the list of inodes unwatched.
{
"kind": "dms-core.InodeList",
"items": [
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name",
...
},
{
"kind": "dms-core.Inode",
"oid": "c52a0d38-1933-4464-81b5-3c525b31c051",
"name": "some name...",
...
},
]
}
We already have an endpoint for this one. We don't change it, except BE should ensure operation is executed in one transaction (not the case for now).