SDK  2.1.4 [async]
CloudBackend Software Development Kit - SDK API for C++
Types.h
1 /*
2  SDK type definitions.
3  Copyright © CloudBackend AB 2020 - 2025.
4 */
5 #ifndef INCLUDE_CBE_TYPES_H_
6 #define INCLUDE_CBE_TYPES_H_
7 
8 #include <cstdint>
9 #include <map>
10 #include <memory>
11 #include <string>
12 #include <utility>
13 #include <vector>
14 
21 namespace cbe {
22 
23  class Account;
24  class CloudBackend;
25  class Container;
26  class Database;
27  class Filter;
28  class Group;
29  class GroupFilter;
30  class GroupManager;
31  class GroupQueryResult;
32  class Item;
33  class Member;
34  class Object;
35  class Publish;
36  class PublishManager;
37  class QueryChain;
38  class QueryChainSync;
39  class QueryResult;
40  class Role;
41  class ShareManager;
42  class Stream;
43  class Subscribe;
44  class SubscribeManager;
45 
46  // Type definitions for ids, enums, settings and failure codes
47 
56  using AclGroupId = std::uint64_t;
60  using ContainerId = std::uint64_t;
64  using DatabaseId = std::uint64_t;
80  using Date = std::uint64_t;
84  using GroupId = std::uint64_t;
88  using ItemId = std::uint64_t;
92  using MemberId = std::uint64_t;
96  using ListenerHandle = std::uint64_t;
100  using ObjectId = std::uint64_t;
104  using PublishId = std::uint64_t;
108  using RoleId = std::uint64_t;
113  using ShareId = std::uint64_t;
118  using StreamId = std::uint64_t;
122  using SubscribeId = std::uint64_t;
126  using UserId = std::uint64_t;
127 
128  using account_status_t = std::uint32_t;
129  using failed_status_t = std::uint32_t;
130  using http_t = std::uint32_t;
131  using publish_access_t = std::uint32_t;
132  using publish_visibility_t = std::uint32_t;
133  using sync_direction_t = std::uint32_t;
134  using sync_status_t = std::uint32_t;
135  using transfer_t = std::uint32_t;
142  using ErrorCode = std::uint32_t;
143 
144  using application_t = int;
145  using item_t = int;
146  using object_t = int;
147  using permission_status_t = int;
148  using stream_t = int;
149  using visibility = int;
150 
151 
160  enum class AccountStatus : cbe::account_status_t {
161  NotLoggedIn = 1,
162  LoggedIn = 2,
163  Failed = 3
164  };
165 
169  enum class AclScope : uint64_t {
170  User = 1,
171  Group = 2,
172  Role = 3,
173  };
174 
175 #ifndef DOXYGEN_SHOULD_SKIP_THIS
180  enum class ApplicationType : application_t {
181  Open = 1,
182  Invite = 2,
183  Review = 3,
184  Closed = 4
185  };
186 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
187 
204  enum DefaultCtor {};
205 
221  enum class FilterOrder : uint32_t {
222  Title = 1,
223  Relevance = 2, //Note* group Searches does not use Relevance as order.
224  Published = 3,
225  Updated = 4,
226  Length = 5,
227  S1 = 6,
228  S2 = 7,
229  S3 = 8,
230  S4 = 9
231  };
232 
242  enum class ItemType : cbe::item_t {
243  Unapplicable = 1,
244  Unknown = 2,
245  Object = 4,
246  Container = 8,
247  Tag = 16,
248  Group = 32
249  };
250 
251 #ifndef DOXYGEN_SHOULD_SKIP_THIS
259  enum class HttpType : http_t {
260  GET = 1,
261  POST = 2,
262  PUT = 3,
263  DELETE = 4,
264  HEAD = 5
265  };
266 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
267 
271  enum class ObjectType : object_t {
272  Other = 1,
273  GroupInvites = 2,
274  ShareInvite = 3
275  };
276 
313  enum class Permissions : permission_status_t
314  {
315  Read = 1,
316  Write = 2,
317  ReadWrite = 3,
318  Delete = 4,
319  ReadDelete = 5,
320  WriteDelete = 6,
321  ReadWriteDelete = 7,
322  ChangeACL = 8,
323  ReadChangeACL = 9,
324  WriteChangeACL = 10,
325  ReadWriteChangeACL = 11,
326  DeleteChangeACL = 12,
327  ReadDeleteChangeACL = 13,
328  WriteDeleteChangeACL = 14,
329  AllPermissions = 15,
330  NoPermissions = 0
331  };
332 
342  enum class PublishAccess : cbe::publish_access_t {
343  Read = 1,
344  Update = 2,
345  Create = 3
346  };
347 
357  enum class PublishVisibility : cbe::publish_visibility_t {
358  Public = 1,
359  Friends = 2,
360  Private = 3,
361  Invited = 4
362  };
363 
375  enum class Visibility : visibility {
376  Public = 1,
377  Private = 2
378  };
379 
380 
390  using AclMap = std::map<cbe::AclGroupId, std::pair<cbe::Permissions, AclScope>>;
391 
396  using DataBases = std::map<std::string, cbe::Database>;
397 
401  using Items = std::vector<cbe::Item>;
402 
417  using KeyValues = std::map<std::string, std::pair<std::string, bool>>;
418 
440  using MemberBanInfo = std::map<std::pair<cbe::MemberId, cbe::MemberId>,
441  std::pair<cbe::Date, std::string>>;
442 
443  struct ShareData;
447  using ShareIds = std::map<cbe::ShareId, std::vector<cbe::ShareData>>;
448 
449 
450 
451 
455  namespace delegate {
459  namespace container {
460  } // namespace container
464  namespace group {
465  } // namespace group
469  namespace object {
470  } // namespace object
471  } // namespace delegate
472 
476  namespace util {}
477 
478 }// namespace cbe
479 
480 #endif // INCLUDE_CBE_TYPES_H_
A collection of Item, can also represent a table or folder.
Definition: Container.h:63
A group of members.
Definition: Group.h:42
Holder of a set of data, can represent a table row.
Definition: Object.h:64
User role information.
Definition: Role.h:34
Root namespace for the CloudBackend SDK API.
Definition: Account.h:22
std::uint32_t ErrorCode
Mimics the general error code encoding in the www.
Definition: Types.h:142
ObjectType
Definition: Types.h:271
std::map< std::pair< cbe::MemberId, cbe::MemberId >, std::pair< cbe::Date, std::string > > MemberBanInfo
Map of a pair of members, associated with ban information.
Definition: Types.h:441
FilterOrder
Definition: Types.h:221
std::uint64_t RoleId
Uniquely identifies the Role.
Definition: Types.h:108
std::uint64_t ItemId
Id of a cbe::Container or cbe::Object.
Definition: Types.h:88
std::map< cbe::AclGroupId, std::pair< cbe::Permissions, AclScope > > AclMap
ACL map (Access Control List) relating to users and groups.
Definition: Types.h:390
AccountStatus
Definition: Types.h:160
std::uint64_t StreamId
Uniquely identifies a cbe::Stream.
Definition: Types.h:118
std::uint64_t ShareId
Uniquely identifies a sharing of a cbe::Container or cbe::Object.
Definition: Types.h:113
std::uint64_t AclGroupId
Identifies ACL-group.
Definition: Types.h:56
std::uint64_t ObjectId
Unique Id of a cbe::Object.
Definition: Types.h:100
std::uint64_t UserId
Uniquely identifies the CBE user number.
Definition: Types.h:126
Visibility
Definition: Types.h:375
std::uint64_t ContainerId
Unique Id of a cbe::Container.
Definition: Types.h:60
DefaultCtor
Default constructor marker.
Definition: Types.h:204
PublishVisibility
Definition: Types.h:357
PublishAccess
Definition: Types.h:342
std::map< std::string, std::pair< std::string, bool > > KeyValues
Map with key/value pairs, a.k.a. metadata.
Definition: Types.h:417
std::uint64_t GroupId
Uniquely identifies the Group.
Definition: Types.h:84
std::uint64_t ListenerHandle
Unique Id for added Listener.
Definition: Types.h:96
std::uint64_t DatabaseId
The id of a Database.
Definition: Types.h:64
std::map< std::string, cbe::Database > DataBases
Databases available for the account.
Definition: Types.h:396
std::uint64_t MemberId
Represents the cbe::Group membership id.
Definition: Types.h:92
Permissions
Represents the access permission that can be set for any cbe::Object or cbe::Container.
Definition: Types.h:314
std::vector< cbe::Item > Items
Collection of items.
Definition: Types.h:401
std::uint64_t SubscribeId
Id of a subscription of a cbe::Container or cbe::Object.
Definition: Types.h:122
ItemType
Definition: Types.h:242
std::uint64_t Date
A time-stamp in the unix epoch format.
Definition: Types.h:80
std::map< cbe::ShareId, std::vector< cbe::ShareData > > ShareIds
Map of cbe::ShareData for a specific cbe::ShareId.
Definition: Types.h:447
AclScope
Definition: Types.h:169
std::uint64_t PublishId
Id of a subscribed cbe::Container or cbe::Object.
Definition: Types.h:104
Definition: Utility.h:21