payment: note that Stripe has instituted an additional 1% fee for non-US cards
[hcoop/portal.git] / support.sig
1 signature SUPPORT =
2 sig
3 datatype status =
4 NEW
5 | PENDING
6 | CLOSED
7
8 type category = { id : int, grp : int, name : string, descr : string }
9 type issue = { id : int, usr : int, cat : int, title : string, priv : bool, status : status,
10 stamp : Init.C.timestamp, pstamp : Init.C.timestamp option, cstamp : Init.C.timestamp option }
11 type post = { id : int, usr : int, iss : int, body : string, stamp : Init.C.timestamp }
12 type subscription = { usr : int, cat : int }
13
14 val lookupCategory : int -> category
15 val listCategories : unit -> category list
16 val listCategoriesWithSubscriptions : int -> (bool * category) list
17 val addCategory : int * string * string -> int
18 val modCategory : category -> unit
19 val deleteCategory : int -> unit
20
21 val lookupIssue : int -> issue
22 val listIssues : unit -> issue list
23 val listOpenIssues : int -> (string * issue) list
24 val listCategoryIssues : int -> (string * issue) list
25 val listOpenCategoryIssues : int * int -> (string * issue) list
26 val listOpenCategoryIssuesAdmin : int -> (string * issue) list
27 val addIssue : int * int * string * bool * status -> int
28 val modIssue : issue -> unit
29 val deleteIssue : int -> unit
30
31 val lookupPost : int -> post
32 val listPosts : int -> (string * post) list
33 val addPost : int * int * string -> int
34 val modPost : post -> unit
35 val deletePost : int -> unit
36
37 val subscribed : subscription -> bool
38 val subscribe : subscription -> unit
39 val unsubscribe : subscription -> unit
40
41 val validTitle : string -> bool
42 val allowedToSee : int -> bool
43 val allowedToEdit : int -> bool
44
45 val notifyCreation : int -> bool
46 val notifyPost : int -> bool
47 val notifyStatus : int * status * status * int -> bool
48 end