1<?php
2/**
3 * Nextcloud - cospend
4 *
5 * This file is licensed under the Affero General Public License version 3 or
6 * later. See the COPYING file.
7 *
8 * @author Julien Veyssier <eneiluj@posteo.net>
9 * @copyright Julien Veyssier 2018
10 */
11
12return [
13	'routes' => [
14		['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
15
16		['name' => 'page#getBillActivity', 'url' => '/bill-activity', 'verb' => 'GET'],
17
18		// api for client using guest access (password)
19		[
20			'name'         => 'page#preflighted_cors',
21			'url'          => '/api/{path}',
22			'verb'         => 'OPTIONS',
23			'requirements' => ['path' => '.+']
24		],
25		[
26			'name'         => 'page#preflighted_cors',
27			'url'          => '/apiv2/{path}',
28			'verb'         => 'OPTIONS',
29			'requirements' => ['path' => '.+']
30		],
31		['name' => 'page#apiPing', 'url' => '/api/ping', 'verb' => 'GET'],
32		['name' => 'page#apiCreateProject', 'url' => '/api/projects', 'verb' => 'POST'],
33		['name' => 'page#apiGetProjectInfo', 'url' => '/api/projects/{projectid}/{password}', 'verb' => 'GET'],
34		['name' => 'page#apiSetProjectInfo', 'url' => '/api/projects/{projectid}/{passwd}', 'verb' => 'PUT'],
35		['name' => 'page#apiDeleteProject', 'url' => '/api/projects/{projectid}/{password}', 'verb' => 'DELETE'],
36		['name' => 'page#apiGetMembers', 'url' => '/api/projects/{projectid}/{password}/members', 'verb' => 'GET'],
37		['name' => 'page#apiAddMember', 'url' => '/api/projects/{projectid}/{password}/members', 'verb' => 'POST'],
38		['name' => 'page#apiv2AddMember', 'url' => '/apiv2/projects/{projectid}/{password}/members', 'verb' => 'POST'],
39		['name' => 'page#apiEditMember', 'url' => '/api/projects/{projectid}/{password}/members/{memberid}', 'verb' => 'PUT'],
40		['name' => 'page#apiDeleteMember', 'url' => '/api/projects/{projectid}/{password}/members/{memberid}', 'verb' => 'DELETE'],
41		['name' => 'page#apiGetBills', 'url' => '/api/projects/{projectid}/{password}/bills', 'verb' => 'GET'],
42		['name' => 'page#apiAddBill', 'url' => '/api/projects/{projectid}/{password}/bills', 'verb' => 'POST'],
43		['name' => 'page#apiRepeatBill', 'url' => '/api/projects/{projectid}/{password}/bills/{billid}/repeat', 'verb' => 'GET'],
44		['name' => 'page#apiEditBill', 'url' => '/api/projects/{projectid}/{password}/bills/{billid}', 'verb' => 'PUT'],
45		['name' => 'page#apiEditBills', 'url' => '/api/projects/{projectid}/{password}/bills', 'verb' => 'PUT'],
46		['name' => 'page#apiDeleteBill', 'url' => '/api/projects/{projectid}/{password}/bills/{billid}', 'verb' => 'DELETE'],
47		['name' => 'page#apiDeleteBills', 'url' => '/api/projects/{projectid}/{password}/bills', 'verb' => 'DELETE'],
48		['name' => 'page#apiv2GetBills', 'url' => '/apiv2/projects/{projectid}/{password}/bills', 'verb' => 'GET'],
49		['name' => 'page#apiv3GetBills', 'url' => '/apiv3/projects/{projectid}/{password}/bills', 'verb' => 'GET'],
50		['name' => 'page#apiGetProjectStatistics', 'url' => '/api/projects/{projectid}/{password}/statistics', 'verb' => 'GET'],
51		['name' => 'page#apiGetProjectSettlement', 'url' => '/api/projects/{projectid}/{password}/settle', 'verb' => 'GET'],
52		['name' => 'page#apiAutoSettlement', 'url' => '/api/projects/{projectid}/{password}/autosettlement', 'verb' => 'GET'],
53		['name' => 'page#apiAddCurrency', 'url' => '/api/projects/{projectid}/{password}/currency', 'verb' => 'POST'],
54		['name' => 'page#apiEditCurrency', 'url' => '/api/projects/{projectid}/{password}/currency/{currencyid}', 'verb' => 'PUT'],
55		['name' => 'page#apiDeleteCurrency', 'url' => '/api/projects/{projectid}/{password}/currency/{currencyid}', 'verb' => 'DELETE'],
56		['name' => 'page#apiAddPaymentMode', 'url' => '/api/projects/{projectid}/{password}/paymentmode', 'verb' => 'POST'],
57		['name' => 'page#apiEditPaymentMode', 'url' => '/api/projects/{projectid}/{password}/paymentmode/{pmid}', 'verb' => 'PUT'],
58		['name' => 'page#apiSavePaymentModeOrder', 'url' => '/api/projects/{projectid}/{password}/paymentmode-order', 'verb' => 'PUT'],
59		['name' => 'page#apiDeletePaymentMode', 'url' => '/api/projects/{projectid}/{password}/paymentmode/{pmid}', 'verb' => 'DELETE'],
60		['name' => 'page#apiAddCategory', 'url' => '/api/projects/{projectid}/{password}/category', 'verb' => 'POST'],
61		['name' => 'page#apiEditCategory', 'url' => '/api/projects/{projectid}/{password}/category/{categoryid}', 'verb' => 'PUT'],
62		['name' => 'page#apiSaveCategoryOrder', 'url' => '/api/projects/{projectid}/{password}/category-order', 'verb' => 'PUT'],
63		['name' => 'page#apiDeleteCategory', 'url' => '/api/projects/{projectid}/{password}/category/{categoryid}', 'verb' => 'DELETE'],
64		['name' => 'page#apiEditGuestAccessLevel', 'url' => '/api/projects/{projectid}/{password}/guest-access-level', 'verb' => 'PUT'],
65
66		// api for logged in clients
67		[
68			'name'         => 'page#preflighted_cors',
69			'url'          => '/api-priv/{path}',
70			'verb'         => 'OPTIONS',
71			'requirements' => ['path' => '.+']
72		],
73		['name' => 'page#apiPrivCreateProject', 'url' => '/api-priv/projects', 'verb' => 'POST'],
74		['name' => 'page#apiPrivGetProjectInfo', 'url' => '/api-priv/projects/{projectid}', 'verb' => 'GET'],
75		['name' => 'page#apiPrivSetProjectInfo', 'url' => '/api-priv/projects/{projectid}', 'verb' => 'PUT'],
76		['name' => 'page#apiPrivDeleteProject', 'url' => '/api-priv/projects/{projectid}', 'verb' => 'DELETE'],
77		['name' => 'page#apiPrivGetMembers', 'url' => '/api-priv/projects/{projectid}/members', 'verb' => 'GET'],
78		['name' => 'page#apiPrivAddMember', 'url' => '/api-priv/projects/{projectid}/members', 'verb' => 'POST'],
79		['name' => 'page#apiPrivEditMember', 'url' => '/api-priv/projects/{projectid}/members/{memberid}', 'verb' => 'PUT'],
80		['name' => 'page#apiPrivDeleteMember', 'url' => '/api-priv/projects/{projectid}/members/{memberid}', 'verb' => 'DELETE'],
81		['name' => 'page#apiPrivGetBills', 'url' => '/api-priv/projects/{projectid}/bills', 'verb' => 'GET'],
82		['name' => 'page#apiPrivAddBill', 'url' => '/api-priv/projects/{projectid}/bills', 'verb' => 'POST'],
83		['name' => 'page#apiPrivEditBill', 'url' => '/api-priv/projects/{projectid}/bills/{billid}', 'verb' => 'PUT'],
84		['name' => 'page#apiPrivDeleteBill', 'url' => '/api-priv/projects/{projectid}/bills/{billid}', 'verb' => 'DELETE'],
85		['name' => 'page#apiPrivGetProjectStatistics', 'url' => '/api-priv/projects/{projectid}/statistics', 'verb' => 'GET'],
86		['name' => 'page#apiPrivGetProjectSettlement', 'url' => '/api-priv/projects/{projectid}/settle', 'verb' => 'GET'],
87		['name' => 'page#apiPrivAutoSettlement', 'url' => '/api-priv/projects/{projectid}/autosettlement', 'verb' => 'GET'],
88		['name' => 'page#apiPrivAddCurrency', 'url' => '/api-priv/projects/{projectid}/currency', 'verb' => 'POST'],
89		['name' => 'page#apiPrivEditCurrency', 'url' => '/api-priv/projects/{projectid}/currency/{currencyid}', 'verb' => 'PUT'],
90		['name' => 'page#apiPrivDeleteCurrency', 'url' => '/api-priv/projects/{projectid}/currency/{currencyid}', 'verb' => 'DELETE'],
91		['name' => 'page#apiPrivAddPaymentMode', 'url' => '/api-priv/projects/{projectid}/paymentmode', 'verb' => 'POST'],
92		['name' => 'page#apiPrivEditPaymentMode', 'url' => '/api-priv/projects/{projectid}/paymentmode/{pmid}', 'verb' => 'PUT'],
93		['name' => 'page#apiPrivDeletePaymentMode', 'url' => '/api-priv/projects/{projectid}/paymentmode/{pmid}', 'verb' => 'DELETE'],
94		['name' => 'page#apiPrivAddCategory', 'url' => '/api-priv/projects/{projectid}/category', 'verb' => 'POST'],
95		['name' => 'page#apiPrivEditCategory', 'url' => '/api-priv/projects/{projectid}/category/{categoryid}', 'verb' => 'PUT'],
96		['name' => 'page#apiPrivDeleteCategory', 'url' => '/api-priv/projects/{projectid}/category/{categoryid}', 'verb' => 'DELETE'],
97
98		['name' => 'utils#getOptionsValues', 'url' => '/option-values', 'verb' => 'GET'],
99		['name' => 'utils#saveOptionValue', 'url' => '/option-value', 'verb' => 'PUT'],
100		['name' => 'utils#setAllowAnonymousCreation', 'url' => '/allow-anonymous-creation', 'verb' => 'PUT'],
101		['name' => 'page#addCurrency', 'url' => '/projects/{projectid}/currency', 'verb' => 'POST'],
102		['name' => 'page#editCurrency', 'url' => '/projects/{projectid}/currency/{currencyid}', 'verb' => 'PUT'],
103		['name' => 'page#deleteCurrency', 'url' => '/projects/{projectid}/currency/{currencyid}', 'verb' => 'DELETE'],
104		['name' => 'page#addPaymentMode', 'url' => '/projects/{projectid}/paymentmode', 'verb' => 'POST'],
105		['name' => 'page#editPaymentMode', 'url' => '/projects/{projectid}/paymentmode/{pmid}', 'verb' => 'PUT'],
106		['name' => 'page#savePaymentModeOrder', 'url' => '/projects/{projectid}/paymentmode-order', 'verb' => 'PUT'],
107		['name' => 'page#deletePaymentMode', 'url' => '/projects/{projectid}/paymentmode/{pmid}', 'verb' => 'DELETE'],
108		['name' => 'page#addCategory', 'url' => '/projects/{projectid}/category', 'verb' => 'POST'],
109		['name' => 'page#editCategory', 'url' => '/projects/{projectid}/category/{categoryid}', 'verb' => 'PUT'],
110		['name' => 'page#saveCategoryOrder', 'url' => '/projects/{projectid}/category-order', 'verb' => 'PUT'],
111		['name' => 'page#deleteCategory', 'url' => '/projects/{projectid}/category/{categoryid}', 'verb' => 'DELETE'],
112		['name' => 'page#addUserShare', 'url' => '/projects/{projectid}/user-share', 'verb' => 'POST'],
113		['name' => 'page#deleteUserShare', 'url' => '/projects/{projectid}/user-share/{shid}', 'verb' => 'DELETE'],
114		['name' => 'page#addGroupShare', 'url' => '/projects/{projectid}/group-share', 'verb' => 'POST'],
115		['name' => 'page#deleteGroupShare', 'url' => '/projects/{projectid}/group-share/{shid}', 'verb' => 'DELETE'],
116		['name' => 'page#addCircleShare', 'url' => '/projects/{projectid}/circle-share', 'verb' => 'POST'],
117		['name' => 'page#deleteCircleShare', 'url' => '/projects/{projectid}/circle-share/{shid}', 'verb' => 'DELETE'],
118		['name' => 'page#addPublicShare', 'url' => '/projects/{projectid}/public-share', 'verb' => 'POST'],
119		['name' => 'page#deletePublicShare', 'url' => '/projects/{projectid}/public-share/{shid}', 'verb' => 'DELETE'],
120		['name' => 'page#editShareAccessLevel', 'url' => '/projects/{projectid}/share-access-level/{shid}', 'verb' => 'PUT'],
121		['name' => 'page#editShareAccess', 'url' => '/projects/{projectid}/share-access/{shid}', 'verb' => 'PUT'],
122		['name' => 'page#editGuestAccessLevel', 'url' => '/projects/{projectid}/guest-access-level', 'verb' => 'PUT'],
123		['name' => 'page#getPublicFileShare', 'url' => '/getPublicFileShare', 'verb' => 'POST'],
124		['name' => 'page#importCsvProject', 'url' => '/import-csv-project', 'verb' => 'GET'],
125		['name' => 'page#importSWProject', 'url' => '/import-sw-project', 'verb' => 'GET'],
126		['name' => 'page#exportCsvProject', 'url' => '/export-csv-project/{projectid}', 'verb' => 'GET'],
127		['name' => 'page#exportCsvStatistics', 'url' => '/export-csv-statistics/{projectid}', 'verb' => 'GET'],
128		['name' => 'page#exportCsvSettlement', 'url' => '/export-csv-settlement/{projectid}', 'verb' => 'GET'],
129		['name' => 'page#webGetProjects', 'url' => '/projects', 'verb' => 'GET'],
130		['name' => 'page#webGetProjects2', 'url' => '/getProjects', 'verb' => 'POST'],
131		['name' => 'page#webCreateProject', 'url' => '/projects', 'verb' => 'POST'],
132		['name' => 'page#webEditProject', 'url' => '/projects/{projectid}', 'verb' => 'PUT'],
133		['name' => 'page#webDeleteProject', 'url' => '/projects/{projectid}', 'verb' => 'DELETE'],
134		['name' => 'page#webAddMember', 'url' => '/projects/{projectid}/members', 'verb' => 'POST'],
135		['name' => 'page#webEditMember', 'url' => '/projects/{projectid}/members/{memberid}', 'verb' => 'PUT'],
136		['name' => 'page#webGetBills', 'url' => '/projects/{projectid}/bills', 'verb' => 'GET'],
137		['name' => 'page#webAddBill', 'url' => '/projects/{projectid}/bills', 'verb' => 'POST'],
138		['name' => 'page#webRepeatBill', 'url' => '/projects/{projectid}/bills/{billid}/repeat', 'verb' => 'GET'],
139		['name' => 'page#webEditBill', 'url' => '/projects/{projectid}/bills/{billid}', 'verb' => 'PUT'],
140		['name' => 'page#webEditBills', 'url' => '/projects/{projectid}/bills', 'verb' => 'PUT'],
141		['name' => 'page#webDeleteBill', 'url' => '/projects/{projectid}/bills/{billid}', 'verb' => 'DELETE'],
142		['name' => 'page#webDeleteBills', 'url' => '/projects/{projectid}/bills', 'verb' => 'DELETE'],
143		['name' => 'page#webGetProjectInfo', 'url' => '/projects/{projectid}', 'verb' => 'GET'],
144		['name' => 'page#webGetProjectStatistics', 'url' => '/projects/{projectid}/statistics', 'verb' => 'GET'],
145		['name' => 'page#webGetProjectSettlement', 'url' => '/projects/{projectid}/settlement', 'verb' => 'GET'],
146		['name' => 'page#webAutoSettlement', 'url' => '/projects/{projectid}/auto-settlement', 'verb' => 'GET'],
147		['name' => 'page#webCheckPassword', 'url' => 'checkpassword/{projectid}/{password}', 'verb' => 'GET'],
148		['name' => 'page#pubLoginProjectPassword', 'url' => 'loginproject/{projectid}/{password}', 'verb' => 'GET'],
149		['name' => 'page#pubLoginProject', 'url' => 'loginproject/{projectid}', 'verb' => 'GET'],
150		['name' => 'page#pubLogin', 'url' => 'login', 'verb' => 'GET'],
151		['name' => 'page#pubProject', 'url' => 'project', 'verb' => 'POST'],
152		['name' => 'page#publicShareLinkPage', 'url' => 's/{token}', 'verb' => 'GET'],
153	]
154];
155