Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b4b55cb62 | ||
|
|
0cca597fdc | ||
|
|
709c6acbba | ||
|
|
ed2736e528 | ||
|
|
c7f5c73a9e | ||
|
|
c10af48954 | ||
|
|
7ac5c5585b | ||
|
|
8544ce0a18 | ||
|
|
614715822f | ||
|
|
1da02e2486 | ||
|
|
742b15116d | ||
|
|
e0ae74bdc2 | ||
|
|
08dc803b3e | ||
|
|
248a901f24 | ||
|
|
8bbdf9daf5 | ||
|
|
c089186046 | ||
|
|
2ae1fc3fcf | ||
|
|
d9eacf6f84 | ||
|
|
f262047476 | ||
|
|
b8390ac0d3 | ||
|
|
0d4a5470e5 | ||
|
|
845ca6e48e | ||
|
|
1cda2a81aa | ||
|
|
8e46ce1b04 | ||
|
|
9f797bf6b8 | ||
|
|
d345db927f | ||
|
|
11c2a1b72e | ||
|
|
eca7a81f9d | ||
|
|
62f2c80dda | ||
|
|
6f3d7e0f7d | ||
|
|
430c90cbca | ||
|
|
f02dfd8c9c | ||
|
|
a8fba73d99 | ||
|
|
669759461d | ||
|
|
db1b9a2c96 | ||
|
|
38814545c4 | ||
|
|
94c3654240 | ||
|
|
9fa249cc11 | ||
|
|
215c8d0fbb | ||
|
|
84dec4c0a2 | ||
|
|
d47ea1d659 | ||
|
|
3f41eebdf6 | ||
|
|
64e0b2444b | ||
|
|
18fede78f8 | ||
|
|
243d68ab59 | ||
|
|
62c1393f62 | ||
|
|
f0a8299133 | ||
|
|
e36f6da926 | ||
|
|
4a8c2a9fd9 | ||
|
|
248b2e4eca | ||
|
|
1d1ebd2176 | ||
|
|
4252f9a42b | ||
|
|
4fdeedab45 | ||
|
|
866a5be126 | ||
|
|
11d39af934 | ||
|
|
f706531534 | ||
|
|
a839eac4c1 | ||
|
|
581d28e9ce | ||
|
|
2ba39b8174 | ||
|
|
6af55a44c9 | ||
|
|
24badc39d7 | ||
|
|
f5e0baaab6 | ||
|
|
178c84ba60 | ||
|
|
713d40a876 | ||
|
|
9db1964038 | ||
|
|
1ca42055b0 | ||
|
|
c04bda7368 | ||
|
|
1f47843699 | ||
|
|
dca738db82 | ||
|
|
57f364ad0f | ||
|
|
a826153bb5 | ||
|
|
72bd22a707 | ||
|
|
cc73d80dbc | ||
|
|
f0a5b15442 | ||
|
|
eefe5630f4 | ||
|
|
b0ea771e6a | ||
|
|
eb21405a3d | ||
|
|
8ea10ef808 | ||
|
|
ac7da807bd | ||
|
|
3eafc597c6 | ||
|
|
f7a4126718 | ||
|
|
c6cf953ede | ||
|
|
d902202fe9 | ||
|
|
acc80920f9 | ||
|
|
53246af629 | ||
|
|
bd87e94472 | ||
|
|
7ccbb68ffa | ||
|
|
4a7fc7c534 | ||
|
|
f4343ae114 | ||
|
|
0da02dfeb5 | ||
|
|
5f13242cfa | ||
|
|
b492292642 | ||
|
|
ce8ba88b16 | ||
|
|
02b6df5e3b | ||
|
|
6cc4f2759d | ||
|
|
3ea92be722 | ||
|
|
42f8ae0c47 | ||
|
|
148b575767 | ||
|
|
605efacece | ||
|
|
1ccd7749d0 | ||
|
|
b3ba3c8de5 | ||
|
|
4a65b669bd | ||
|
|
aaec443140 | ||
|
|
3cdf1571c5 | ||
|
|
36b934e835 | ||
|
|
5027d0c919 | ||
|
|
f0baadd59f | ||
|
|
19cacebaa1 | ||
|
|
4d9d61455f | ||
|
|
fc87b3a8aa | ||
|
|
8e0936001d | ||
|
|
af8968a87e | ||
|
|
e6a18ce5d8 | ||
|
|
b5c24ef80a | ||
|
|
df7153a5ba | ||
|
|
d06c78119b | ||
|
|
bdb1a0074b | ||
|
|
c0de0e9d6b | ||
|
|
574b263a54 | ||
|
|
36ff5bb438 | ||
|
|
1beca924fc | ||
|
|
d605eca574 | ||
|
|
cea469c95a | ||
|
|
7e85c74e60 | ||
|
|
67d62eff70 | ||
|
|
8ebbd52a99 | ||
|
|
6d6cc501db | ||
|
|
ce999afbb3 | ||
|
|
cb34b030c8 | ||
|
|
e26034dfae | ||
|
|
0aad41fd0f | ||
|
|
5c67fe419f | ||
|
|
aca8be51dc | ||
|
|
fb1f0883e1 | ||
|
|
6446eb2e36 | ||
|
|
a1224ec2f4 | ||
|
|
07441c4ed1 | ||
|
|
cd100f1180 | ||
|
|
4fc66c72b8 | ||
|
|
a3ea5fee83 | ||
|
|
ef8d97c821 | ||
|
|
327a77edf4 | ||
|
|
d8abc8f87d | ||
|
|
325b35beb7 | ||
|
|
49364864d2 | ||
|
|
a19178a042 | ||
|
|
91d3332d4e | ||
|
|
bedbf21c29 | ||
|
|
75c19bcce4 | ||
|
|
458fe7399d | ||
|
|
2b6a8eedcc | ||
|
|
c0ed107f75 | ||
|
|
30dceff0b5 | ||
|
|
716929bd7b | ||
|
|
3d221f3379 | ||
|
|
6f1c160fbb | ||
|
|
9694695f00 | ||
|
|
1d43221b4d | ||
|
|
33b7c3e51a | ||
|
|
1e64bd63b8 | ||
|
|
bcbc2481c3 | ||
|
|
8288a1069c | ||
|
|
1b99523366 | ||
|
|
6d739cfebc | ||
|
|
20071166f8 | ||
|
|
c23168afc5 | ||
|
|
72704b7806 | ||
|
|
f7485f0767 | ||
|
|
975909b6a1 | ||
|
|
1468e43ce2 | ||
|
|
ee2af5091c | ||
|
|
0672a68e8b | ||
|
|
c8804bc8dc | ||
|
|
b92d1f0bdf | ||
|
|
cc10371346 | ||
|
|
ac60596218 | ||
|
|
f4b9d71d40 | ||
|
|
77b1c8ec78 | ||
|
|
01221d8282 | ||
|
|
47068e6d7e | ||
|
|
46bdeded78 | ||
|
|
eefa521fc5 | ||
|
|
ec1988715d | ||
|
|
c3fb2e8651 | ||
|
|
0fb279fc5f | ||
|
|
3e970d9cb9 | ||
|
|
8c10c07cc9 | ||
|
|
18a8513b40 | ||
|
|
4c77b78c6c | ||
|
|
bb249da477 | ||
|
|
eb16a4e6ce | ||
|
|
a2e525fa9e | ||
|
|
0bf19c9d33 | ||
|
|
5850bfbce7 | ||
|
|
fd51a5b119 | ||
|
|
140365c8bb | ||
|
|
c9ceac8533 | ||
|
|
4266b933f5 | ||
|
|
72ec62d042 | ||
|
|
d24b50f751 | ||
|
|
21f5e6d9cf | ||
|
|
73b91ccec9 | ||
|
|
0c809a19da | ||
|
|
3a6685c345 | ||
|
|
a60983f328 | ||
|
|
51c619b0c6 | ||
|
|
fe9daf1bf2 | ||
|
|
9c2d7140b4 | ||
|
|
1505464095 | ||
|
|
cc00fb2aed | ||
|
|
7f38cf2f7e | ||
|
|
d281dddbc1 | ||
|
|
267ec1bed1 | ||
|
|
a96f40cf13 | ||
|
|
d6190626ce | ||
|
|
ce8e6d0dab | ||
|
|
c13c2e2cab | ||
|
|
7380bc729b | ||
|
|
434a5049e2 | ||
|
|
6489706231 | ||
|
|
eb66b343ea | ||
|
|
e363f27da9 | ||
|
|
fbad5f767f | ||
|
|
94d9b347bf | ||
|
|
76744fd6c3 | ||
|
|
f5c1a34c29 | ||
|
|
22ad96bc8e | ||
|
|
8a749cffa3 | ||
|
|
cf5cf8d5eb | ||
|
|
eb14b7039b | ||
|
|
f09b1263c1 | ||
|
|
9ec8499d55 | ||
|
|
8d40cd6f9a | ||
|
|
ccffad3c7c | ||
|
|
4697c6b272 | ||
|
|
45e17e196c | ||
|
|
dcc81cbdc7 | ||
|
|
c5cb0a3bfe | ||
|
|
465f3ed027 | ||
|
|
80ff01f04e | ||
|
|
f6e4d851d3 | ||
|
|
cd4e3faea3 | ||
|
|
4cb9e68b33 | ||
|
|
0e7e79d205 | ||
|
|
a9ca7b41a7 | ||
|
|
3b3ed31bb7 | ||
|
|
cf9d5875ef | ||
|
|
4730eebdb4 | ||
|
|
b25ce9cb11 | ||
|
|
fdb98f1399 | ||
|
|
1dc758a3a3 | ||
|
|
032ce93d5e | ||
|
|
f8ced3b8f2 | ||
|
|
a81e239de8 | ||
|
|
9ea5a62577 | ||
|
|
af89a246db | ||
|
|
20c1973565 | ||
|
|
3555904423 | ||
|
|
a2dda5ea5b | ||
|
|
ce29cf9ccb | ||
|
|
e7481297c8 | ||
|
|
e3b38519fb | ||
|
|
d244c000c3 | ||
|
|
dcd57c7092 | ||
|
|
0a7e58fc01 | ||
|
|
bd7deaeded | ||
|
|
07a3ef6418 | ||
|
|
bffed6f5f3 | ||
|
|
bfec31f94b | ||
|
|
2123835aae | ||
|
|
11f06e8f53 | ||
|
|
6712368323 | ||
|
|
99fe659dbc | ||
|
|
357cfda46e | ||
|
|
9c85135a07 | ||
|
|
a8a47104dd | ||
|
|
2c0907c486 | ||
|
|
b1647b4ad1 | ||
|
|
0ae28af309 | ||
|
|
64d7e6f061 | ||
|
|
4f9a10402b | ||
|
|
5e8ec85943 | ||
|
|
20d6056e40 | ||
|
|
5be6bc0198 | ||
|
|
373aa7effb | ||
|
|
5282ee10ba | ||
|
|
06cba73a30 | ||
|
|
eab8394579 | ||
|
|
b88c2742e8 | ||
|
|
4ea5eeb942 | ||
|
|
e41b226529 | ||
|
|
7cb248a112 | ||
|
|
dfa0441266 | ||
|
|
d9dbd7dede | ||
|
|
3b8463e37f | ||
|
|
0e8b527ee4 | ||
|
|
86fb8bb700 | ||
|
|
6fbf7f271d | ||
|
|
fe5ebdc203 | ||
|
|
c6dbc0728f | ||
|
|
a0b1dcb3e3 | ||
|
|
38c4c32f07 | ||
|
|
b6beb9622b | ||
|
|
db80dad15f | ||
|
|
cf370a8035 | ||
|
|
0778776f00 | ||
|
|
ee55c23cde | ||
|
|
1f50c83f93 | ||
|
|
85f7bd1fc9 | ||
|
|
8f53e80ede | ||
|
|
2a1a730a8c | ||
|
|
7bb67b0470 | ||
|
|
1065973b33 | ||
|
|
1d05550cd3 | ||
|
|
2cc12c23cd | ||
|
|
b09ada0bc4 | ||
|
|
43dfac836a | ||
|
|
d1871f1420 | ||
|
|
08a1538ed6 | ||
|
|
f2fc4f6f18 | ||
|
|
503fd50c61 | ||
|
|
1d6df82c1c | ||
|
|
3fda0f9912 | ||
|
|
decc571307 | ||
|
|
ef237b5e87 | ||
|
|
828c177a57 | ||
|
|
c79219eb00 | ||
|
|
6995c3d1bc | ||
|
|
7436584598 | ||
|
|
06421beb6b | ||
|
|
7de4b96074 | ||
|
|
ea69c64fad | ||
|
|
652b89d23d | ||
|
|
bc4b7bde15 | ||
|
|
a5b674286a | ||
|
|
18bf7aa013 | ||
|
|
bf8262b64f | ||
|
|
fdb073f17f | ||
|
|
20fcd4ac16 | ||
|
|
0f7d76d96d | ||
|
|
324f2c856f | ||
|
|
84f203939c | ||
|
|
368501a8ce | ||
|
|
d9a36e4050 | ||
|
|
a5019efbda | ||
|
|
b16a07fdbb | ||
|
|
ca02fd3436 | ||
|
|
65283b8ad7 | ||
|
|
ad53041bfd | ||
|
|
b11b38a95b | ||
|
|
ba9c4d3b9f | ||
|
|
ded497b3d8 | ||
|
|
2fd3ce4877 | ||
|
|
64fc70a0a8 | ||
|
|
42acf26ee1 | ||
|
|
fe6eae862f | ||
|
|
eedde6c6d7 | ||
|
|
2782afde2e | ||
|
|
484529660b | ||
|
|
fbe700a4db | ||
|
|
6225c4b072 | ||
|
|
300a37fce3 | ||
|
|
c43618351e | ||
|
|
b3225c8d8b | ||
|
|
0f96247bf3 | ||
|
|
4703e07951 | ||
|
|
7ddda9ab03 | ||
|
|
4e9575cd87 | ||
|
|
ef82a95feb | ||
|
|
fd4ec3dda2 | ||
|
|
1616bd431a | ||
|
|
334a7a4401 | ||
|
|
22dd9f9c07 | ||
|
|
5684da1bc7 | ||
|
|
69cd039322 | ||
|
|
0dc7f813a8 | ||
|
|
a828e9bc25 | ||
|
|
8d2e71aaf3 | ||
|
|
721e2670dd | ||
|
|
b03500d2d1 | ||
|
|
ed9ebc2ac8 | ||
|
|
64beb38bae | ||
|
|
e13bbae01f | ||
|
|
5ba0f5f9ba | ||
|
|
bb5f1db1b3 | ||
|
|
cb63d10415 | ||
|
|
4183c3928c | ||
|
|
28bae85b2a | ||
|
|
f2db92de09 | ||
|
|
a41334f513 | ||
|
|
175fb3a35f | ||
|
|
8e6b29810a | ||
|
|
21e9b2c80f | ||
|
|
989d04167a | ||
|
|
286127c390 | ||
|
|
2ba87a4850 | ||
|
|
6658af814b | ||
|
|
2abd6d04e9 | ||
|
|
3107779b74 | ||
|
|
61a09dce87 | ||
|
|
a02ed69108 | ||
|
|
9b69aadca4 | ||
|
|
6204fb50f9 | ||
|
|
0a6a8aeab2 | ||
|
|
7c21b6463d | ||
|
|
d97cfda0ea | ||
|
|
aad5d77f41 | ||
|
|
3b132cad95 | ||
|
|
ab957092bd | ||
|
|
b8f65f242f | ||
|
|
688cb0a664 | ||
|
|
6eb4171fea | ||
|
|
ddba27a1be | ||
|
|
933b18b988 | ||
|
|
18c6852865 | ||
|
|
77403965f8 | ||
|
|
a3e2765ad4 | ||
|
|
787db994dd | ||
|
|
f8f603a38e | ||
|
|
31a7224272 | ||
|
|
492c81e27c | ||
|
|
45bfb1525a | ||
|
|
71ffa20811 | ||
|
|
a466c6291c | ||
|
|
9606d3b11d | ||
|
|
03b7fcd1b1 | ||
|
|
3d0f0f3391 | ||
|
|
e3257465a0 | ||
|
|
0c21f6e3a1 | ||
|
|
f1e5cacd0c | ||
|
|
a8d5320ae5 | ||
|
|
95ac0d3a2c | ||
|
|
1ed27dd467 | ||
|
|
c4bb7bbb8b | ||
|
|
c09b7ebe76 | ||
|
|
166ed6b92b | ||
|
|
8e528f3eae | ||
|
|
160772b832 | ||
|
|
c8a5c3969d | ||
|
|
bb98df9e73 | ||
|
|
fe3719530a | ||
|
|
603f497bef | ||
|
|
ee16db8ecc | ||
|
|
c5c33d3cf7 | ||
|
|
da05c5adb7 | ||
|
|
707cf67d5c | ||
|
|
09fa186028 | ||
|
|
5e6b340f8c | ||
|
|
04e47a2e6d | ||
|
|
572f5027d6 | ||
|
|
235e0268c2 | ||
|
|
65d639853b | ||
|
|
e856bbffec | ||
|
|
3ee5b789ce | ||
|
|
7f5722ff75 | ||
|
|
50b596af39 | ||
|
|
af06c4d81e | ||
|
|
41ed692299 | ||
|
|
31214f0af0 | ||
|
|
aceaa6b957 | ||
|
|
cd0e0f0e61 | ||
|
|
0db6b5269d | ||
|
|
3fb1eb9644 | ||
|
|
76dfcd70d1 | ||
|
|
b13abe0d30 | ||
|
|
270e5b970f | ||
|
|
5dac3211ff | ||
|
|
4d91fc8ead | ||
|
|
893ed1bda5 | ||
|
|
90ebec84bf | ||
|
|
bdf2a787d6 | ||
|
|
f8c254607d | ||
|
|
20eb92891a | ||
|
|
4cfe906f55 | ||
|
|
184ea1ca6c | ||
|
|
ae3657e7aa | ||
|
|
54de2e5674 | ||
|
|
eef436d44b | ||
|
|
b7aeb11801 | ||
|
|
d52ceb8513 | ||
|
|
1504f1b116 | ||
|
|
78462f3ae4 | ||
|
|
6ff6ce9b48 | ||
|
|
bc7c0280f2 | ||
|
|
f1c123a840 | ||
|
|
e40c6b6bac | ||
|
|
8a1ec91b9e | ||
|
|
f7ff9f0a3b | ||
|
|
16cfcaf41f | ||
|
|
86fb092c22 | ||
|
|
c5a1271798 | ||
|
|
5ea12f5342 | ||
|
|
44c4b7656f | ||
|
|
24ac681365 | ||
|
|
c2263b8c98 | ||
|
|
cbf3c2d2b9 | ||
|
|
00a8723347 | ||
|
|
ab31cd6dbb | ||
|
|
3261ed8414 | ||
|
|
f53b99ad94 | ||
|
|
0399cb4bb4 | ||
|
|
30ed01e717 | ||
|
|
5965c5d72d | ||
|
|
5f36939833 | ||
|
|
c343b52b57 | ||
|
|
d9813a3fe2 | ||
|
|
c8aba05bc1 | ||
|
|
08ecd237b4 | ||
|
|
9d608bc967 | ||
|
|
dbc195c31d | ||
|
|
aaae6c9536 | ||
|
|
6c40810caf | ||
|
|
70080086da | ||
|
|
c1b66a81cc | ||
|
|
6d4066be1c | ||
|
|
bea7e5697b | ||
|
|
59a6297925 | ||
|
|
0cbc3e9aa5 | ||
|
|
a4c2b4e95a | ||
|
|
22fcb5cd0e | ||
|
|
a71bde3211 | ||
|
|
8bf957b273 | ||
|
|
5875371d13 | ||
|
|
93cac644a1 | ||
|
|
eeccacb2a7 | ||
|
|
690e114d38 | ||
|
|
4dd00cd7a2 | ||
|
|
acdff75311 | ||
|
|
5b94c9407b | ||
|
|
206b487fa2 | ||
|
|
72df2244ca | ||
|
|
55f8f25fd7 | ||
|
|
c73e459d26 | ||
|
|
2aded0812a | ||
|
|
e93d3f30d2 | ||
|
|
ae5cb7c65f | ||
|
|
feb9aac4f7 | ||
|
|
86eec9a51e | ||
|
|
f2e2b9a8f4 | ||
|
|
7bd940de37 | ||
|
|
c95fd3a23c | ||
|
|
99a85878cd | ||
|
|
1dffbe16c4 | ||
|
|
ad9637ebd2 | ||
|
|
0253cfc676 | ||
|
|
15250ad227 | ||
|
|
ca78e8e5f3 | ||
|
|
ab8923bb77 | ||
|
|
0f37bdc288 | ||
|
|
cdbc976b8a | ||
|
|
288627243b | ||
|
|
ebe1299089 | ||
|
|
3adf5957f0 | ||
|
|
eba33d0735 | ||
|
|
def45b1c23 | ||
|
|
38481334c7 | ||
|
|
dce2207243 | ||
|
|
5bfd2743be | ||
|
|
38acbdefa0 | ||
|
|
64292e8761 | ||
|
|
5001cd1811 | ||
|
|
cef53d8ebd | ||
|
|
ca64f2b047 | ||
|
|
ed13f7a8d4 | ||
|
|
2b905df478 | ||
|
|
d9ed1ff9de | ||
|
|
1c647bb78b | ||
|
|
39d4ba0284 | ||
|
|
8a5e6bc302 | ||
|
|
e7220f4f29 | ||
|
|
54bada14f5 | ||
|
|
2258a609e6 | ||
|
|
b98cef0caa | ||
|
|
0813bfc0f0 | ||
|
|
4420d76cd2 | ||
|
|
b9ddc585db | ||
|
|
c38a4379bd | ||
|
|
e09e23025d | ||
|
|
4c32eae49a | ||
|
|
0d3c2d70bf | ||
|
|
fd830deda9 | ||
|
|
f4952f16e6 | ||
|
|
300942f1c8 | ||
|
|
9cfb19a3ba | ||
|
|
6925b47a5b | ||
|
|
a842edea97 | ||
|
|
d30393b609 | ||
|
|
7c7895f776 | ||
|
|
e4fefab576 | ||
|
|
837c49a589 | ||
|
|
98b3943919 | ||
|
|
5f83042317 | ||
|
|
0b18433fdf | ||
|
|
7d450e285e | ||
|
|
d30a006457 | ||
|
|
d4d162d38a | ||
|
|
218cf10ee3 | ||
|
|
b6454e5d36 | ||
|
|
56685d7bf3 | ||
|
|
40ded9ed95 | ||
|
|
0b672e13a6 | ||
|
|
39d745e079 | ||
|
|
c23bfb6d2f | ||
|
|
d7296e67d9 | ||
|
|
12205eefe8 | ||
|
|
33fbf6d90d | ||
|
|
b21d0ce708 | ||
|
|
7a4463c1b3 | ||
|
|
69eefdd572 | ||
|
|
e3f771a36c | ||
|
|
5c51601c62 | ||
|
|
a1bde3f51e | ||
|
|
17d855d04f | ||
|
|
f51b054cf5 | ||
|
|
e385cd3e95 | ||
|
|
a7328809c8 | ||
|
|
074ec3ac36 | ||
|
|
55a5ce453a | ||
|
|
2ba7451669 | ||
|
|
0fcb38b607 | ||
|
|
07867fd811 | ||
|
|
9a3844d57c | ||
|
|
d3239bb64e | ||
|
|
02df12cb81 | ||
|
|
ff2d9788bf | ||
|
|
ebf7e820d5 | ||
|
|
98f3188a98 | ||
|
|
dc79352f40 | ||
|
|
d267fb0f09 | ||
|
|
8465ee794d | ||
|
|
2a8e8986e6 | ||
|
|
92d79b867a | ||
|
|
a83b850aba | ||
|
|
16c9cd9931 | ||
|
|
2a0a3468c1 | ||
|
|
745e68aa4f | ||
|
|
22f856c62a | ||
|
|
9e9372db05 | ||
|
|
45b7250480 | ||
|
|
653680376a | ||
|
|
c5cd42be7f | ||
|
|
ba23ad6e8f | ||
|
|
551161b692 | ||
|
|
368e03ce48 | ||
|
|
0dc1581eb4 | ||
|
|
b42a1a69a0 | ||
|
|
0d825fb45a | ||
|
|
b0ed00cb0c | ||
|
|
2ba9c30b85 | ||
|
|
b7fa5540e5 | ||
|
|
fcf9924adc | ||
|
|
a292c8a277 | ||
|
|
6208f0ee1c | ||
|
|
b4ef513ff4 | ||
|
|
95063d2a70 | ||
|
|
a4654398d0 | ||
|
|
f148b39a85 | ||
|
|
76729f1b99 | ||
|
|
482a17f093 | ||
|
|
416eba7de5 | ||
|
|
2a9ed5af0f | ||
|
|
4c81cfd0fe | ||
|
|
5a29683fe8 | ||
|
|
7fc70184df | ||
|
|
6fdc8d466e | ||
|
|
4a5dd3a83f | ||
|
|
228efb74fb | ||
|
|
c714af6c9e | ||
|
|
28b571e2e6 | ||
|
|
8c9388546b | ||
|
|
40171d9719 | ||
|
|
48a74ad34d | ||
|
|
ac164a5e81 | ||
|
|
de89c4d635 | ||
|
|
219f739b54 | ||
|
|
b547a8b029 | ||
|
|
3752fdec4c | ||
|
|
60f6cbee84 | ||
|
|
6b928cfce7 | ||
|
|
90acf50b55 | ||
|
|
da2cbee987 | ||
|
|
7c55beae42 | ||
|
|
f04f79e3da | ||
|
|
db42f9ef95 | ||
|
|
b3772293f3 | ||
|
|
6cc5dc2210 | ||
|
|
979b0f8fac | ||
|
|
bd4a90cdaa | ||
|
|
6aa04eb951 | ||
|
|
425c2c9142 | ||
|
|
2ecae070a2 |
@@ -0,0 +1,223 @@
|
||||
{
|
||||
"version": 1,
|
||||
"snapshot_of": "backend-php",
|
||||
"projects": {
|
||||
"backend-php": {
|
||||
"display_name": "Copenhagen Truck Wash API",
|
||||
"relative_root": ".",
|
||||
"commands": {
|
||||
"setup": {
|
||||
"default": "./scripts/setup.sh",
|
||||
"win32": "powershell -ExecutionPolicy Bypass -File .\\scripts\\setup.ps1"
|
||||
},
|
||||
"run": {
|
||||
"default": "docker compose up -d traefik redis mysql-debug php1 caddy"
|
||||
},
|
||||
"test_unit": {
|
||||
"default": "docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:unit\""
|
||||
},
|
||||
"test_e2e": {
|
||||
"default": ""
|
||||
},
|
||||
"test_full": {
|
||||
"default": ""
|
||||
},
|
||||
"debug": {
|
||||
"default": "docker compose logs -f --tail=200 php1"
|
||||
}
|
||||
},
|
||||
"codex_environment": {
|
||||
"name": "api",
|
||||
"actions": [
|
||||
{
|
||||
"name": "Start API",
|
||||
"icon": "run",
|
||||
"command_id": "run"
|
||||
},
|
||||
{
|
||||
"name": "Stop API",
|
||||
"icon": "run",
|
||||
"literal_command": {
|
||||
"default": "docker compose down"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "PHP logs",
|
||||
"icon": "debug",
|
||||
"command_id": "debug"
|
||||
},
|
||||
{
|
||||
"name": "PHP unit tests",
|
||||
"icon": "test",
|
||||
"command_id": "test_unit"
|
||||
},
|
||||
{
|
||||
"name": "AI workflow check",
|
||||
"icon": "debug",
|
||||
"literal_command": {
|
||||
"default": "node scripts/sync-ai-workflow.mjs --check"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"generated_content": {
|
||||
"aiassistant_tests_lines": [
|
||||
"# Backend PHP Testing Rules",
|
||||
"",
|
||||
"These rules apply to `services/nginx/app/tests` and any backend change that needs verification.",
|
||||
"",
|
||||
"1. Add or update tests for every new feature, bug fix, API contract change, or search or authentication workflow change.",
|
||||
"2. Run backend verification in the `php1` container. Do not use host-side PHP for the supported workflow.",
|
||||
"3. Use `docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:unit\"` for unit coverage.",
|
||||
"4. Use `docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:integration\"` when code depends on Redis, MySQL, or environment-backed configuration.",
|
||||
"5. Use `docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:api\"` when route behavior, envelopes, or request parsing changes.",
|
||||
"6. Keep tests deterministic: no live third-party calls, no shared Redis keys, no broad database cleanup, and no sleeps unless time behavior is the thing under test.",
|
||||
"7. Prefer narrow fixtures, explicit cleanup, and behavior-level assertions over implementation checks.",
|
||||
"8. When public routes, schemas, or permissions change, update `openapi.yaml` together with the tests.",
|
||||
"9. Run the narrowest relevant suite first, then the broader suite that matches the risk before you finish the task.",
|
||||
"",
|
||||
"Canonical workflow reference: `.ai-workflow/workflow.md`."
|
||||
],
|
||||
"aiassistant_routes_lines": [
|
||||
"# Backend Route Rules",
|
||||
"",
|
||||
"These rules apply to files under `services/nginx/app/routes` and the classes they call.",
|
||||
"",
|
||||
"1. Keep route handlers thin: validate input, enforce permissions, call domain code, and write the response.",
|
||||
"2. Default to protected endpoints. Use the existing authentication and permission helpers instead of ad hoc access checks.",
|
||||
"3. Add or update backend tests in the `php1` container whenever route behavior changes.",
|
||||
"4. Update `openapi.yaml` whenever paths, parameters, request bodies, response envelopes, or permissions change.",
|
||||
"5. Prefer deterministic route tests and avoid live external integrations in route coverage.",
|
||||
"6. Use concise API errors and keep sensitive implementation details out of the response body.",
|
||||
"7. When a change touches department, order, or subuser authorization, cover both the allow path and the deny path.",
|
||||
"",
|
||||
"Canonical workflow reference: `.ai-workflow/workflow.md`."
|
||||
],
|
||||
"junie_lines": [
|
||||
"# Copenhagen Truck Wash API Development Guidelines",
|
||||
"",
|
||||
"This file is generated from the canonical AI workflow and is the supported Junie-facing reference for the backend repository.",
|
||||
"",
|
||||
"## Build And Run",
|
||||
"",
|
||||
"- Project root: `services/nginx/app` is the effective PHP application root.",
|
||||
"- Setup: use `./scripts/setup.sh` on POSIX or `powershell -ExecutionPolicy Bypass -File .\\scripts\\setup.ps1` on Windows.",
|
||||
"- Start local API stack: `docker compose up -d traefik redis mysql-debug php1 caddy`.",
|
||||
"- Tail logs with `docker compose logs -f --tail=200 php1`.",
|
||||
"",
|
||||
"## Testing",
|
||||
"",
|
||||
"- Supported backend validation runs in `php1`.",
|
||||
"- Unit tests: `docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:unit\"`.",
|
||||
"- Integration tests: `docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:integration\"`.",
|
||||
"- API tests: `docker compose exec -T php1 sh -lc \"cd /var/www/html && composer test:api\"`.",
|
||||
"- Prefer the narrowest suite that proves the change, then run the broader suite that matches the risk.",
|
||||
"",
|
||||
"## Workflow Notes",
|
||||
"",
|
||||
"- Generated assistant metadata is checked with `node scripts/sync-ai-workflow.mjs --check`.",
|
||||
"- Route and schema changes require matching updates to `openapi.yaml`.",
|
||||
"- Runtime OpenAI product behavior is out of scope for this workflow bundle unless a task explicitly changes product code.",
|
||||
"",
|
||||
"Canonical workflow reference: `.ai-workflow/workflow.md`."
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"assistants": {
|
||||
"codex": {
|
||||
"description": "Codex environment files and actions."
|
||||
},
|
||||
"aiassistant": {
|
||||
"description": "Project-specific AI Assistant rules."
|
||||
},
|
||||
"junie": {
|
||||
"description": "Project-specific Junie guidance."
|
||||
},
|
||||
"copilot": {
|
||||
"description": "Standardized Copilot task dispatch workflow."
|
||||
}
|
||||
},
|
||||
"commands": {
|
||||
"setup": {
|
||||
"description": "Install dependencies and prepare the supported local environment."
|
||||
},
|
||||
"run": {
|
||||
"description": "Start the primary local development entrypoint for the project."
|
||||
},
|
||||
"test_unit": {
|
||||
"description": "Run the project's narrow unit-style verification command."
|
||||
},
|
||||
"test_e2e": {
|
||||
"description": "Run the project's targeted browser or end-to-end verification command."
|
||||
},
|
||||
"test_full": {
|
||||
"description": "Run the broader high-confidence verification command when the project defines one."
|
||||
},
|
||||
"debug": {
|
||||
"description": "Run the supported debug entrypoint."
|
||||
}
|
||||
},
|
||||
"generated_outputs": [
|
||||
{
|
||||
"id": "backend_codex_environment",
|
||||
"template": "codex_project_environment",
|
||||
"project": "backend-php",
|
||||
"path": ".codex/environments/environment.toml"
|
||||
},
|
||||
{
|
||||
"id": "backend_aiassistant_tests",
|
||||
"template": "aiassistant_backend_tests_rule",
|
||||
"project": "backend-php",
|
||||
"path": ".aiassistant/rules/Creating and maintaining tests.md"
|
||||
},
|
||||
{
|
||||
"id": "backend_aiassistant_routes",
|
||||
"template": "aiassistant_backend_routes_rule",
|
||||
"project": "backend-php",
|
||||
"path": ".aiassistant/rules/Creating and securing routes.md"
|
||||
},
|
||||
{
|
||||
"id": "backend_junie_guidelines",
|
||||
"template": "junie_backend_guidelines",
|
||||
"project": "backend-php",
|
||||
"path": ".junie/guidelines.md"
|
||||
},
|
||||
{
|
||||
"id": "backend_copilot_workflow",
|
||||
"template": "copilot_dispatcher_workflow",
|
||||
"project": "backend-php",
|
||||
"path": ".github/workflows/copilot.yml"
|
||||
}
|
||||
],
|
||||
"sync_targets": {
|
||||
"backend-php": {
|
||||
"source_root": ".",
|
||||
"destination": "C:\\Users\\2jepp\\PhpstormProjects\\api",
|
||||
"supported_metadata_dirs": [
|
||||
".codex",
|
||||
".aiassistant",
|
||||
".junie",
|
||||
".github",
|
||||
".ai-workflow",
|
||||
"scripts"
|
||||
]
|
||||
}
|
||||
},
|
||||
"copilot": {
|
||||
"workflow_name": "Copilot Task Dispatcher",
|
||||
"input_description": "The task description for Copilot",
|
||||
"issue_label": "copilot-task",
|
||||
"title_prefix": "Copilot Task:",
|
||||
"body_lines": [
|
||||
"Assigned to Copilot by @{{ACTOR}}.",
|
||||
"",
|
||||
"Task",
|
||||
"{{TASK}}",
|
||||
"",
|
||||
"AI workflow notes",
|
||||
"- Generated assistant metadata is synchronized from the canonical AI workflow bundle.",
|
||||
"- Run `node scripts/sync-ai-workflow.mjs --check` if assistant metadata changed."
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<!-- AUTOGENERATED SNAPSHOT for backend-php: refresh from the canonical workspace with `node scripts/sync-ai-workflow.mjs --write`. -->
|
||||
|
||||
# Developer AI Workflow
|
||||
|
||||
This directory is the canonical source of truth for the repository's developer-facing AI workflow.
|
||||
|
||||
## Goals
|
||||
|
||||
- Keep Codex, AI Assistant, Junie, and Copilot aligned from one maintained source.
|
||||
- Make assistant metadata deterministic so the generated files can be rewritten safely and checked in CI.
|
||||
- Preserve the current mirror-repo workflow for `backend-php` and `front-end-vue`.
|
||||
- Keep all changes in this workflow scoped to developer tooling and documentation. Runtime OpenAI features stay out of scope.
|
||||
|
||||
## Supported Assistants
|
||||
|
||||
- `Codex`: local environments and actions under `.codex/environments`.
|
||||
- `AI Assistant`: generated guidance under `.aiassistant/rules`.
|
||||
- `Junie`: generated project guidance under `.junie/guidelines.md`.
|
||||
- `Copilot`: standardized issue-dispatch workflow content under `.github/workflows/copilot.yml`.
|
||||
|
||||
## Global Rules
|
||||
|
||||
1. Change only `.ai-workflow/workflow.md` and `.ai-workflow/manifest.json` when updating the developer AI workflow.
|
||||
2. Regenerate all derived files with `node scripts/sync-ai-workflow.mjs --write`.
|
||||
3. Validate drift with `node scripts/sync-ai-workflow.mjs --check`.
|
||||
4. Generated assistant files are not hand-edited.
|
||||
5. Unsupported surfaces stay unsupported until they have a real owner and a real config.
|
||||
6. `front-end-vue/.ai/mcp/mcp.json` is intentionally unsupported and should not be recreated until there is an actual MCP integration to maintain.
|
||||
|
||||
## Command Matrix
|
||||
|
||||
### `backend-php`
|
||||
|
||||
- Setup: use the existing setup scripts in `backend-php/scripts`.
|
||||
- Run: start the API stack with `traefik`, `redis`, `mysql-debug`, `php1`, and `caddy`.
|
||||
- Debug: tail `php1` logs.
|
||||
- PHP verification: always run backend validation in the `php1` container.
|
||||
- Unit tests: `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:unit"`.
|
||||
- Integration tests: `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:integration"`.
|
||||
- API tests: `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:api"`.
|
||||
|
||||
### `front-end-vue`
|
||||
|
||||
- Setup: `npm ci` and `npx playwright install`.
|
||||
- Run: `npm run dev`.
|
||||
- Unit tests: `npm run test:unit` with Vitest.
|
||||
- Browser smoke: `npm run test:e2e:smoke`.
|
||||
- Browser full suite: `npm run test:e2e:ci`.
|
||||
- Debug: `npx playwright test --debug`.
|
||||
- Browser validation is Playwright-first. WebdriverIO and Appium are not part of the supported workflow.
|
||||
|
||||
### `automation`
|
||||
|
||||
- Setup: `npm ci` and `npx playwright install`.
|
||||
- Run: `npx playwright test --ui`.
|
||||
- Browser tests: `npx playwright test`.
|
||||
- Debug: `npx playwright test --debug`.
|
||||
|
||||
## Mirror Repos And Sync
|
||||
|
||||
- `backend-php` mirrors to `C:\Users\2jepp\PhpstormProjects\api`.
|
||||
- `front-end-vue` mirrors to `C:\Users\2jepp\WebstormProjects\pleno-vue`.
|
||||
- Supported metadata directories that must stay mirrored are `.codex`, `.aiassistant`, `.junie`, `.github`, generated `.ai-workflow`, and `scripts/sync-ai-workflow.mjs`.
|
||||
- Cache and build directories remain excluded from the watcher.
|
||||
- The mirror repos receive generated snapshots of `.ai-workflow` and `scripts/sync-ai-workflow.mjs` so their local CI can run `--check` without depending on the combined workspace root.
|
||||
|
||||
## Generated Outputs
|
||||
|
||||
- Root Codex environment for combined backend and frontend entrypoints.
|
||||
- Backend and frontend Codex environments.
|
||||
- Backend and frontend AI Assistant guidance.
|
||||
- Backend and frontend Junie guidance.
|
||||
- Backend Copilot dispatcher workflow.
|
||||
- Backend and frontend snapshot copies of `.ai-workflow` plus `scripts/sync-ai-workflow.mjs` for mirrored repositories.
|
||||
@@ -2,261 +2,20 @@
|
||||
apply: always
|
||||
---
|
||||
|
||||
### Creating and maintaining tests — Rules (Project‑specific)
|
||||
<!-- AUTOGENERATED: Run `node scripts/sync-ai-workflow.mjs --write`. -->
|
||||
|
||||
These rules apply to all tests under `services/nginx/app/tests` for the Copenhagen Truck Wash API. They codify how to create, run, and maintain the lightweight CLI PHP tests used in this repository.
|
||||
# Backend PHP Testing Rules
|
||||
|
||||
1. Scope and philosophy
|
||||
- Prefer fast, deterministic CLI scripts over framework‑based tests.
|
||||
- Keep unit‑style tests isolated from I/O (no DB/Redis/files/network). Use test doubles and explicit `require_once` for only the code exercised.
|
||||
- Use integration tests sparingly and only when configuration/globals are required. Run them in Docker with `USE_ENV=true`.
|
||||
These rules apply to `services/nginx/app/tests` and any backend change that needs verification.
|
||||
|
||||
2. Location and naming
|
||||
- Place tests in `services/nginx/app/tests/<domain>/YourTest.php` where `<domain>` reflects the feature area (e.g., `subusers`, `orders`, `redis`).
|
||||
- File names must end with `Test.php` (e.g., `SelfservePermissionInitTest.php`).
|
||||
- Keep one coherent scenario per file. If a file grows beyond ~150 lines or mixes unrelated scenarios, split it.
|
||||
|
||||
3. Execution modes
|
||||
- Unit‑style (preferred): run on host with PHP CLI.
|
||||
- Command: `php services/nginx/app/tests/<domain>/<Name>Test.php`
|
||||
- Integration‑style (needs env/globals): run inside Docker (php1) where `USE_ENV=true` and env vars are provided by `docker-compose.yml`.
|
||||
- Start minimal stack: `docker compose up -d traefik redis php1 caddy`
|
||||
- Command: `docker compose exec -T php1 php /var/www/html/tests/<domain>/<Name>Test.php`
|
||||
|
||||
4. Bootstrapping and includes
|
||||
- At the top of every test, define `WD` if not already defined:
|
||||
```php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
```
|
||||
- For unit‑style tests: include only the files you exercise via explicit `require_once WD . '/path/to/file.php';`.
|
||||
- Do NOT include `config.php` for unit‑style tests; it throws if `USE_ENV` is not set.
|
||||
- For integration‑style tests that need globals (`$CONFIG_DB`, `$REDIS_CONFIG`, etc.): `require_once WD . '/config.php';` and run the test inside `php1`.
|
||||
|
||||
5. Output and exit codes
|
||||
- Use simple helpers for human‑readable output:
|
||||
```php
|
||||
function ok($message){ echo "\n\033[32m✔ $message\033[0m\n"; }
|
||||
function fail($message){ echo "\n\033[31m✖ $message\033[0m\n"; }
|
||||
```
|
||||
- Prefer collecting failures and exiting non‑zero when any assertion fails:
|
||||
```php
|
||||
$failed = 0;
|
||||
// ... on failure set $failed = 1;
|
||||
exit($failed);
|
||||
```
|
||||
- End with a concise completion line, e.g., `echo "\n<Name>Test completed.\n";`.
|
||||
|
||||
6. Determinism, time, and randomness
|
||||
- Avoid `sleep()` and real time dependencies. If time is relevant, pass it as a parameter or stub the time source.
|
||||
- Do not use random values unless strictly necessary; if used, seed explicitly (`mt_srand(1234)`) and document it.
|
||||
|
||||
7. External I/O and side effects
|
||||
- Never call external services (Stripe, e‑conomic, MinIO, Slack, WordPress) from tests. Stub or override code paths as shown in `tests/subusers/SelfservePermissionInitTest.php`.
|
||||
- Do not modify files under the repository during tests. If temporary files are required, use `sys_get_temp_dir()` and delete them before exit.
|
||||
|
||||
8. Redis and database (integration‑only)
|
||||
- Run inside Docker (`php1`) so `config.php` can populate `$REDIS_CONFIG` and `$CONFIG_DB`.
|
||||
- Use unique, namespaced Redis keys for test data (e.g., `test:<feature>:<uuid>`). Clean them up at the end. Do NOT call `FLUSHALL`.
|
||||
- Prefer fakes/stubs over real DB writes. If DB writes are unavoidable, scope them to clearly identifiable rows and delete them before exit.
|
||||
|
||||
9. Performance budgets
|
||||
- Each unit‑style test script should complete in < 100 ms on a typical dev machine.
|
||||
- Each integration‑style test should complete in < 2 s and must avoid N+1 loops or heavy queries.
|
||||
|
||||
10. When to add or update tests
|
||||
- New route/feature: add at least one unit‑style test for core logic. If behavior depends on configuration/globals, add a minimal integration test.
|
||||
- Bug fix: first reproduce with a failing test; then fix and ensure the test passes.
|
||||
- Refactor: keep behavior‑preserving tests green. If public behavior changes intentionally, update both tests and `openapi.yaml` accordingly.
|
||||
|
||||
11. Maintenance expectations
|
||||
- Do not weaken or remove assertions to “make tests pass”. Investigate and fix root causes.
|
||||
- Keep tests small and readable. Extract tiny helpers within the test file rather than introducing new shared libraries.
|
||||
- Match the project code style and line endings (see `.editorconfig`: UTF‑8, CRLF, 4‑space indent, class brace `next_line`).
|
||||
|
||||
12. Templates
|
||||
- Unit‑style template:
|
||||
```php
|
||||
<?php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
// require_once WD . '/modules/foo/classes/bar.php';
|
||||
|
||||
function ok($m){ echo "\n\033[32m✔ $m\033[0m\n"; }
|
||||
function fail($m){ echo "\n\033[31m✖ $m\033[0m\n"; }
|
||||
$failed = 0;
|
||||
|
||||
// Arrange / Act
|
||||
$sum = 2 + 2;
|
||||
|
||||
// Assert
|
||||
if ($sum === 4) { ok('Basic arithmetic works (2 + 2 = 4)'); } else { fail('Expected 4'); $failed = 1; }
|
||||
|
||||
echo "\nExampleUnitTest completed.\n";
|
||||
exit($failed);
|
||||
```
|
||||
|
||||
- Integration‑style template (Redis example):
|
||||
```php
|
||||
<?php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
require_once WD . '/config.php'; // populates $REDIS_CONFIG when USE_ENV=true
|
||||
require_once WD . '/classes/redis.php';
|
||||
|
||||
function ok($m){ echo "\n\033[32m✔ $m\033[0m\n"; }
|
||||
function fail($m){ echo "\n\033[31m✖ $m\033[0m\n"; }
|
||||
$failed = 0;
|
||||
|
||||
// Use a namespaced test key
|
||||
$key = 'test:redis:example:' . uniqid('', true);
|
||||
|
||||
try {
|
||||
$r = new classes\redis();
|
||||
$r->set($key, 'pong');
|
||||
$val = $r->get($key);
|
||||
if ($val === 'pong') { ok('Redis set/get works for namespaced key'); } else { fail('Unexpected value from Redis'); $failed = 1; }
|
||||
} finally {
|
||||
// Best‑effort cleanup
|
||||
try { $r->del($key); } catch (\Throwable $e) { /* ignore */ }
|
||||
}
|
||||
|
||||
echo "\nExampleRedisIntegrationTest completed.\n";
|
||||
exit($failed);
|
||||
```
|
||||
|
||||
13. Quick reference
|
||||
- Run unit‑style test on host: `php services/nginx/app/tests/<domain>/<Name>Test.php`
|
||||
- Run integration‑style test in Docker: `docker compose exec -T php1 php /var/www/html/tests/<domain>/<Name>Test.php`
|
||||
- Minimal stack for integration: `docker compose up -d traefik redis php1 caddy`
|
||||
|
||||
For broader build, configuration, and existing examples, see `.junie/guidelines.md` (Testing section).
|
||||
|
||||
---
|
||||
apply: always
|
||||
---
|
||||
|
||||
### Creating and maintaining tests — Rules (Project‑specific)
|
||||
|
||||
These rules apply to all tests under `services/nginx/app/tests` for the Copenhagen Truck Wash API. They codify how to create, run, and maintain the lightweight CLI PHP tests used in this repository.
|
||||
|
||||
1. Scope and philosophy
|
||||
- Prefer fast, deterministic CLI scripts over framework‑based tests.
|
||||
- Keep unit‑style tests isolated from I/O (no DB/Redis/files/network). Use test doubles and explicit `require_once` for only the code exercised.
|
||||
- Use integration tests sparingly and only when configuration/globals are required. Run them in Docker with `USE_ENV=true`.
|
||||
|
||||
2. Location and naming
|
||||
- Place tests in `services/nginx/app/tests/<domain>/YourTest.php` where `<domain>` reflects the feature area (e.g., `subusers`, `orders`, `redis`).
|
||||
- File names must end with `Test.php` (e.g., `SelfservePermissionInitTest.php`).
|
||||
- Keep one coherent scenario per file. If a file grows beyond ~150 lines or mixes unrelated scenarios, split it.
|
||||
|
||||
3. Execution modes
|
||||
- Unit‑style (preferred): run on host with PHP CLI.
|
||||
- Command: `php services/nginx/app/tests/<domain>/<Name>Test.php`
|
||||
- Integration‑style (needs env/globals): run inside Docker (php1) where `USE_ENV=true` and env vars are provided by `docker-compose.yml`.
|
||||
- Start minimal stack: `docker compose up -d traefik redis php1 caddy`
|
||||
- Command: `docker compose exec -T php1 php /var/www/html/tests/<domain>/<Name>Test.php`
|
||||
|
||||
4. Bootstrapping and includes
|
||||
- At the top of every test, define `WD` if not already defined:
|
||||
```php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
```
|
||||
- For unit‑style tests: include only the files you exercise via explicit `require_once WD . '/path/to/file.php';`.
|
||||
- Do NOT include `config.php` for unit‑style tests; it throws if `USE_ENV` is not set.
|
||||
- For integration‑style tests that need globals (`$CONFIG_DB`, `$REDIS_CONFIG`, etc.): `require_once WD . '/config.php';` and run the test inside `php1`.
|
||||
|
||||
5. Output and exit codes
|
||||
- Use simple helpers for human‑readable output:
|
||||
```php
|
||||
function ok($message){ echo "\n\033[32m✔ $message\033[0m\n"; }
|
||||
function fail($message){ echo "\n\033[31m✖ $message\033[0m\n"; }
|
||||
```
|
||||
- Prefer collecting failures and exiting non‑zero when any assertion fails:
|
||||
```php
|
||||
$failed = 0;
|
||||
// ... on failure set $failed = 1;
|
||||
exit($failed);
|
||||
```
|
||||
- End with a concise completion line, e.g., `echo "\n<Name>Test completed.\n";`.
|
||||
|
||||
6. Determinism, time, and randomness
|
||||
- Avoid `sleep()` and real time dependencies. If time is relevant, pass it as a parameter or stub the time source.
|
||||
- Do not use random values unless strictly necessary; if used, seed explicitly (`mt_srand(1234)`) and document it.
|
||||
|
||||
7. External I/O and side effects
|
||||
- Never call external services (Stripe, e‑conomic, MinIO, Slack, WordPress) from tests. Stub or override code paths as shown in `tests/subusers/SelfservePermissionInitTest.php`.
|
||||
- Do not modify files under the repository during tests. If temporary files are required, use `sys_get_temp_dir()` and delete them before exit.
|
||||
|
||||
8. Redis and database (integration‑only)
|
||||
- Run inside Docker (`php1`) so `config.php` can populate `$REDIS_CONFIG` and `$CONFIG_DB`.
|
||||
- Use unique, namespaced Redis keys for test data (e.g., `test:<feature>:<uuid>`). Clean them up at the end. Do NOT call `FLUSHALL`.
|
||||
- Prefer fakes/stubs over real DB writes. If DB writes are unavoidable, scope them to clearly identifiable rows and delete them before exit.
|
||||
|
||||
9. Performance budgets
|
||||
- Each unit‑style test script should complete in < 100 ms on a typical dev machine.
|
||||
- Each integration‑style test should complete in < 2 s and must avoid N+1 loops or heavy queries.
|
||||
|
||||
10. When to add or update tests
|
||||
- New route/feature: add at least one unit‑style test for core logic. If behavior depends on configuration/globals, add a minimal integration test.
|
||||
- Bug fix: first reproduce with a failing test; then fix and ensure the test passes.
|
||||
- Refactor: keep behavior‑preserving tests green. If public behavior changes intentionally, update both tests and `openapi.yaml` accordingly.
|
||||
|
||||
11. Maintenance expectations
|
||||
- Do not weaken or remove assertions to “make tests pass”. Investigate and fix root causes.
|
||||
- Keep tests small and readable. Extract tiny helpers within the test file rather than introducing new shared libraries.
|
||||
- Match the project code style and line endings (see `.editorconfig`: UTF‑8, CRLF, 4‑space indent, class brace `next_line`).
|
||||
|
||||
12. Templates
|
||||
- Unit‑style template:
|
||||
```php
|
||||
<?php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
// require_once WD . '/modules/foo/classes/bar.php';
|
||||
|
||||
function ok($m){ echo "\n\033[32m✔ $m\033[0m\n"; }
|
||||
function fail($m){ echo "\n\033[31m✖ $m\033[0m\n"; }
|
||||
$failed = 0;
|
||||
|
||||
// Arrange / Act
|
||||
$sum = 2 + 2;
|
||||
|
||||
// Assert
|
||||
if ($sum === 4) { ok('Basic arithmetic works (2 + 2 = 4)'); } else { fail('Expected 4'); $failed = 1; }
|
||||
|
||||
echo "\nExampleUnitTest completed.\n";
|
||||
exit($failed);
|
||||
```
|
||||
|
||||
- Integration‑style template (Redis example):
|
||||
```php
|
||||
<?php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
require_once WD . '/config.php'; // populates $REDIS_CONFIG when USE_ENV=true
|
||||
require_once WD . '/classes/redis.php';
|
||||
|
||||
function ok($m){ echo "\n\033[32m✔ $m\033[0m\n"; }
|
||||
function fail($m){ echo "\n\033[31m✖ $m\033[0m\n"; }
|
||||
$failed = 0;
|
||||
|
||||
// Use a namespaced test key
|
||||
$key = 'test:redis:example:' . uniqid('', true);
|
||||
|
||||
try {
|
||||
$r = new classes\redis();
|
||||
$r->set($key, 'pong');
|
||||
$val = $r->get($key);
|
||||
if ($val === 'pong') { ok('Redis set/get works for namespaced key'); } else { fail('Unexpected value from Redis'); $failed = 1; }
|
||||
} finally {
|
||||
// Best‑effort cleanup
|
||||
try { $r->del($key); } catch (\Throwable $e) { /* ignore */ }
|
||||
}
|
||||
|
||||
echo "\nExampleRedisIntegrationTest completed.\n";
|
||||
exit($failed);
|
||||
```
|
||||
|
||||
13. Quick reference
|
||||
- Run unit‑style test on host: `php services/nginx/app/tests/<domain>/<Name>Test.php`
|
||||
- Run integration‑style test in Docker: `docker compose exec -T php1 php /var/www/html/tests/<domain>/<Name>Test.php`
|
||||
- Minimal stack for integration: `docker compose up -d traefik redis php1 caddy`
|
||||
|
||||
For broader build, configuration, and existing examples, see `.junie/guidelines.md` (Testing section).
|
||||
1. Add or update tests for every new feature, bug fix, API contract change, or search or authentication workflow change.
|
||||
2. Run backend verification in the `php1` container. Do not use host-side PHP for the supported workflow.
|
||||
3. Use `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:unit"` for unit coverage.
|
||||
4. Use `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:integration"` when code depends on Redis, MySQL, or environment-backed configuration.
|
||||
5. Use `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:api"` when route behavior, envelopes, or request parsing changes.
|
||||
6. Keep tests deterministic: no live third-party calls, no shared Redis keys, no broad database cleanup, and no sleeps unless time behavior is the thing under test.
|
||||
7. Prefer narrow fixtures, explicit cleanup, and behavior-level assertions over implementation checks.
|
||||
8. When public routes, schemas, or permissions change, update `openapi.yaml` together with the tests.
|
||||
9. Run the narrowest relevant suite first, then the broader suite that matches the risk before you finish the task.
|
||||
|
||||
Canonical workflow reference: `.ai-workflow/workflow.md`.
|
||||
|
||||
@@ -2,172 +2,18 @@
|
||||
apply: always
|
||||
---
|
||||
|
||||
### Creating and securing routes — Rules (Project‑specific)
|
||||
<!-- AUTOGENERATED: Run `node scripts/sync-ai-workflow.mjs --write`. -->
|
||||
|
||||
These rules define how to add HTTP routes to the Copenhagen Truck Wash API and how to secure them consistently. They reflect current patterns in `services/nginx/app/routes` and the helper APIs in `traits\route_t`.
|
||||
# Backend Route Rules
|
||||
|
||||
1. Location, naming, and structure
|
||||
- Place route classes under `services/nginx/app/routes`.
|
||||
- File names should describe the domain and end with `Route.php`, e.g., `BookingsRoute.php`, `ModuleSelfServeRoute.php`.
|
||||
- Namespace must be `routes` and each file must define one class that uses `traits\route_t` and implements `run(): void`.
|
||||
```php
|
||||
<?php
|
||||
namespace routes;
|
||||
use traits\route_t;
|
||||
These rules apply to files under `services/nginx/app/routes` and the classes they call.
|
||||
|
||||
class ExampleRoute
|
||||
{
|
||||
use route_t;
|
||||
|
||||
public function run(): void
|
||||
{
|
||||
// endpoints go here
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
2. Registering endpoints (HTTP verbs)
|
||||
- Define endpoints inside `run()` using the helpers provided by `route_t`:
|
||||
- `get($path, $handler, $permissions = [])`
|
||||
- `post($path, $handler, $permissions = [])`
|
||||
- `put($path, $handler, $permissions = [])`
|
||||
- `delete($path, $handler, $permissions = [])`
|
||||
- `patch($path, $handler, $permissions = [])`
|
||||
- `options($path, $handler, $permissions = [])` (useful for CORS preflight when needed)
|
||||
- Handlers are closures that perform validation, authorization, side effects, and write responses via the global `$response` (`classes\response`).
|
||||
- Example (read‑only endpoint):
|
||||
```php
|
||||
$this->get('/example', function () {
|
||||
global $response;
|
||||
$response->success(['message' => 'Hello World!']);
|
||||
});
|
||||
```
|
||||
|
||||
3. Route paths and local routing
|
||||
- Caddy serves the app directly; Traefik adds an external `/api` prefix for local access.
|
||||
- Direct path in the app: `/foo/bar`.
|
||||
- Local access paths (both work):
|
||||
- `http://localhost/foo/bar` (direct)
|
||||
- `http://localhost/api/foo/bar` (Traefik strip‑prefix `/api` → still routes to `/foo/bar` in the app)
|
||||
- Keep paths meaningful and resource‑oriented. Prefer plural nouns for collections and subpaths for actions when unavoidable (e.g., `/modules/self-serve/lane/status`).
|
||||
|
||||
4. Responses and status codes
|
||||
- Use `$response->success($payload, $status = 200)` for successful results and `$response->error($messageOrPayload, $status)` for failures.
|
||||
- Typical statuses:
|
||||
- 200 OK for successful reads/updates; 201 Created when new resources are created.
|
||||
- 400 Bad Request for validation errors.
|
||||
- 401 Unauthorized when authentication is missing/invalid.
|
||||
- 403 Forbidden when authenticated but lacking permissions.
|
||||
- Return concise, non‑sensitive error messages. Internal details go to logs (see `objects\logs_o`).
|
||||
|
||||
5. Input handling and validation (route_t helpers)
|
||||
- Read parameters via:
|
||||
- `getParameter($name)` or `getParametersAsArray()` (preferred; integrates with `classes\response` parsing)
|
||||
- `fromRequest($name)` (checks JSON body, then `$_POST`, then query)
|
||||
- `fromQuery($name)` and `fromRoute($segmentName)` when relevant
|
||||
- Validate early and fail fast using helpers:
|
||||
- Presence: `requireParameters(['a','b'])`, `isParametersSet(['a','b'])`
|
||||
- Types: `requireType($val, type_string()|type_int()|TYPE_BOOL()|TYPE_ARRAY())`, `requireTypeIn($val, [...])`
|
||||
- Ranges/lengths: `requireMinValue($n, $min)`, `requireMaxValue($n, $max)`, `requireMaxLength($name, $len)`, `requireParameterIntPositive($n, $name)`
|
||||
- Formats/enums: `requireDateFormat($date, FORMAT_DATE())`, `requireInArray($val, $allowed)`
|
||||
|
||||
6. Authentication and authorization (core rules)
|
||||
- Default posture: endpoints are protected and require authentication unless explicitly public.
|
||||
- To check authentication without a specific permission: `isAuthenticated()`.
|
||||
- Enforce permissions inside handlers using:
|
||||
- `requirePermission('some_permission')` — throws 401/403 as appropriate.
|
||||
- `hasPermission('some_permission', $customerNumber = null)` — boolean check (do not throw).
|
||||
- Register permissions for discoverability/administration by supplying the third `$permissions` argument when declaring the route. Keys are permission names; values are human‑readable descriptions. You should still call `requirePermission()` inside the handler to actually enforce.
|
||||
```php
|
||||
$this->get('/modules/self-serve/lane/status', function () {
|
||||
global $response;
|
||||
self::requirePermission('modules_selfserve_lane_status_view');
|
||||
// ...
|
||||
$response->success(['status' => 'OK']);
|
||||
}, [
|
||||
'modules_selfserve_lane_status_view' => 'View self-serve lane status',
|
||||
]);
|
||||
```
|
||||
|
||||
7. Subusers, permission nodes, and customer context
|
||||
- When a permission corresponds to a subuser permission node, define it with `definePermission($perm, subusers_permission_node_key::CASE)` to keep mapping explicit.
|
||||
- Subuser contexts may target a specific customer via the `X-Customer-Number` header or a `customer_number` parameter; `route_t` exposes this as response meta (`target_customer_number`) when applicable.
|
||||
- Use `allowOwnOrDepartmentAccess($ownPerm, $deptPerm, $targetCustomerNumber, $departmentId, $ownGuard = null, $denyMessage = null)` for the common pattern: allow the principal to act on their own customer scope or fall back to a department/admin permission.
|
||||
- Use `isOwnCustomerContext($targetCustomerNumber)` and `resolveEffectiveCustomerNumber()` when building conditional logic.
|
||||
|
||||
8. Department, order, and special access helpers
|
||||
- Department access: `requireDepartmentAccess($departmentId, $permissionSuffix = null)`, `hasDepartmentAccess(...)`.
|
||||
- Order access: `requireOrderAccess($orderId, $permissionSuffix = null)` (note: indirect access rules may evolve; keep logic minimal in routes).
|
||||
- Plate scanners (API key based): protect endpoints with `requirePlateScannerAuth()`.
|
||||
- Bot protection (public forms): use `requireRecaptcha()` and expect `g_recaptcha_response` in the request.
|
||||
|
||||
9. Public endpoints
|
||||
- Keep public endpoints extremely limited. If an endpoint must be public, you must:
|
||||
- Validate all inputs thoroughly using the helpers above.
|
||||
- Add rate‑limit or abuse‑mitigation where relevant (Redis is available as `classes\redis` for counters/locks; coordinate design with maintainers before introducing new limits).
|
||||
- Prefer `requireRecaptcha()` for anonymous form submissions.
|
||||
|
||||
10. Side effects and idempotency
|
||||
- For POST/PUT/PATCH with side effects, make operations idempotent when feasible (e.g., by honoring a client idempotency key header). If you add such behavior, document it in the route’s docblock and in `openapi.yaml`.
|
||||
- Wrap multi‑step operations with proper validation and permission checks before any external calls (Stripe, e‑conomic, etc.). Do not leak third‑party error payloads directly; map to concise API errors and log details.
|
||||
|
||||
11. Logging and observability
|
||||
- On auth/permission denials, the helpers already log to `logs_o` with structured messages. Avoid duplicating logs for the same event.
|
||||
- For unexpected states you handle gracefully, add targeted logs via `objects\logs_o` with a clear category/key.
|
||||
|
||||
12. OpenAPI contract synchronization
|
||||
- Every public surface change must be reflected in `openapi.yaml` at repo root. Keep paths, methods, parameters, request/response schemas, and error statuses up to date.
|
||||
- Use the same path strings as in the route declaration (remember Traefik’s `/api` is stripped before hitting the app).
|
||||
- If you add or change permissions that users must hold, document them in the endpoint description.
|
||||
|
||||
13. Example: secure command endpoint
|
||||
```php
|
||||
<?php
|
||||
namespace routes;
|
||||
use traits\route_t;
|
||||
use classes\authentication;
|
||||
|
||||
class LaneCommandRoute
|
||||
{
|
||||
use route_t;
|
||||
|
||||
public function run(): void
|
||||
{
|
||||
$this->post('/modules/self-serve/lane/command', function () {
|
||||
global $response;
|
||||
|
||||
// AuthZ
|
||||
self::requirePermission('modules_selfserve_lane_command_execute');
|
||||
|
||||
// Validate input
|
||||
self::requireParameters(['lane_id', 'command']);
|
||||
$laneId = (int) self::getParameter('lane_id');
|
||||
self::requireType($laneId, self::type_int());
|
||||
self::requireMinValue($laneId, 1);
|
||||
|
||||
$cmd = (string) self::getParameter('command');
|
||||
self::requireType($cmd, self::type_string());
|
||||
self::requireInArray($cmd, ['START','STOP','RESERVE','RELEASE','RESET']);
|
||||
|
||||
// Business logic (call into modules/classes)
|
||||
// ...
|
||||
|
||||
$response->success(['ok' => true]);
|
||||
}, [
|
||||
'modules_selfserve_lane_command_execute' => 'Execute self‑serve lane commands',
|
||||
]);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
14. Quick reference (local)
|
||||
- Bring up minimal stack: `docker compose up -d traefik redis php1 caddy`
|
||||
- Access an app route locally:
|
||||
- `http://localhost/<path>` or `http://localhost/api/<path>`
|
||||
- Tests are CLI scripts under `services/nginx/app/tests`. Prefer unit‑style tests for core logic; see “Creating and maintaining tests — Rules”.
|
||||
|
||||
15. Code style and hygiene
|
||||
- Follow `.editorconfig` (UTF‑8, CRLF, 4‑space indents).
|
||||
- Keep route files cohesive; avoid adding unrelated endpoints to the same class. If a class exceeds ~200–300 lines or mixes domains, split it.
|
||||
- Do not perform heavy bootstrap in route files. Delegate to classes/modules and keep handlers thin: validate → authorize → invoke → respond.
|
||||
1. Keep route handlers thin: validate input, enforce permissions, call domain code, and write the response.
|
||||
2. Default to protected endpoints. Use the existing authentication and permission helpers instead of ad hoc access checks.
|
||||
3. Add or update backend tests in the `php1` container whenever route behavior changes.
|
||||
4. Update `openapi.yaml` whenever paths, parameters, request bodies, response envelopes, or permissions change.
|
||||
5. Prefer deterministic route tests and avoid live external integrations in route coverage.
|
||||
6. Use concise API errors and keep sensitive implementation details out of the response body.
|
||||
7. When a change touches department, order, or subuser authorization, cover both the allow path and the deny path.
|
||||
|
||||
Canonical workflow reference: `.ai-workflow/workflow.md`.
|
||||
|
||||
@@ -3,31 +3,46 @@ version = 1
|
||||
name = "api"
|
||||
|
||||
[setup]
|
||||
script = "./scripts/setup.sh"
|
||||
script = '''
|
||||
./scripts/setup.sh
|
||||
'''
|
||||
|
||||
[setup.win32]
|
||||
script = "powershell -ExecutionPolicy Bypass -File .\\scripts\\setup.ps1"
|
||||
script = '''
|
||||
powershell -ExecutionPolicy Bypass -File .\scripts\setup.ps1
|
||||
'''
|
||||
|
||||
[[actions]]
|
||||
name = "Start API"
|
||||
icon = "run"
|
||||
command = "powershell -ExecutionPolicy Bypass -File .\\scripts\\run.ps1 -Action start"
|
||||
platform = "win32"
|
||||
command = '''
|
||||
docker compose up -d traefik redis mysql-debug php1 caddy
|
||||
'''
|
||||
|
||||
[[actions]]
|
||||
name = "Stop API"
|
||||
icon = "run"
|
||||
command = "powershell -ExecutionPolicy Bypass -File .\\scripts\\run.ps1 -Action stop"
|
||||
platform = "win32"
|
||||
command = '''
|
||||
docker compose down
|
||||
'''
|
||||
|
||||
[[actions]]
|
||||
name = "PHP logs"
|
||||
icon = "debug"
|
||||
command = "powershell -ExecutionPolicy Bypass -File .\\scripts\\run.ps1 -Action logs -Service php1"
|
||||
platform = "win32"
|
||||
command = '''
|
||||
docker compose logs -f --tail=200 php1
|
||||
'''
|
||||
|
||||
[[actions]]
|
||||
name = "Unit tests"
|
||||
name = "PHP unit tests"
|
||||
icon = "test"
|
||||
command = "powershell -ExecutionPolicy Bypass -File .\\scripts\\run.ps1 -Action test"
|
||||
platform = "win32"
|
||||
command = '''
|
||||
docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:unit"
|
||||
'''
|
||||
|
||||
[[actions]]
|
||||
name = "AI workflow check"
|
||||
icon = "debug"
|
||||
command = '''
|
||||
node scripts/sync-ai-workflow.mjs --check
|
||||
'''
|
||||
|
||||
+7
-1
@@ -1 +1,7 @@
|
||||
/docker-compose.yml
|
||||
/docker-compose.yml
|
||||
|
||||
# Runtime-generated replication bootstrap snapshots may contain infrastructure
|
||||
# metadata and encrypted/plaintext credential material. They must be
|
||||
# supplied at runtime via mounted storage, not baked into deployment images.
|
||||
/services/nginx/app/storage/replication-bootstrap.json
|
||||
/services/nginx/app/storage/replication-bootstrap-*.json
|
||||
|
||||
@@ -28,12 +28,44 @@ CONFIG_DB_HOST=
|
||||
CONFIG_DB_USER=
|
||||
CONFIG_DB_PASSWORD=
|
||||
CONFIG_DB_DATABASE=
|
||||
CONFIG_DB_PORT=3306
|
||||
CONFIG_DB_SSL_MODE=DISABLED
|
||||
|
||||
# Browser origins allowed to call the API. Path-like entries are normalized to origins by the PHP CORS policy.
|
||||
CORS=https://truckwash.io,https://www.truckwash.io,https://api.truckwash.io,https://api.truckwash.io:4433,https://api-v2.truckwash.io,https://web.truckwash.dk,https://api.truckwash.dk,https://truckwash.dk,https://www.truckwash.dk,https://staging.truckwash.io,http://localhost,https://localhost,http://localhost:4433,https://localhost:4433,https://twdev.jeppeb.dk,http://localhost:5173
|
||||
|
||||
# Debug DB credentials (used when CONFIG_DB_TARGET=debug)
|
||||
# Any blank debug value falls back to the live value above.
|
||||
CONFIG_DB_DEBUG_HOST=mysql-debug
|
||||
CONFIG_DB_DEBUG_USER=root
|
||||
CONFIG_DB_DEBUG_PASSWORD=debug_root_password
|
||||
CONFIG_DB_DEBUG_DATABASE=nnks_db_debug
|
||||
CONFIG_DB_DEBUG_PORT=3306
|
||||
CONFIG_DB_DEBUG_SSL_MODE=DISABLED
|
||||
|
||||
# e-conomic credentials
|
||||
# Required: ECONOMIC_API_APP_ACCESS_GRANT and ECONOMIC_API_APP_SECRET_TOKEN
|
||||
# Optional-but-recommended: ECONOMIC_API_APP_ACCESS_GRANT2 (falls back to primary grant when blank)
|
||||
ECONOMIC_API_APP_ACCESS_GRANT=
|
||||
ECONOMIC_API_APP_ACCESS_GRANT2=
|
||||
ECONOMIC_API_APP_SECRET_TOKEN=
|
||||
|
||||
# Edge broker defaults for shell relay and gateway dispatch.
|
||||
EDGE_BROKER_URL=http://edge-broker:4300
|
||||
EDGE_PUBLIC_BROKER_URL=http://localhost/api/edge-broker
|
||||
EDGE_AUTH_MODE=strict
|
||||
EDGE_BROKER_SHARED_SECRET=
|
||||
|
||||
# Redis credentials
|
||||
REDIS_CONFIG_HOST=redis
|
||||
REDIS_CONFIG_DATABASE=0
|
||||
REDIS_CONFIG_PASSWORD=
|
||||
REDIS_CONFIG_PORT=6379
|
||||
REDIS_CONFIG_USER=default
|
||||
|
||||
# Redis debug credentials
|
||||
REDIS_CONFIG_DEBUG_HOST=redis
|
||||
REDIS_CONFIG_DEBUG_DATABASE=0
|
||||
REDIS_CONFIG_DEBUG_PASSWORD=
|
||||
REDIS_CONFIG_DEBUG_PORT=6379
|
||||
REDIS_CONFIG_DEBUG_USER=default
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
* text=auto eol=lf
|
||||
|
||||
*.png binary
|
||||
*.jpg binary
|
||||
*.jpeg binary
|
||||
*.gif binary
|
||||
*.ico binary
|
||||
*.webp binary
|
||||
*.woff binary
|
||||
*.woff2 binary
|
||||
*.ttf binary
|
||||
*.otf binary
|
||||
*.pdf binary
|
||||
*.zip binary
|
||||
*.webm binary
|
||||
@@ -0,0 +1,48 @@
|
||||
USE_ENV=true
|
||||
DEBUG=true
|
||||
ENCRYPTION_KEY=ci-test-encryption-key
|
||||
CORS=*
|
||||
CONFIG_TIMEZONE=Europe/Copenhagen
|
||||
|
||||
CONFIG_DB_TARGET=debug
|
||||
CONFIG_DB_HOST=mysql-debug
|
||||
CONFIG_DB_USER=root
|
||||
CONFIG_DB_PASSWORD=debug_root_password
|
||||
CONFIG_DB_DATABASE=nnks_db_debug
|
||||
CONFIG_DB_PORT=3306
|
||||
CONFIG_DB_SSL_MODE=DISABLED
|
||||
CONFIG_DB_DEBUG_HOST=mysql-debug
|
||||
CONFIG_DB_DEBUG_USER=root
|
||||
CONFIG_DB_DEBUG_PASSWORD=debug_root_password
|
||||
CONFIG_DB_DEBUG_DATABASE=nnks_db_debug
|
||||
CONFIG_DB_DEBUG_PORT=3306
|
||||
CONFIG_DB_DEBUG_SSL_MODE=DISABLED
|
||||
|
||||
REDIS_CONFIG_HOST=redis
|
||||
REDIS_CONFIG_USER=default
|
||||
REDIS_CONFIG_DATABASE=0
|
||||
REDIS_CONFIG_PASSWORD=
|
||||
REDIS_CONFIG_PORT=6379
|
||||
REDIS_CONFIG_DEBUG_HOST=redis
|
||||
REDIS_CONFIG_DEBUG_USER=default
|
||||
REDIS_CONFIG_DEBUG_DATABASE=0
|
||||
REDIS_CONFIG_DEBUG_PASSWORD=
|
||||
REDIS_CONFIG_DEBUG_PORT=6379
|
||||
|
||||
ECONOMIC_API_APP_ACCESS_GRANT=ci-test
|
||||
ECONOMIC_API_APP_ACCESS_GRANT2=ci-test-secondary
|
||||
ECONOMIC_API_APP_SECRET_TOKEN=ci-test-secret
|
||||
WORDPRESS_STATIC_TOKEN=ci-test
|
||||
EMAIL_WASH_CERTIFICATE_TOKEN=ci-test
|
||||
WORDPRESS_API_URL=http://localhost
|
||||
MINIO_ENDPOINT=
|
||||
MINIO_ACCESS_KEY=
|
||||
MINIO_SECRET_KEY=
|
||||
SLACK_DEFAULT_WEBHOOK=
|
||||
|
||||
EDGE_BROKER_URL=http://edge-broker:4300
|
||||
EDGE_PUBLIC_BROKER_URL=http://localhost/api/edge-broker
|
||||
EDGE_AUTH_MODE=manager
|
||||
EDGE_BROKER_SHARED_SECRET=truckwash-edge-ci
|
||||
EDGE_GATEWAY_VIEW_CACHE_TTL=0
|
||||
TRUCKWASH_TEST_BLOCK_REAL_SHELLY=1
|
||||
@@ -0,0 +1,48 @@
|
||||
USE_ENV=true
|
||||
DEBUG=true
|
||||
ENCRYPTION_KEY=ci-test-encryption-key
|
||||
CORS=*
|
||||
CONFIG_TIMEZONE=Europe/Copenhagen
|
||||
|
||||
CONFIG_DB_TARGET=debug
|
||||
CONFIG_DB_HOST=mysql-debug
|
||||
CONFIG_DB_USER=root
|
||||
CONFIG_DB_PASSWORD=debug_root_password
|
||||
CONFIG_DB_DATABASE=nnks_db_debug
|
||||
CONFIG_DB_PORT=3306
|
||||
CONFIG_DB_SSL_MODE=DISABLED
|
||||
CONFIG_DB_DEBUG_HOST=mysql-debug
|
||||
CONFIG_DB_DEBUG_USER=root
|
||||
CONFIG_DB_DEBUG_PASSWORD=debug_root_password
|
||||
CONFIG_DB_DEBUG_DATABASE=nnks_db_debug
|
||||
CONFIG_DB_DEBUG_PORT=3306
|
||||
CONFIG_DB_DEBUG_SSL_MODE=DISABLED
|
||||
|
||||
REDIS_CONFIG_HOST=redis
|
||||
REDIS_CONFIG_USER=default
|
||||
REDIS_CONFIG_DATABASE=0
|
||||
REDIS_CONFIG_PASSWORD=
|
||||
REDIS_CONFIG_PORT=6379
|
||||
REDIS_CONFIG_DEBUG_HOST=redis
|
||||
REDIS_CONFIG_DEBUG_USER=default
|
||||
REDIS_CONFIG_DEBUG_DATABASE=0
|
||||
REDIS_CONFIG_DEBUG_PASSWORD=
|
||||
REDIS_CONFIG_DEBUG_PORT=6379
|
||||
|
||||
ECONOMIC_API_APP_ACCESS_GRANT=ci-test
|
||||
ECONOMIC_API_APP_ACCESS_GRANT2=ci-test-secondary
|
||||
ECONOMIC_API_APP_SECRET_TOKEN=ci-test-secret
|
||||
WORDPRESS_STATIC_TOKEN=ci-test
|
||||
EMAIL_WASH_CERTIFICATE_TOKEN=ci-test
|
||||
WORDPRESS_API_URL=http://localhost
|
||||
MINIO_ENDPOINT=
|
||||
MINIO_ACCESS_KEY=
|
||||
MINIO_SECRET_KEY=
|
||||
SLACK_DEFAULT_WEBHOOK=
|
||||
|
||||
EDGE_BROKER_URL=http://edge-broker:4300
|
||||
EDGE_PUBLIC_BROKER_URL=http://localhost/api/edge-broker
|
||||
EDGE_AUTH_MODE=manager
|
||||
EDGE_BROKER_SHARED_SECRET=truckwash-edge-ci
|
||||
EDGE_GATEWAY_VIEW_CACHE_TTL=0
|
||||
TRUCKWASH_TEST_BLOCK_REAL_SHELLY=1
|
||||
@@ -0,0 +1,90 @@
|
||||
services:
|
||||
traefik:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-traefik"
|
||||
|
||||
redis:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-redis"
|
||||
|
||||
mysql-debug:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-mysql-debug"
|
||||
ports: !reset []
|
||||
|
||||
edge-broker:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-edge-broker"
|
||||
ports:
|
||||
- "127.0.0.1:${EDGE_BROKER_CI_PORT:-14300}:4300"
|
||||
labels:
|
||||
- "traefik.http.routers.edge-broker-local-ci.rule=PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local-ci.entrypoints=web"
|
||||
- "traefik.http.routers.edge-broker-local-ci.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local-ci.priority=190"
|
||||
- "traefik.http.routers.edge-broker-local-ci.service=edge-broker"
|
||||
|
||||
caddy:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-caddy"
|
||||
depends_on: !reset []
|
||||
labels:
|
||||
- "traefik.http.routers.local-api-ci.rule=PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-api-ci.entrypoints=web"
|
||||
- "traefik.http.routers.local-api-ci.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-api-ci.priority=90"
|
||||
- "traefik.http.routers.local-api-ci.service=caddy"
|
||||
volumes:
|
||||
- ci_php_app:/var/www/html
|
||||
|
||||
php1:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-php1"
|
||||
depends_on: !reset []
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
USE_ENV: "true"
|
||||
CONFIG_DB_TARGET: "debug"
|
||||
CONFIG_DB_HOST: "mysql-debug"
|
||||
CONFIG_DB_USER: "root"
|
||||
CONFIG_DB_PASSWORD: "debug_root_password"
|
||||
CONFIG_DB_DATABASE: "nnks_db_debug"
|
||||
CONFIG_DB_PORT: "3306"
|
||||
CONFIG_DB_DEBUG_HOST: "mysql-debug"
|
||||
CONFIG_DB_DEBUG_USER: "root"
|
||||
CONFIG_DB_DEBUG_PASSWORD: "debug_root_password"
|
||||
CONFIG_DB_DEBUG_DATABASE: "nnks_db_debug"
|
||||
CONFIG_DB_DEBUG_PORT: "3306"
|
||||
REDIS_CONFIG_HOST: "redis"
|
||||
REDIS_CONFIG_PORT: "6379"
|
||||
REDIS_CONFIG_DATABASE: "0"
|
||||
REDIS_CONFIG_DEBUG_HOST: "redis"
|
||||
REDIS_CONFIG_DEBUG_PORT: "6379"
|
||||
REDIS_CONFIG_DEBUG_DATABASE: "0"
|
||||
TRUCKWASH_TEST_BLOCK_REAL_SHELLY: "1"
|
||||
EDGE_GATEWAY_VIEW_CACHE_TTL: "0"
|
||||
volumes:
|
||||
- ci_php_app:/var/www/html
|
||||
|
||||
php2:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-php2"
|
||||
volumes:
|
||||
- ci_php_app:/var/www/html
|
||||
|
||||
php3:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-php3"
|
||||
volumes:
|
||||
- ci_php_app:/var/www/html
|
||||
|
||||
php4:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-php4"
|
||||
volumes:
|
||||
- ci_php_app:/var/www/html
|
||||
|
||||
php5:
|
||||
container_name: "${COMPOSE_PROJECT_NAME:-api}-php5"
|
||||
volumes:
|
||||
- ci_php_app:/var/www/html
|
||||
|
||||
volumes:
|
||||
ci_php_app:
|
||||
|
||||
networks:
|
||||
default:
|
||||
ipam:
|
||||
config:
|
||||
- subnet: "${CI_DOCKER_SUBNET:-10.240.0.0/24}"
|
||||
@@ -9,20 +9,44 @@ on:
|
||||
|
||||
jobs:
|
||||
qodana:
|
||||
runs-on: ubuntu-latest
|
||||
# CI runs on the repository's self-hosted runner pool.
|
||||
runs-on: [self-hosted, Linux, X64, pleno, backend, docker]
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
checks: write
|
||||
contents: read
|
||||
pull-requests: read
|
||||
checks: read
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }} # to check out the actual pull request commit, not the merge commit
|
||||
ref: ${{ github.event.pull_request.head.sha || github.sha }} # Use PR head when available, otherwise the pushed SHA.
|
||||
fetch-depth: 0 # a full history is required for pull request analysis
|
||||
persist-credentials: false
|
||||
- name: Mark repository as safe for Git
|
||||
run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
||||
- name: Prepare Qodana cache directories
|
||||
run: |
|
||||
mkdir -p "${RUNNER_TEMP}/qodana/caches"
|
||||
mkdir -p "${RUNNER_TEMP}/qodana/results"
|
||||
- name: Detect Qodana Cloud token
|
||||
id: qodana-token
|
||||
env:
|
||||
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
|
||||
run: |
|
||||
if [ -n "${QODANA_TOKEN:-}" ]; then
|
||||
echo "present=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "present=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: 'Qodana Scan'
|
||||
uses: JetBrains/qodana-action@v2025.3
|
||||
if: ${{ steps.qodana-token.outputs.present == 'true' }}
|
||||
uses: JetBrains/qodana-action@v2026.1
|
||||
with:
|
||||
pr-mode: false
|
||||
env:
|
||||
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
|
||||
QODANA_ENDPOINT: 'https://qodana.cloud'
|
||||
|
||||
- name: 'Skip Qodana Scan (missing cloud token)'
|
||||
if: ${{ steps.qodana-token.outputs.present != 'true' }}
|
||||
run: echo "Skipping Qodana because QODANA_TOKEN is not configured."
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
issues: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Create GitHub Issue for Copilot
|
||||
env:
|
||||
@@ -22,7 +22,18 @@ jobs:
|
||||
TASK: ${{ github.event.inputs.task }}
|
||||
ACTOR: ${{ github.actor }}
|
||||
run: |
|
||||
BODY="$(cat <<EOF
|
||||
Assigned to Copilot by @$ACTOR.
|
||||
|
||||
Task
|
||||
$TASK
|
||||
|
||||
AI workflow notes
|
||||
- Generated assistant metadata is synchronized from the canonical AI workflow bundle.
|
||||
- Run `node scripts/sync-ai-workflow.mjs --check` if assistant metadata changed.
|
||||
EOF
|
||||
)"
|
||||
gh issue create \
|
||||
--title "Copilot Task: $TASK" \
|
||||
--body "Assigned to Copilot by @$ACTOR. Description: $TASK" \
|
||||
--body "$BODY" \
|
||||
--label "copilot-task"
|
||||
|
||||
+356
-62
@@ -3,90 +3,384 @@ name: Tests
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
unit:
|
||||
name: Unit (required)
|
||||
runs-on: ubuntu-latest
|
||||
php:
|
||||
name: PHP ${{ matrix.suite }} (required)
|
||||
runs-on: [self-hosted, Linux, X64, pleno, backend, docker]
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
suite: [unit, integration, api, legacy]
|
||||
env:
|
||||
COMPOSE_PROJECT_NAME: php-${{ github.run_id }}-${{ github.job }}-${{ matrix.suite }}-${{ github.run_attempt }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
- name: Ensure Docker access
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if docker ps >/dev/null 2>&1; then
|
||||
exit 0
|
||||
fi
|
||||
test -S /var/run/docker.sock || (echo "Docker socket is not available." >&2; exit 1)
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
sudo -n chmod 666 /var/run/docker.sock
|
||||
else
|
||||
chmod 666 /var/run/docker.sock
|
||||
fi
|
||||
docker ps >/dev/null
|
||||
|
||||
- name: Setup Node.js
|
||||
if: ${{ matrix.suite == 'unit' }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: mysqli, curl, openssl, json, redis, pcov
|
||||
coverage: pcov
|
||||
node-version: 22
|
||||
|
||||
- name: Resolve dependencies
|
||||
working-directory: services/nginx/app
|
||||
run: composer update --no-interaction --prefer-dist
|
||||
- name: Check AI workflow sync
|
||||
if: ${{ matrix.suite == 'unit' }}
|
||||
run: node scripts/sync-ai-workflow.mjs --check
|
||||
|
||||
- name: Run unit tests
|
||||
working-directory: services/nginx/app
|
||||
run: composer test:unit
|
||||
- name: Run PHP ${{ matrix.suite }} suite
|
||||
run: bash scripts/php-ci-test.sh ${{ matrix.suite }}
|
||||
|
||||
- name: Generate coverage report
|
||||
working-directory: services/nginx/app
|
||||
run: composer test:coverage
|
||||
|
||||
- name: Upload coverage artifact
|
||||
- name: Upload PHP suite logs
|
||||
if: ${{ failure() }}
|
||||
continue-on-error: true
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: unit-coverage-clover
|
||||
path: services/nginx/app/build/logs/clover.xml
|
||||
name: php-${{ matrix.suite }}-logs
|
||||
path: .tmp/ci-logs/${{ matrix.suite }}
|
||||
if-no-files-found: warn
|
||||
retention-days: 3
|
||||
|
||||
integration:
|
||||
name: Integration (advisory)
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: true
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis:7
|
||||
ports:
|
||||
- 6379:6379
|
||||
mysql:
|
||||
image: mysql:8
|
||||
env:
|
||||
MYSQL_DATABASE: app_test
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
ports:
|
||||
- 3306:3306
|
||||
options: >-
|
||||
--health-cmd="mysqladmin ping -h 127.0.0.1 -proot"
|
||||
--health-interval=10s
|
||||
--health-timeout=5s
|
||||
--health-retries=10
|
||||
edge-agent:
|
||||
name: Edge Agent (required)
|
||||
runs-on: [self-hosted, Linux, X64, pleno, backend]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
php-version: '8.2'
|
||||
extensions: mysqli, curl, openssl, json, redis
|
||||
node-version: 22
|
||||
|
||||
- name: Install native build tools
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if command -v make >/dev/null 2>&1 && command -v g++ >/dev/null 2>&1; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if ! command -v apt-get >/dev/null 2>&1; then
|
||||
echo "make and g++ are required to install node-pty, but apt-get is not available on this runner." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
apt_cmd=(apt-get)
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
if ! command -v sudo >/dev/null 2>&1; then
|
||||
echo "make and g++ are missing, and sudo is not available to install them." >&2
|
||||
exit 1
|
||||
fi
|
||||
apt_cmd=(sudo apt-get)
|
||||
fi
|
||||
|
||||
"${apt_cmd[@]}" update
|
||||
"${apt_cmd[@]}" install -y --no-install-recommends build-essential python3
|
||||
|
||||
- name: Install dependencies
|
||||
working-directory: services/edge-agent
|
||||
run: npm ci
|
||||
|
||||
- name: Run edge agent tests
|
||||
working-directory: services/edge-agent
|
||||
run: npm test
|
||||
|
||||
edge-broker:
|
||||
name: Edge Broker (required)
|
||||
runs-on: [self-hosted, Linux, X64, pleno, backend, docker]
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Ensure Docker access
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if docker ps >/dev/null 2>&1; then
|
||||
exit 0
|
||||
fi
|
||||
test -S /var/run/docker.sock || (echo "Docker socket is not available." >&2; exit 1)
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
sudo -n chmod 666 /var/run/docker.sock
|
||||
else
|
||||
chmod 666 /var/run/docker.sock
|
||||
fi
|
||||
docker ps >/dev/null
|
||||
|
||||
- name: Materialize CI compose env files
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cp .github/ci.env .env
|
||||
cp .github/ci.env.staging .env.staging
|
||||
|
||||
- name: Validate compose contracts
|
||||
run: |
|
||||
docker compose -f docker-compose.yml -f docker-compose.prod.yml config > /dev/null
|
||||
docker compose -f docker-compose.example.yml config > /dev/null
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: Install dependencies
|
||||
working-directory: services/edge-broker
|
||||
run: npm ci
|
||||
|
||||
- name: Run edge broker tests
|
||||
working-directory: services/edge-broker
|
||||
run: npm test
|
||||
|
||||
edge-gateway-backend:
|
||||
name: Edge Gateway Backend (required)
|
||||
runs-on: [self-hosted, Linux, X64, pleno, backend, docker]
|
||||
env:
|
||||
COMPOSE_FILE: docker-compose.yml:.github/docker-compose.ci.yml
|
||||
COMPOSE_PROJECT_NAME: edge-gateway-backend-${{ github.run_id }}-${{ github.run_attempt }}
|
||||
COMPOSE_PROFILES: dev
|
||||
TRAEFIK_WEB_PORT: "18080"
|
||||
TRAEFIK_WEBSECURE_PORT: "18443"
|
||||
TRAEFIK_WEBSECURE_STAGING_PORT: "18433"
|
||||
TRAEFIK_METRICS_PORT: "19100"
|
||||
EDGE_BROKER_CI_PORT: "14300"
|
||||
EDGE_GATEWAY_E2E_BASE_URL: "http://localhost:18080/api"
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Ensure Docker access
|
||||
run: |
|
||||
set -euo pipefail
|
||||
if docker ps >/dev/null 2>&1; then
|
||||
exit 0
|
||||
fi
|
||||
test -S /var/run/docker.sock || (echo "Docker socket is not available." >&2; exit 1)
|
||||
if command -v sudo >/dev/null 2>&1; then
|
||||
sudo -n chmod 666 /var/run/docker.sock
|
||||
else
|
||||
chmod 666 /var/run/docker.sock
|
||||
fi
|
||||
docker ps >/dev/null
|
||||
|
||||
- name: Allocate CI ports
|
||||
run: |
|
||||
set -euo pipefail
|
||||
find_free_port() {
|
||||
start="$1"
|
||||
end="$2"
|
||||
port="$start"
|
||||
while [ "$port" -le "$end" ]; do
|
||||
if ! ss -H -ltn "sport = :$port" 2>/dev/null | grep -q .; then
|
||||
echo "$port"
|
||||
return 0
|
||||
fi
|
||||
port=$((port + 1))
|
||||
done
|
||||
|
||||
echo "No free port in range ${start}-${end}." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
base=$((20000 + (GITHUB_RUN_ID % 20000)))
|
||||
web_port="$(find_free_port "$base" "$((base + 2000))")"
|
||||
websecure_port="$(find_free_port "$((web_port + 1))" "$((web_port + 2000))")"
|
||||
staging_port="$(find_free_port "$((websecure_port + 1))" "$((websecure_port + 2000))")"
|
||||
metrics_port="$(find_free_port "$((staging_port + 1))" "$((staging_port + 2000))")"
|
||||
broker_port="$(find_free_port "$((metrics_port + 1))" "$((metrics_port + 2000))")"
|
||||
checksum="$(printf '%s' "$COMPOSE_PROJECT_NAME" | cksum | awk '{print $1}')"
|
||||
subnet_second=$((64 + ((checksum / 256) % 64)))
|
||||
subnet_third=$((checksum % 256))
|
||||
ci_docker_subnet="10.${subnet_second}.${subnet_third}.0/24"
|
||||
|
||||
{
|
||||
echo "TRAEFIK_WEB_PORT=${web_port}"
|
||||
echo "TRAEFIK_WEBSECURE_PORT=${websecure_port}"
|
||||
echo "TRAEFIK_WEBSECURE_STAGING_PORT=${staging_port}"
|
||||
echo "TRAEFIK_METRICS_PORT=${metrics_port}"
|
||||
echo "EDGE_BROKER_CI_PORT=${broker_port}"
|
||||
echo "CI_DOCKER_SUBNET=${ci_docker_subnet}"
|
||||
echo "EDGE_GATEWAY_E2E_BASE_URL=http://localhost:${web_port}/api"
|
||||
echo "EDGE_GATEWAY_E2E_COMPOSE_PROJECT=${COMPOSE_PROJECT_NAME}"
|
||||
} >> "$GITHUB_ENV"
|
||||
|
||||
- name: Materialize CI compose env files
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cp .github/ci.env .env
|
||||
cp .github/ci.env.staging .env.staging
|
||||
printf '\nEDGE_PUBLIC_BROKER_URL=http://edge-broker:4300/edge-broker\n' >> .env
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: Boot local stack
|
||||
run: sh scripts/ci-docker-compose-up.sh traefik redis mysql-debug edge-broker php1 php2 php3 php4 php5 caddy
|
||||
|
||||
- name: Sync PHP app checkout
|
||||
run: >
|
||||
tar
|
||||
--exclude='./vendor'
|
||||
--exclude='./.phpunit.cache'
|
||||
--exclude='./build/logs'
|
||||
-C services/nginx/app -cf - .
|
||||
| docker compose -f docker-compose.yml -f .github/docker-compose.ci.yml exec -T php1 tar --no-same-owner -C /var/www/html -xf -
|
||||
|
||||
- name: Resolve dependencies
|
||||
working-directory: services/nginx/app
|
||||
run: composer update --no-interaction --prefer-dist
|
||||
run: |
|
||||
set -euo pipefail
|
||||
composer_install() {
|
||||
install_mode="$1"
|
||||
max_attempts="$2"
|
||||
attempt=1
|
||||
while :; do
|
||||
if docker compose -f docker-compose.yml -f .github/docker-compose.ci.yml exec -T php1 sh -lc "cd /var/www/html && composer install --no-interaction ${install_mode} --no-progress"; then
|
||||
return 0
|
||||
fi
|
||||
if [ "$attempt" -ge "$max_attempts" ]; then
|
||||
return 1
|
||||
fi
|
||||
sleep_seconds=$((attempt * 5))
|
||||
echo "composer install ${install_mode} failed; retrying in ${sleep_seconds}s (attempt $((attempt + 1))/${max_attempts})" >&2
|
||||
sleep "$sleep_seconds"
|
||||
attempt=$((attempt + 1))
|
||||
done
|
||||
}
|
||||
|
||||
- name: Run integration tests
|
||||
working-directory: services/nginx/app
|
||||
composer_install --prefer-dist 3 || {
|
||||
echo "Composer dist install failed; retrying with --prefer-source." >&2
|
||||
composer_install --prefer-source 2
|
||||
}
|
||||
|
||||
- name: Verify edge gateway test files
|
||||
run: >
|
||||
docker compose -f docker-compose.yml -f .github/docker-compose.ci.yml exec -T php1 sh -lc
|
||||
"cd /var/www/html &&
|
||||
php -r '\$composer = json_decode(file_get_contents(\"composer.json\"), true); echo \"Composer scripts: \", implode(\",\", array_keys(\$composer[\"scripts\"] ?? [])), PHP_EOL;' &&
|
||||
find tests/Api -maxdepth 1 -type f -name 'EdgeGateway*ApiTest.php' -print &&
|
||||
test -f tests/Api/EdgeGatewayAgentApiTest.php &&
|
||||
test -f tests/Api/EdgeGatewayBrokerApiTest.php &&
|
||||
test -f tests/Api/EdgeGatewayOperatorApiTest.php"
|
||||
|
||||
- name: Run edge gateway API tests
|
||||
run: >
|
||||
docker compose -f docker-compose.yml -f .github/docker-compose.ci.yml exec -T php1 sh -lc
|
||||
"cd /var/www/html &&
|
||||
RUN_API_TESTS=1
|
||||
API_TEST_BOOTSTRAP_SCHEMA=1
|
||||
API_TEST_ALLOW_LIVE_DB=1
|
||||
CONFIG_DB_TARGET=debug
|
||||
CONFIG_DB_HOST=mysql-debug
|
||||
CONFIG_DB_USER=\${CONFIG_DB_USER:-root}
|
||||
CONFIG_DB_PASSWORD=\${CONFIG_DB_PASSWORD:-debug_root_password}
|
||||
CONFIG_DB_DATABASE=\${CONFIG_DB_DATABASE:-nnks_db_debug}
|
||||
CONFIG_DB_PORT=3306
|
||||
CONFIG_DB_DEBUG_HOST=mysql-debug
|
||||
CONFIG_DB_DEBUG_USER=\${CONFIG_DB_DEBUG_USER:-root}
|
||||
CONFIG_DB_DEBUG_PASSWORD=\${CONFIG_DB_DEBUG_PASSWORD:-debug_root_password}
|
||||
CONFIG_DB_DEBUG_DATABASE=\${CONFIG_DB_DEBUG_DATABASE:-nnks_db_debug}
|
||||
CONFIG_DB_DEBUG_PORT=3306
|
||||
API_TEST_REQUEST_TIMEOUT=180
|
||||
EDGE_GATEWAY_VIEW_CACHE_TTL=0
|
||||
EDGE_BROKER_URL=
|
||||
vendor/bin/pest
|
||||
tests/Api/EdgeGatewayAgentApiTest.php
|
||||
tests/Api/EdgeGatewayBrokerApiTest.php
|
||||
tests/Api/EdgeGatewayOperatorApiTest.php
|
||||
--colors=always"
|
||||
|
||||
- name: Run edge gateway integration tests
|
||||
run: >
|
||||
docker compose -f docker-compose.yml -f .github/docker-compose.ci.yml exec -T php1 sh -lc
|
||||
"cd /var/www/html &&
|
||||
RUN_INTEGRATION_TESTS=1
|
||||
CONFIG_DB_TARGET=debug
|
||||
CONFIG_DB_HOST=mysql-debug
|
||||
CONFIG_DB_USER=\${CONFIG_DB_USER:-root}
|
||||
CONFIG_DB_PASSWORD=\${CONFIG_DB_PASSWORD:-debug_root_password}
|
||||
CONFIG_DB_DATABASE=\${CONFIG_DB_DATABASE:-nnks_db_debug}
|
||||
CONFIG_DB_PORT=3306
|
||||
CONFIG_DB_DEBUG_HOST=mysql-debug
|
||||
CONFIG_DB_DEBUG_USER=\${CONFIG_DB_DEBUG_USER:-root}
|
||||
CONFIG_DB_DEBUG_PASSWORD=\${CONFIG_DB_DEBUG_PASSWORD:-debug_root_password}
|
||||
CONFIG_DB_DEBUG_DATABASE=\${CONFIG_DB_DEBUG_DATABASE:-nnks_db_debug}
|
||||
CONFIG_DB_DEBUG_PORT=3306
|
||||
EDGE_BROKER_URL=
|
||||
vendor/bin/pest tests/Integration/EdgeGateway --colors=always"
|
||||
|
||||
- name: Run edge gateway E2E smoke
|
||||
env:
|
||||
RUN_INTEGRATION_TESTS: '1'
|
||||
REDIS_CONFIG_HOST: 127.0.0.1
|
||||
REDIS_CONFIG_DATABASE: '0'
|
||||
REDIS_CONFIG_PASSWORD: ''
|
||||
CONFIG_DB_HOST: 127.0.0.1
|
||||
CONFIG_DB_USER: root
|
||||
CONFIG_DB_PASSWORD: root
|
||||
CONFIG_DB_DATABASE: app_test
|
||||
run: composer test:integration
|
||||
EDGE_GATEWAY_E2E_COPY_CONFIG: "true"
|
||||
EDGE_GATEWAY_E2E_SKIP_COMPOSE_UP: "true"
|
||||
run: node scripts/edge-gateway-e2e.mjs
|
||||
|
||||
- name: Tear down local stack
|
||||
if: always()
|
||||
run: docker compose -f docker-compose.yml -f .github/docker-compose.ci.yml down -v
|
||||
|
||||
release-manager-gate:
|
||||
name: Release Manager gate
|
||||
runs-on: [self-hosted, Linux, X64, pleno, backend]
|
||||
needs: [php, edge-agent, edge-broker, edge-gateway-backend]
|
||||
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||
|
||||
steps:
|
||||
- name: Record Release Manager API gate
|
||||
run: |
|
||||
set -euo pipefail
|
||||
test -n "$RELEASE_MANAGER_GATE_TOKEN" || (echo "RELEASE_MANAGER_GATE_TOKEN is required" >&2; exit 1)
|
||||
response_file="$(mktemp)"
|
||||
http_code="$(curl --show-error --silent \
|
||||
--connect-timeout 10 \
|
||||
--retry 5 \
|
||||
--retry-all-errors \
|
||||
--retry-delay 15 \
|
||||
--retry-max-time 300 \
|
||||
-o "$response_file" \
|
||||
-w '%{http_code}' \
|
||||
-X POST "$RELEASE_MANAGER_GATE_URL" \
|
||||
-H "Authorization: Bearer $RELEASE_MANAGER_GATE_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
--data "{\"channel_slug\":\"stable\",\"app\":\"api\",\"repository\":\"$RELEASE_REPOSITORY\",\"branch\":\"$RELEASE_BRANCH\",\"expected_commit\":\"$RELEASE_EXPECTED_COMMIT\",\"workflow_url\":\"$RELEASE_WORKFLOW_URL\",\"auto_sync\":true,\"wait_timeout_seconds\":300,\"poll_interval_seconds\":10,\"required_checks\":[\"api_gateway\"]}")"
|
||||
response_body="$(cat "$response_file")"
|
||||
rm -f "$response_file"
|
||||
|
||||
if [[ "$http_code" =~ ^2[0-9][0-9]$ ]]; then
|
||||
printf '%s\n' "$response_body"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if printf '%s' "$response_body" | grep -qi '<b>Parse error</b>'; then
|
||||
echo "::warning::Release Manager API returned a PHP parse error while recording the gate. Treating this as a break-glass pass so a fix can be deployed."
|
||||
printf '%s\n' "$response_body"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
printf '%s\n' "$response_body"
|
||||
echo "Release Manager gate failed with HTTP $http_code." >&2
|
||||
exit 1
|
||||
env:
|
||||
RELEASE_MANAGER_GATE_URL: ${{ secrets.RELEASE_MANAGER_GATE_URL || 'https://api.truckwash.io/release/gate/test-runs' }}
|
||||
RELEASE_MANAGER_GATE_TOKEN: ${{ secrets.RELEASE_MANAGER_GATE_TOKEN }}
|
||||
RELEASE_REPOSITORY: ${{ github.repository }}
|
||||
RELEASE_BRANCH: ${{ github.ref_name }}
|
||||
RELEASE_EXPECTED_COMMIT: ${{ github.sha }}
|
||||
RELEASE_WORKFLOW_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
|
||||
|
||||
+8
-1
@@ -9,4 +9,11 @@
|
||||
/services/php/logs/
|
||||
/.idea/
|
||||
.env
|
||||
/services/caddy/logs*
|
||||
/services/caddy/logs*
|
||||
.env.old
|
||||
/.tmp/
|
||||
/.env.staging
|
||||
/services/nginx/app/storage/replication-bootstrap.json
|
||||
/.env_old_2
|
||||
/.openclaw/
|
||||
/services/nginx/app/build/phpstan/
|
||||
|
||||
+19
-139
@@ -1,148 +1,28 @@
|
||||
### Copenhagen Truck Wash API — Development Guidelines (Project‑specific)
|
||||
<!-- AUTOGENERATED: Run `node scripts/sync-ai-workflow.mjs --write`. -->
|
||||
|
||||
#### Scope
|
||||
This document captures project‑specific knowledge for building, configuring, testing, and extending the API. It assumes an advanced developer familiar with Docker, PHP 8.2, and HTTP APIs.
|
||||
# Copenhagen Truck Wash API Development Guidelines
|
||||
|
||||
---
|
||||
This file is generated from the canonical AI workflow and is the supported Junie-facing reference for the backend repository.
|
||||
|
||||
### Build and Configuration
|
||||
## Build And Run
|
||||
|
||||
- Stack overview (local):
|
||||
- Reverse proxy/router: Traefik 2.x (`docker-compose.yml` service `traefik`).
|
||||
- Web server: Caddy (`caddy`) serving the PHP app from `services/nginx/app` and proxied by Traefik.
|
||||
- PHP runtime: Multiple PHP‑FPM containers (`php1`..`php5`), sharing the bind‑mounted app directory.
|
||||
- Redis: `redis` for caching/queues/locks.
|
||||
- Project root: `services/nginx/app` is the effective PHP application root.
|
||||
- Setup: use `./scripts/setup.sh` on POSIX or `powershell -ExecutionPolicy Bypass -File .\scripts\setup.ps1` on Windows.
|
||||
- Start local API stack: `docker compose up -d traefik redis mysql-debug php1 caddy`.
|
||||
- Tail logs with `docker compose logs -f --tail=200 php1`.
|
||||
|
||||
- App location: `services/nginx/app` is the effective application root (many scripts/tests derive `WD` to point here).
|
||||
## Testing
|
||||
|
||||
- Composer and dependencies:
|
||||
- `services/php/Dockerfile` installs Composer and PHP extensions.
|
||||
- `services/php/docker-entrypoint.sh` performs a guarded Composer install on `php1` at container start when `AUTO_COMPOSER_INSTALL=true` and `composer.json` is present.
|
||||
- App dependencies live under `services/nginx/app/composer.json` (note: very light, primarily runtime libs; dev tool `rector/rector`).
|
||||
- Supported backend validation runs in `php1`.
|
||||
- Unit tests: `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:unit"`.
|
||||
- Integration tests: `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:integration"`.
|
||||
- API tests: `docker compose exec -T php1 sh -lc "cd /var/www/html && composer test:api"`.
|
||||
- Prefer the narrowest suite that proves the change, then run the broader suite that matches the risk.
|
||||
|
||||
- Configuration source of truth during containerized runs is environment variables consumed by `services/nginx/app/config.php`.
|
||||
- `config.php` requires `USE_ENV=true`; otherwise it throws an exception. Many CLI scripts/tests bypass `config.php` entirely to remain env‑agnostic.
|
||||
## Workflow Notes
|
||||
|
||||
- Local run targets and routing:
|
||||
- Traefik exposes:
|
||||
- `http://localhost` → routes to Caddy → app (HTTP only for dev).
|
||||
- `https://localhost` → also mapped, using Traefik’s default/self‑signed dev cert.
|
||||
- `http(s)://localhost/api/*` → Traefik strip‑prefix middleware forwards to Caddy; the app sees paths without the `/api` prefix.
|
||||
- For production‑like HTTPS with real certs, see `README.md` for `LETSENCRYPT_PATH` mounting strategy (only needed if you want the exact `api.truckwash.dk` TLS behavior locally).
|
||||
- Generated assistant metadata is checked with `node scripts/sync-ai-workflow.mjs --check`.
|
||||
- Route and schema changes require matching updates to `openapi.yaml`.
|
||||
- Runtime OpenAI product behavior is out of scope for this workflow bundle unless a task explicitly changes product code.
|
||||
|
||||
- Minimal bring‑up for local development:
|
||||
- Prerequisites: Docker Desktop 4.x+.
|
||||
- First run will build PHP images and start dependent services. Composer install runs automatically on `php1`.
|
||||
- Recommended minimal set:
|
||||
- `docker compose up -d traefik redis php1 caddy`
|
||||
- Full set (scale out PHP or add observability as needed):
|
||||
- `docker compose up -d` (starts `traefik`, `redis`, `caddy`, `php1`..`php5`, and other declared services).
|
||||
- Logs:
|
||||
- `docker compose logs -f caddy`
|
||||
- `docker compose logs -f php1`
|
||||
- `docker compose logs -f traefik`
|
||||
|
||||
- Security note: `docker-compose.yml` currently embeds sensitive env values (DB, API tokens). Treat the file as secret in private repos; never re‑publish as is. Prefer `.env` overrides and secrets providers for wider teams.
|
||||
|
||||
---
|
||||
|
||||
### Testing
|
||||
|
||||
The repository does not use PHPUnit for the app. Instead, tests are lightweight CLI scripts under `services/nginx/app/tests`. Conventions:
|
||||
|
||||
- Test style
|
||||
- Self‑contained procedural PHP scripts intended to be executed with `php`. No framework required.
|
||||
- Many tests define the `WD` constant to the app root and then `require_once` specific class/trait/interface files they exercise.
|
||||
- Integration‑style scripts that need configuration will rely on `services/nginx/app/config.php` and so must run within a properly provisioned environment (Docker containers with `USE_ENV=true`).
|
||||
- Fast unit‑style scripts should avoid `config.php` and any I/O; they manually include only what’s needed and/or use test doubles.
|
||||
|
||||
- Running tests from host (fastest path)
|
||||
- Prereq: PHP CLI available on host. Verified with:
|
||||
- `php -v` → observed on our env: `PHP 8.2.30 (cli)`
|
||||
- Example: an existing, fully self‑contained test validating subuser permission wiring:
|
||||
- Command:
|
||||
- `php services/nginx/app/tests/subusers/SelfservePermissionInitTest.php`
|
||||
- Verified output (captured):
|
||||
-
|
||||
```
|
||||
✔ SELFSERVE_ADD is granted as expected
|
||||
✔ SELFSERVE_LIST is not granted as expected
|
||||
✔ SELFSERVE_EDIT is not granted as expected
|
||||
✔ SELFSERVEDELETE is not granted as expected
|
||||
SelfservePermissionInitTest completed.
|
||||
```
|
||||
|
||||
- Running tests inside Docker (when host PHP is unavailable or when env is required)
|
||||
- Ensure containers are up: `docker compose up -d traefik redis php1 caddy`
|
||||
- Execute a test within `php1`:
|
||||
- `docker compose exec -T php1 php /var/www/html/tests/subusers/SelfservePermissionInitTest.php`
|
||||
- For integration tests that depend on `config.php` (e.g., Redis/DB), environment variables are preconfigured in `docker-compose.yml` for the PHP services. Running inside `php1` will satisfy `USE_ENV=true`.
|
||||
|
||||
- Adding a new test
|
||||
- Place the file under `services/nginx/app/tests/<domain>/YourTest.php`.
|
||||
- At top of the file, define `WD` if not already defined:
|
||||
```php
|
||||
if (!defined('WD')) { define('WD', dirname(__DIR__, 2)); }
|
||||
```
|
||||
- Prefer self‑contained tests that avoid I/O. If you need to touch internal classes without Composer autoloading, include files directly, mirroring existing tests.
|
||||
- If the test must hit Redis/DB or rely on globals from `config.php`, run it inside a PHP container (`php1`) with `USE_ENV=true`.
|
||||
|
||||
- Demonstration: creating and running a minimal test
|
||||
- We created a temporary, env‑agnostic test at `services/nginx/app/tests/examples/HelloWorldTest.php` with these semantics:
|
||||
- Define `WD`, perform trivial assertions, and print success markers.
|
||||
- Command executed and verified output:
|
||||
- Command:
|
||||
- `php services/nginx/app/tests/examples/HelloWorldTest.php`
|
||||
- Output (captured):
|
||||
-
|
||||
```
|
||||
✔ Basic arithmetic works (2 + 2 = 4)
|
||||
✔ WD points to the application root: C:\\Users\\2jepp\\PhpstormProjects\\api\\services\\nginx\\app
|
||||
HelloWorldTest completed.
|
||||
```
|
||||
- The example file was removed afterwards to keep the repository unchanged. You can replicate by creating a similar file and removing it after execution.
|
||||
|
||||
---
|
||||
|
||||
### Additional Development Information
|
||||
|
||||
- Routing and HTTP surface
|
||||
- Routes live under `services/nginx/app/routes`. Example route `exampleRoute.php` exposes `GET /example` returning `{"message":"Hello World!"}`. Local access paths (with Traefik):
|
||||
- `http://localhost/example` (direct)
|
||||
- `http://localhost/api/example` (Traefik strip‑prefix `/api` → still routes to `/example` in the app).
|
||||
- The OpenAPI contract is at the repo root `openapi.yaml` (large, authoritative). Keep it synchronized with implemented routes and payloads.
|
||||
|
||||
- Module layout and traits
|
||||
- Domain modules live in `services/nginx/app/modules/*` and are heavily trait‑based. Tests often pull in precise files from here to avoid full app bootstrap.
|
||||
- Example: subusers module (`modules/subusers/...`) provides permission node containers and helpers. The test `tests/subusers/SelfservePermissionInitTest.php` demonstrates overriding DB‑backed methods to inject permissions for fast, deterministic checks.
|
||||
|
||||
- Config and globals
|
||||
- `services/nginx/app/config.php` populates globals like `$CONFIG_DB`, `$REDIS_CONFIG`, etc., but only when `USE_ENV=true`. If you see tests throwing “Environment variables are not set”, run them inside Docker or set required envs for host PHP.
|
||||
|
||||
- Code style
|
||||
- `.editorconfig` at repo root configures formatting. Key PHP rules:
|
||||
- Encoding: UTF‑8 with CRLF line endings.
|
||||
- Indent: 4 spaces; continuation indent 4.
|
||||
- Class brace style: next_line; function/method blank lines: 1.
|
||||
- Import sorting: alphabetic; various alignment toggles are disabled.
|
||||
- Match existing patterns (procedural scripts for tests; namespacing in app code; traits for cross‑cutting concerns). Avoid adding new frameworks for tests unless explicitly requested.
|
||||
|
||||
- Composer / Autoload
|
||||
- There is no Composer autoload configured for the app code in `composer.json`; tests include files directly. If you introduce autoloading, coordinate with Docker entrypoint behaviors and ensure zero‑downtime for existing scripts.
|
||||
|
||||
- Performance & reliability hints for tests
|
||||
- Prefer small, deterministic CLI scripts; inject dependencies and override I/O methods (as shown in `SelfservePermissionInitTest.php`).
|
||||
- Avoid hitting external services (Stripe, e‑conomic, MinIO) from tests; instead, stub/override or provide fakes.
|
||||
|
||||
---
|
||||
|
||||
### Quick Reference
|
||||
|
||||
- Bring up minimal dev stack:
|
||||
- `docker compose up -d traefik redis php1 caddy`
|
||||
|
||||
- Run a fast, self‑contained test (host PHP):
|
||||
- `php services/nginx/app/tests/subusers/SelfservePermissionInitTest.php`
|
||||
|
||||
- Run a test inside Docker (env‑backed):
|
||||
- `docker compose exec -T php1 php /var/www/html/tests/subusers/SelfservePermissionInitTest.php`
|
||||
Canonical workflow reference: `.ai-workflow/workflow.md`.
|
||||
|
||||
Binary file not shown.
+4
-2
@@ -40,13 +40,15 @@ COPY . /var/www/html
|
||||
|
||||
# Copy Nginx configuration file
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
COPY services/php/php-fpm-pool.conf /usr/local/etc/php-fpm.d/zz-pleno-workers.conf
|
||||
|
||||
# Install Composer
|
||||
COPY --from=composer:2.6 /usr/bin/composer /usr/bin/composer
|
||||
|
||||
# Runtime bootstrap: lightweight entrypoint to ensure Composer deps exist when app is bind-mounted
|
||||
COPY services/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
RUN sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh \
|
||||
&& chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
# Install PHP dependencies through Composer (only where composer.json exists)
|
||||
# Main app dependencies
|
||||
@@ -72,4 +74,4 @@ EXPOSE 80 443
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
|
||||
# Start services when no command is provided (docker-compose overrides this with ["php-fpm"])
|
||||
CMD ["php-fpm"]
|
||||
CMD ["php-fpm"]
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
FROM php:8.2.15-fpm
|
||||
|
||||
WORKDIR /var/www/html
|
||||
|
||||
COPY --from=composer:2.6 /usr/bin/composer /usr/bin/composer
|
||||
|
||||
RUN set -eux; \
|
||||
apt-get update; \
|
||||
apt-get install -y --no-install-recommends \
|
||||
$PHPIZE_DEPS \
|
||||
ca-certificates \
|
||||
curl \
|
||||
default-mysql-client \
|
||||
git \
|
||||
imagemagick \
|
||||
libfreetype6-dev \
|
||||
libjpeg62-turbo-dev \
|
||||
libmagickcore-dev \
|
||||
libmagickwand-dev \
|
||||
libonig-dev \
|
||||
libpng-dev \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
libzip-dev \
|
||||
mariadb-client \
|
||||
nginx \
|
||||
pkg-config \
|
||||
redis-tools \
|
||||
unzip \
|
||||
zip; \
|
||||
update-ca-certificates; \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg; \
|
||||
docker-php-ext-install -j"$(nproc)" \
|
||||
bcmath \
|
||||
exif \
|
||||
gd \
|
||||
mbstring \
|
||||
mysqli \
|
||||
pcntl \
|
||||
pdo_mysql \
|
||||
sockets \
|
||||
zip; \
|
||||
pecl install imagick-3.7.0 redis; \
|
||||
docker-php-ext-enable imagick redis; \
|
||||
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $PHPIZE_DEPS; \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY services/nginx/app/ /var/www/html/
|
||||
COPY services/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
COPY services/php/php-fpm-pool.conf /usr/local/etc/php-fpm.d/zz-pleno-workers.conf
|
||||
COPY services/coolify/api/nginx.conf /etc/nginx/nginx.conf
|
||||
COPY services/coolify/api/start.sh /usr/local/bin/coolify-api-start
|
||||
|
||||
RUN set -eux; \
|
||||
rm -f /var/www/html/storage/replication-bootstrap.json /var/www/html/storage/replication-bootstrap-*.json; \
|
||||
sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh /usr/local/bin/coolify-api-start; \
|
||||
chmod +x /usr/local/bin/docker-entrypoint.sh /usr/local/bin/coolify-api-start; \
|
||||
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction -d /var/www/html; \
|
||||
if [ -f /var/www/html/modules/washcertificates/composer.json ]; then \
|
||||
COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --prefer-dist --optimize-autoloader --no-interaction -d /var/www/html/modules/washcertificates; \
|
||||
fi; \
|
||||
COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload --no-dev --optimize --no-interaction -d /var/www/html; \
|
||||
php -d display_errors=1 -r 'require "/var/www/html/vendor/autoload.php"; exit(interface_exists("Psr\\Http\\Message\\UriInterface") && interface_exists("Psr\\Http\\Message\\StreamInterface") ? 0 : 1);'; \
|
||||
chown -R www-data:www-data /var/www/html; \
|
||||
chmod -R 755 /var/www/html
|
||||
|
||||
ENV APP_DIR=/var/www/html \
|
||||
MODULE_DIR=/var/www/html/modules/washcertificates \
|
||||
AUTO_COMPOSER_INSTALL=false \
|
||||
COMPOSER_ALLOW_SUPERUSER=1
|
||||
|
||||
EXPOSE 80
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||
CMD ["coolify-api-start"]
|
||||
@@ -26,6 +26,32 @@ The API is accessible at:
|
||||
- `https://localhost` (using Traefik default cert)
|
||||
- `http(s)://localhost/api/` (proxied with `/api` prefix stripped)
|
||||
|
||||
### Test Gateway Container
|
||||
To run a real PHP edge agent as a disposable Dockerized test gateway against the local stack, first create an install token from the edge gateway admin UI, then start the helper:
|
||||
|
||||
```powershell
|
||||
.\scripts\test-gateway.ps1 start --install-token <token>
|
||||
```
|
||||
|
||||
```bash
|
||||
./scripts/test-gateway.sh start --install-token <token>
|
||||
```
|
||||
|
||||
The helper will:
|
||||
- start the local compose dependencies if needed
|
||||
- claim a gateway through `http://localhost/api/edge-agent/claim`
|
||||
- write the generated config to `.tmp/test-gateway/test-gateway.json`
|
||||
- build `services/edge-agent/Dockerfile.test-gateway`
|
||||
- run the PHP agent container on the local compose network
|
||||
|
||||
Useful follow-up commands:
|
||||
|
||||
```powershell
|
||||
.\scripts\test-gateway.ps1 logs
|
||||
.\scripts\test-gateway.ps1 status
|
||||
.\scripts\test-gateway.ps1 stop
|
||||
```
|
||||
|
||||
To start all services including multiple PHP workers and development tools (Jaeger, Portainer):
|
||||
```powershell
|
||||
docker compose --profile dev up -d
|
||||
@@ -37,6 +63,18 @@ Configuration is primarily managed via environment variables.
|
||||
- `services/nginx/app/config.php` loads configuration from the environment (requires `USE_ENV=true`).
|
||||
- `php1` performs an automatic `composer install` on startup if `AUTO_COMPOSER_INSTALL=true`.
|
||||
|
||||
#### Environment Change Runbook
|
||||
When updating `.env` values used by PHP containers (for example e-conomic tokens), recreate affected services so Docker applies the new env:
|
||||
|
||||
```powershell
|
||||
docker compose up -d --force-recreate php1 php2 php3 php4 php5 php-cron
|
||||
```
|
||||
|
||||
#### Edge Broker Public URL
|
||||
Set `EDGE_PUBLIC_BROKER_URL` to the public route that serves the edge broker, including the path prefix handled by the proxy. Local Traefik uses `http://localhost/api/edge-broker`; production routes use the public broker prefix, for example `https://api.truckwash.dk/edge-broker`.
|
||||
|
||||
The browser terminal connects to the exact advertised `EDGE_PUBLIC_BROKER_URL` plus `/ws/browser-shell`. That URL must be routable through the proxy to the edge-broker service. Do not rely on derived `/api/edge-broker` fallback paths outside the local Traefik setup.
|
||||
|
||||
## Testing
|
||||
|
||||
The project now uses [Pest](https://pestphp.com/) as the primary test runner in `services/nginx/app`.
|
||||
@@ -48,9 +86,20 @@ All commands are run from `services/nginx/app`:
|
||||
composer test
|
||||
composer test:unit
|
||||
composer test:integration
|
||||
composer test:api
|
||||
composer test:coverage
|
||||
```
|
||||
|
||||
For local Docker development, run the PHP suites inside `php1`:
|
||||
|
||||
```powershell
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer test:unit"
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer test:integration"
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer test:api"
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer run-script test:api:edge"
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer run-script test:integration:edge"
|
||||
```
|
||||
|
||||
Integration tests are opt-in and should be run with required services available:
|
||||
|
||||
```powershell
|
||||
@@ -58,6 +107,66 @@ $env:RUN_INTEGRATION_TESTS='1'
|
||||
composer test:integration
|
||||
```
|
||||
|
||||
### Edge Gateway Regression Coverage
|
||||
The dedicated backend regression lane for the PHP edge gateway stack is split into:
|
||||
|
||||
- API contract tests for operator, agent, and broker-facing routes
|
||||
- DB-backed integration tests for install sessions, heartbeats, tasks, logs, statistics, and shell persistence
|
||||
- a local dockerized smoke that runs the real PHP edge agent against the local backend and broker
|
||||
|
||||
Run the targeted PHP suites inside `php1`:
|
||||
|
||||
```powershell
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer run-script test:api:edge"
|
||||
docker exec php1 sh -lc "cd /var/www/html && composer run-script test:integration:edge"
|
||||
```
|
||||
|
||||
Run the full local smoke from `backend-php` on the host:
|
||||
|
||||
```powershell
|
||||
node .\scripts\edge-gateway-e2e.mjs
|
||||
```
|
||||
|
||||
The E2E smoke expects the local compose stack and Docker daemon to be available. It boots a disposable gateway container, waits for a real heartbeat, validates live operations and telemetry, and verifies browser shell transcript persistence.
|
||||
|
||||
### Public Staging Edge-Gateway Smoke
|
||||
`api.truckwash.io:4433` is the public staging ingress. For Edge Gateways v2, the router must serve the canonical artifacts from `services/nginx/app/resources/edge-gateway-agent`, not from the legacy `dist/agent.mjs` output or a separate runtime mount.
|
||||
|
||||
To verify the public staging stack after a deploy, use a real installer token and run:
|
||||
|
||||
```powershell
|
||||
node .\scripts\staging-edge-gateway-smoke.mjs --install-token <token>
|
||||
```
|
||||
|
||||
```bash
|
||||
node ./scripts/staging-edge-gateway-smoke.mjs --install-token <token>
|
||||
```
|
||||
|
||||
The smoke check fails unless all of these return `200` from the public domain:
|
||||
- `/ping`
|
||||
- `/edge-agent/artifacts/agent.php`
|
||||
- `/edge-agent/artifacts/truckwash-edge-agent.service`
|
||||
- `/edge-agent/install.sh?token=<real token>`
|
||||
|
||||
### API Test Suite
|
||||
The `Api` suite exercises real HTTP endpoints instead of calling route handlers in-process.
|
||||
|
||||
- `composer test:api` enables `RUN_API_TESTS=1` automatically.
|
||||
- By default the suite starts a temporary PHP server with `php -S 127.0.0.1:18080 index.php` and hits the app over HTTP.
|
||||
- The suite covers the real router, request parsing, auth headers, status codes, and JSON response envelopes.
|
||||
- Tests run serially and use explicit database/Redis fixtures plus reverse-order cleanup instead of transaction rollbacks.
|
||||
- The default phase-1 coverage includes `/ping`, auth session routes, departments, department categories, and orders CRUD including the legacy `PUT /order` alias.
|
||||
- API server logs are written to `services/nginx/app/build/logs/api-server.out.log` and `services/nginx/app/build/logs/api-server.err.log`.
|
||||
|
||||
To point the suite at an already-running base URL instead of the self-started PHP server:
|
||||
|
||||
```powershell
|
||||
$env:API_TEST_BASE_URL='http://127.0.0.1:18080'
|
||||
composer test:api
|
||||
```
|
||||
|
||||
The suite requires an initialized application schema. Redis-backed flows are used when Redis is configured, but the suite can still boot without `caddy` or the full reverse-proxy stack.
|
||||
|
||||
### Run Tests Against A Cloned Live DB (Docker-Isolated)
|
||||
Use the helper scripts in `scripts/` to:
|
||||
1. Clone the configured live DB into a local MySQL Docker container.
|
||||
@@ -96,6 +205,8 @@ FORCE=1 ./scripts/clone-live-to-debug-db.sh
|
||||
### Test Layout
|
||||
- `tests/Unit/*`: isolated unit and route-level behavior tests.
|
||||
- `tests/Integration/*`: Redis/DB-backed tests intended for Docker/CI environments.
|
||||
- `tests/Api/*`: real HTTP endpoint tests that boot a temporary PHP server and assert full request/response behavior.
|
||||
- `tests/Api/api_coverage_manifest.php`: selected phase-1 endpoint manifest used by the API meta-test to enforce happy-path and failure coverage.
|
||||
- `tests/<legacy-domain>/*`: legacy procedural scripts retained during migration; keep them runnable until matching Pest coverage exists.
|
||||
|
||||
## Logs & Monitoring
|
||||
@@ -106,4 +217,22 @@ FORCE=1 ./scripts/clone-live-to-debug-db.sh
|
||||
|
||||
## API Documentation
|
||||
- **OpenAPI:** The authoritative OpenAPI 3.0 contract is at `openapi.yaml`.
|
||||
- **Self-Serve Module Guide:** Implementation and API guide at `services/nginx/app/modules/selfserve/selfserve.md`.
|
||||
- **Writerside:** Documentation projects are located in `/Writerside` and `/Writerside2`.
|
||||
- **Generated Writerside API Reference:** The active Writerside project lives in `/documentation` and is generated from `openapi.yaml`.
|
||||
|
||||
### Writerside OpenAPI Generation Workflow
|
||||
Prerequisite:
|
||||
- Python 3 with PyYAML (`pip install pyyaml`)
|
||||
|
||||
Run from repository root:
|
||||
|
||||
```powershell
|
||||
python scripts/generate_writerside_openapi_docs.py generate
|
||||
python scripts/generate_writerside_openapi_docs.py check
|
||||
```
|
||||
|
||||
Contribution rule:
|
||||
1. Update `openapi.yaml`.
|
||||
2. Regenerate docs (`python scripts/generate_writerside_openapi_docs.py generate`).
|
||||
3. Verify (`python scripts/generate_writerside_openapi_docs.py check`).
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
# Copenhagen Truck Wash API — Writerside Style Guide
|
||||
# This file defines the style rules for our documentation.
|
||||
# For more details, see https://vale.sh/docs/topics/styles/#extension-points
|
||||
|
||||
# --- RULE: Encourage descriptive language (existence) ---
|
||||
extends: existence
|
||||
message: "Avoid using '%s'. Try to be more descriptive or direct."
|
||||
level: warning
|
||||
ignorecase: true
|
||||
tokens:
|
||||
- simply
|
||||
- just
|
||||
- easy
|
||||
- easily
|
||||
- simple
|
||||
- basically
|
||||
- obviously
|
||||
- actually
|
||||
- very
|
||||
- really
|
||||
- pretty
|
||||
- quite
|
||||
- rather
|
||||
|
||||
---
|
||||
# --- RULE: Flag incomplete documentation (existence) ---
|
||||
extends: existence
|
||||
message: "Incomplete documentation: '%s' found. Please provide comprehensive details."
|
||||
level: error
|
||||
ignorecase: true
|
||||
tokens:
|
||||
- TBD
|
||||
- TO BE DETERMINED
|
||||
- TODO
|
||||
- FIXME
|
||||
- Placeholder
|
||||
- Coming soon
|
||||
|
||||
---
|
||||
# --- RULE: Preferred terminology (substitution) ---
|
||||
extends: substitution
|
||||
message: "Consider using '%s' instead of its informal or less descriptive counterpart."
|
||||
level: suggestion
|
||||
ignorecase: true
|
||||
swap:
|
||||
check[ -]box: checkbox
|
||||
right-click menu: context menu|popup menu
|
||||
webpage: page
|
||||
click on: click|select
|
||||
press: press|select
|
||||
setup: set up
|
||||
log[ -]in: sign in|log in
|
||||
e-mail: email
|
||||
interface: UI|interface
|
||||
the following: :
|
||||
utilize: use
|
||||
functionality: feature|function
|
||||
additional: more|extra
|
||||
|
||||
---
|
||||
# --- RULE: Avoid jargon and filler (existence) ---
|
||||
extends: existence
|
||||
message: "Avoid jargon or filler phrases like '%s'."
|
||||
level: warning
|
||||
ignorecase: true
|
||||
tokens:
|
||||
- leverage
|
||||
- bandwidth
|
||||
- synergy
|
||||
- best-in-class
|
||||
- cutting-edge
|
||||
- robust
|
||||
- state-of-the-art
|
||||
- mission-critical
|
||||
- go-forward
|
||||
- paradigm shift
|
||||
Binary file not shown.
+29
-6
@@ -4,12 +4,13 @@ $CONFIG_DB = [
|
||||
'user' => '', // Username of the database server e.g. root
|
||||
'password' => '', // Password of the database server e.g. password123
|
||||
'database' => '', // Name of the database e.g. my_database
|
||||
'port' => 3306, // Port of the database server e.g. 3306
|
||||
'ssl_mode' => 'DISABLED' // SSL mode for mysqldump: DISABLED, PREFERRED, REQUIRED, VERIFY_CA, VERIFY_IDENTITY
|
||||
];
|
||||
$DEBUG = true; // Set to true to enable debugging (Error messages will be shown, and this should never be used in production)
|
||||
$USE_PROD_ECONOMIC_IN_DEBUG = true; // Set to true to use the production economic API in debug mode
|
||||
$ENCRYPTION_KEY = ''; // 44 Characters long encryption key
|
||||
$CORS = '*'; // Set to the domain that should be allowed to access the API e.g. https://example.com
|
||||
$CORS = '*'; // Set to comma-separated allowed origins e.g. https://example.com,https://api-v2.truckwash.io
|
||||
$ECONOMIC_API = [
|
||||
'app_access_grant' => '', // Economic API access grant token (1)
|
||||
'app_access_grant2' => '', // Economic API access grant token (2)
|
||||
@@ -33,8 +34,10 @@ $MINIO = [
|
||||
$SLACK_DEFAULT_WEBHOOK = ''; // Default Slack webhook URL e.g. https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX
|
||||
$REDIS_CONFIG = [
|
||||
'host' => '', // Redis host (IP address)
|
||||
'user' => '', // Redis user
|
||||
'database' => 0, // Redis database number (0-15)
|
||||
'password' => '' // Redis password
|
||||
'password' => '', // Redis password
|
||||
'port' => 6379 // Redis port
|
||||
];
|
||||
|
||||
// Set the timezone
|
||||
@@ -50,6 +53,7 @@ if (isset($_ENV['USE_ENV']) && $_ENV['USE_ENV'] === 'true') {
|
||||
'CONFIG_DB_USER' => 'user',
|
||||
'CONFIG_DB_PASSWORD' => 'password',
|
||||
'CONFIG_DB_DATABASE' => 'database',
|
||||
'CONFIG_DB_PORT' => 'port',
|
||||
'CONFIG_DB_SSL_MODE' => 'ssl_mode',
|
||||
'DEBUG' => 'DEBUG',
|
||||
'ENCRYPTION_KEY' => 'ENCRYPTION_KEY',
|
||||
@@ -66,7 +70,10 @@ if (isset($_ENV['USE_ENV']) && $_ENV['USE_ENV'] === 'true') {
|
||||
'SLACK_DEFAULT_WEBHOOK' => 'SLACK_DEFAULT_WEBHOOK',
|
||||
'REDIS_CONFIG_HOST' => 'host',
|
||||
'REDIS_CONFIG_DATABASE' => 'database',
|
||||
'REDIS_CONFIG_PASSWORD' => 'password'
|
||||
'REDIS_CONFIG_PASSWORD' => 'password',
|
||||
'REDIS_CONFIG_PORT' => 'port',
|
||||
'REDIS_CONFIG_USER' => 'user',
|
||||
'REDIS_CONFIG_DEBUG_PASSWORD' => 'debug_password'
|
||||
];
|
||||
$dbTarget = strtolower(trim((string)($_ENV['CONFIG_DB_TARGET'] ?? 'live')));
|
||||
if ($dbTarget !== 'live' && $dbTarget !== 'debug') {
|
||||
@@ -94,6 +101,7 @@ if (isset($_ENV['USE_ENV']) && $_ENV['USE_ENV'] === 'true') {
|
||||
'user' => $resolveDbValue('USER'),
|
||||
'password' => $resolveDbValue('PASSWORD'),
|
||||
'database' => $resolveDbValue('DATABASE'),
|
||||
'port' => (int)($resolveDbValue('PORT') ?: 3306),
|
||||
'ssl_mode' => $resolveDbValue('SSL_MODE') !== '' ? $resolveDbValue('SSL_MODE') : 'DISABLED'
|
||||
];
|
||||
/**
|
||||
@@ -140,13 +148,28 @@ if (isset($_ENV['USE_ENV']) && $_ENV['USE_ENV'] === 'true') {
|
||||
* Set the Slack default webhook
|
||||
*/
|
||||
$SLACK_DEFAULT_WEBHOOK = $_ENV['SLACK_DEFAULT_WEBHOOK'];
|
||||
$resolveRedisValue = function (string $key) use ($dbTarget): string {
|
||||
$liveKey = 'REDIS_CONFIG_' . $key;
|
||||
$debugKey = 'REDIS_CONFIG_DEBUG_' . $key;
|
||||
$liveValue = (string)($_ENV[$liveKey] ?? '');
|
||||
$debugValue = (string)($_ENV[$debugKey] ?? '');
|
||||
|
||||
if ($dbTarget === 'debug' && $debugValue !== '') {
|
||||
return $debugValue;
|
||||
}
|
||||
|
||||
return $liveValue;
|
||||
};
|
||||
|
||||
/**
|
||||
* Set the Redis configuration
|
||||
*/
|
||||
$REDIS_CONFIG = [
|
||||
'host' => $_ENV['REDIS_CONFIG_HOST'],
|
||||
'database' => $_ENV['REDIS_CONFIG_DATABASE'],
|
||||
'password' => $_ENV['REDIS_CONFIG_PASSWORD']
|
||||
'host' => $resolveRedisValue('HOST'),
|
||||
'user' => $resolveRedisValue('USER'),
|
||||
'database' => $resolveRedisValue('DATABASE'),
|
||||
'password' => $resolveRedisValue('PASSWORD'),
|
||||
'port' => (int)($resolveRedisValue('PORT') ?: 6379)
|
||||
];
|
||||
|
||||
// Set the timezone
|
||||
|
||||
@@ -46,6 +46,32 @@ services:
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
|
||||
edge-broker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/edge-broker/Dockerfile
|
||||
container_name: edge-broker
|
||||
environment:
|
||||
EDGE_AUTH_MODE: ${EDGE_AUTH_MODE:-strict}
|
||||
EDGE_MANAGER_URL: ${EDGE_MANAGER_URL:-http://caddy}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.edge-broker-api.rule=Host(`api.example.com`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api.tls.certresolver=le"
|
||||
- "traefik.http.routers.edge-broker-api.middlewares=edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local.entrypoints=web"
|
||||
- "traefik.http.routers.edge-broker-local.middlewares=edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local.service=edge-broker"
|
||||
- "traefik.http.middlewares.edge-broker-strip.stripPrefix.prefixes=/edge-broker"
|
||||
- "traefik.http.middlewares.edge-broker-strip-local.stripPrefix.prefixes=/api/edge-broker"
|
||||
- "traefik.http.services.edge-broker.loadbalancer.server.port=4300"
|
||||
|
||||
|
||||
caddy:
|
||||
image: caddy:2.7.6-alpine
|
||||
container_name: caddy
|
||||
@@ -81,11 +107,14 @@ services:
|
||||
depends_on:
|
||||
- redis
|
||||
- mysql
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env.example
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "true"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
@@ -99,11 +128,14 @@ services:
|
||||
depends_on:
|
||||
- redis
|
||||
- mysql
|
||||
- edge-broker
|
||||
command: ["sh", "-c", "while true; do php index.php run cron; sleep 60; done"]
|
||||
env_file:
|
||||
- .env.example
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
@@ -140,4 +172,4 @@ services:
|
||||
volumes:
|
||||
mysql_data:
|
||||
redis_data:
|
||||
n8n_data:
|
||||
n8n_data:
|
||||
|
||||
@@ -0,0 +1,440 @@
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:2.11
|
||||
container_name: traefik
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "4433:4433"
|
||||
- "9100:9100"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./services/traefik/traefik.yml:/etc/traefik/traefik.yml:ro
|
||||
- ./services/traefik/dynamic.yml:/etc/traefik/dynamic.yml:ro
|
||||
- ./services/traefik/acme.json:/acme.json
|
||||
- ./services/traefik/acme-io.json:/acme-io.json
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.truckwash.dk`)"
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.tls=true"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=le"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
- "traefik.http.routers.traefik.middlewares=dashboard-allow-local@file,dashboard-auth@file"
|
||||
- "traefik.http.routers.traefik-http.rule=Host(`traefik.truckwash.dk`)"
|
||||
- "traefik.http.routers.traefik-http.entrypoints=web"
|
||||
- "traefik.http.routers.traefik-http.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.traefik-http.service=api@internal"
|
||||
- "traefik.http.routers.traefik-local.rule=Host(`traefik.localhost`)"
|
||||
- "traefik.http.routers.traefik-local.entrypoints=web"
|
||||
- "traefik.http.routers.traefik-local.service=api@internal"
|
||||
- "traefik.http.routers.traefik-local.middlewares=dashboard-allow-local@file,dashboard-auth@file"
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
container_name: redis
|
||||
volumes:
|
||||
- nnks_redis:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
redis-staging:
|
||||
image: redis:7
|
||||
container_name: redis-staging
|
||||
volumes:
|
||||
- nnks_redis_staging:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
mysql-debug:
|
||||
image: mysql:8.4
|
||||
container_name: mysql-debug
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${CONFIG_DB_DEBUG_PASSWORD:-debug_root_password}
|
||||
MYSQL_DATABASE: ${CONFIG_DB_DEBUG_DATABASE:-nnks_db_debug}
|
||||
ports:
|
||||
- "3307:3306"
|
||||
volumes:
|
||||
- db_debug_data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "MYSQL_PWD=$$MYSQL_ROOT_PASSWORD mysqladmin -u root ping --silent"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 20s
|
||||
|
||||
edge-broker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/edge-broker/Dockerfile
|
||||
container_name: edge-broker
|
||||
environment:
|
||||
EDGE_AUTH_MODE: ${EDGE_AUTH_MODE:-manager}
|
||||
EDGE_MANAGER_URL: ${EDGE_MANAGER_URL:-http://caddy}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.edge-broker-api.rule=Host(`api.truckwash.dk`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api.tls.certresolver=le"
|
||||
- "traefik.http.routers.edge-broker-api.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-api-io.rule=Host(`api.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api-io.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api-io.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api-io.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-api-io.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api-io.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api-io.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-api-v2.rule=Host(`api-v2.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api-v2.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api-v2.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api-v2.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-api-v2.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api-v2.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api-v2.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-api-staging.rule=Host(`api.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.edge-broker-api-staging.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api-staging.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-api-staging.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api-staging.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api-staging.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local.entrypoints=web"
|
||||
- "traefik.http.routers.edge-broker-local.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local-secure.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-local-secure.tls=true"
|
||||
- "traefik.http.routers.edge-broker-local-secure.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local-secure.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local-secure.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local-staging.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.edge-broker-local-staging.tls=true"
|
||||
- "traefik.http.routers.edge-broker-local-staging.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local-staging.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local-staging.service=edge-broker"
|
||||
- "traefik.http.middlewares.edge-broker-strip.stripPrefix.prefixes=/edge-broker"
|
||||
- "traefik.http.middlewares.edge-broker-strip-local.stripPrefix.prefixes=/api/edge-broker"
|
||||
- "traefik.http.services.edge-broker.loadbalancer.server.port=4300"
|
||||
|
||||
caddy:
|
||||
image: caddy:2.7.6-alpine
|
||||
container_name: caddy
|
||||
depends_on:
|
||||
- php1
|
||||
- php2
|
||||
- php3
|
||||
- php4
|
||||
- php5
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/caddy/Caddyfile:/etc/caddy/Caddyfile:ro
|
||||
- ./services/caddy/logs:/var/log/caddy
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.api.rule=Host(`api.truckwash.dk`)"
|
||||
- "traefik.http.routers.api.entrypoints=websecure"
|
||||
- "traefik.http.routers.api.tls=true"
|
||||
- "traefik.http.routers.api.tls.domains[0].main=api.truckwash.dk"
|
||||
- "traefik.http.routers.api.tls.certresolver=le"
|
||||
- "traefik.http.routers.api.service=caddy"
|
||||
- "traefik.http.routers.api.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
- "traefik.http.routers.api-io.rule=Host(`api.truckwash.io`)"
|
||||
- "traefik.http.routers.api-io.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-io.tls=true"
|
||||
- "traefik.http.routers.api-io.tls.domains[0].main=api.truckwash.io"
|
||||
- "traefik.http.routers.api-io.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.api-io.service=caddy"
|
||||
- "traefik.http.routers.api-io.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
- "traefik.http.routers.api-v2.rule=Host(`api-v2.truckwash.io`)"
|
||||
- "traefik.http.routers.api-v2.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-v2.tls=true"
|
||||
- "traefik.http.routers.api-v2.tls.domains[0].main=api-v2.truckwash.io"
|
||||
- "traefik.http.routers.api-v2.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.api-v2.service=caddy"
|
||||
- "traefik.http.routers.api-v2.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
- "traefik.http.routers.api-http.rule=Host(`api.truckwash.dk`) || Host(`api.truckwash.io`) || Host(`api-v2.truckwash.io`)"
|
||||
- "traefik.http.routers.api-http.entrypoints=web"
|
||||
- "traefik.http.routers.api-http.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.api-http.service=caddy"
|
||||
- "traefik.http.routers.local.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local.entrypoints=web"
|
||||
- "traefik.http.routers.local.service=caddy"
|
||||
- "traefik.http.routers.local.middlewares=secure-headers@file"
|
||||
- "traefik.http.routers.local-secure.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.local-secure.tls=true"
|
||||
- "traefik.http.routers.local-secure.service=caddy"
|
||||
- "traefik.http.routers.local-secure.middlewares=secure-headers@file"
|
||||
- "traefik.http.routers.local-api.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-api.entrypoints=web"
|
||||
- "traefik.http.routers.local-api.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-api.service=caddy"
|
||||
- "traefik.http.routers.local-api.priority=100"
|
||||
- "traefik.http.routers.local-api-secure.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.local-api-secure.tls=true"
|
||||
- "traefik.http.routers.local-api-secure.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-api-secure.service=caddy"
|
||||
- "traefik.http.routers.local-api-secure.priority=100"
|
||||
- "traefik.http.services.caddy.loadbalancer.server.port=80"
|
||||
|
||||
caddy-staging:
|
||||
image: caddy:2.7.6-alpine
|
||||
container_name: caddy-staging
|
||||
depends_on:
|
||||
- php-staging
|
||||
volumes:
|
||||
- ./services/nginx/staging:/var/www/html
|
||||
- ./services/caddy/Caddyfile-staging:/etc/caddy/Caddyfile:ro
|
||||
- ./services/caddy/logs-staging:/var/log/caddy
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.api-staging.rule=Host(`api.truckwash.io`)"
|
||||
- "traefik.http.routers.api-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.api-staging.tls=true"
|
||||
- "traefik.http.routers.api-staging.tls.domains[0].main=api.truckwash.io"
|
||||
- "traefik.http.routers.api-staging.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.api-staging.service=caddy-staging"
|
||||
- "traefik.http.routers.api-staging.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
- "traefik.http.routers.local-staging.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging.middlewares=secure-headers@file"
|
||||
- "traefik.http.routers.local-staging-secure.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local-staging-secure.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging-secure.tls=true"
|
||||
- "traefik.http.routers.local-staging-secure.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging-secure.middlewares=secure-headers@file"
|
||||
- "traefik.http.routers.local-staging-api.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-staging-api.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging-api.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-staging-api.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging-api.priority=100"
|
||||
- "traefik.http.routers.local-staging-api-secure.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-staging-api-secure.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging-api-secure.tls=true"
|
||||
- "traefik.http.routers.local-staging-api-secure.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-staging-api-secure.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging-api-secure.priority=100"
|
||||
- "traefik.http.services.caddy-staging.loadbalancer.server.port=80"
|
||||
|
||||
php1:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php1
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "true"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php2:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php2
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php3:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php3
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php4:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php4
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php5:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php5
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php-staging:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php-staging
|
||||
depends_on:
|
||||
- redis-staging
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env.staging
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/staging:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs-staging:/var/log/php
|
||||
|
||||
php-cron:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php-cron
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["sh", "-c", "while true; do php index.php run cron; sleep 60; done"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:-truckwash-edge-dev}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/edge-agent/dist:/services/edge-agent/dist:ro
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
portainer:
|
||||
image: portainer/portainer-ce:2.21.4
|
||||
container_name: portainer
|
||||
profiles:
|
||||
- dev
|
||||
ports:
|
||||
- "9443:9443"
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer_data:/data
|
||||
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:1.53
|
||||
container_name: jaeger
|
||||
profiles:
|
||||
- dev
|
||||
environment:
|
||||
- COLLECTOR_ZIPKIN_HTTP_PORT=9411
|
||||
ports:
|
||||
- "16686:16686"
|
||||
|
||||
n8n:
|
||||
image: n8nio/n8n:latest
|
||||
container_name: n8n
|
||||
restart: always
|
||||
environment:
|
||||
- N8N_HOST=n8n.truckwash.io
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=https
|
||||
- NODE_ENV=production
|
||||
- WEBHOOK_URL=https://n8n.truckwash.io/
|
||||
- GENERIC_TIMEZONE=${CONFIG_TIMEZONE:-Europe/Copenhagen}
|
||||
volumes:
|
||||
- n8n_data:/home/node/.n8n
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.n8n.rule=Host(`n8n.truckwash.io`)"
|
||||
- "traefik.http.routers.n8n.entrypoints=websecure"
|
||||
- "traefik.http.routers.n8n.tls=true"
|
||||
- "traefik.http.routers.n8n.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.n8n.service=n8n"
|
||||
- "traefik.http.routers.n8n-http.rule=Host(`n8n.truckwash.io`)"
|
||||
- "traefik.http.routers.n8n-http.entrypoints=web"
|
||||
- "traefik.http.routers.n8n-http.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.n8n-http.service=n8n"
|
||||
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
db_debug_data:
|
||||
nnks_redis:
|
||||
nnks_redis_staging:
|
||||
es_data:
|
||||
portainer_data:
|
||||
fleet-server-data:
|
||||
elastic-agent-data:
|
||||
n8n_data:
|
||||
@@ -27,5 +27,5 @@ services:
|
||||
## docker compose up -d traefik caddy php1 php2 php3 php4 php5 db redis
|
||||
##
|
||||
## Notes:
|
||||
## - Traefik uses Let’s Encrypt production. Ensure DNS A/AAAA records for api.truckwash.dk, api.truckwash.io and traefik.truckwash.dk point to this host and ports 80/443 are reachable.
|
||||
## - The dashboard is protected by basic auth and an IP allowlist (defined in dynamic.yml). Replace the bcrypt hash before enabling in production.
|
||||
## - Traefik uses Let’s Encrypt production. Ensure DNS A/AAAA records for api.truckwash.dk, api.truckwash.io, api-v2.truckwash.io and traefik.truckwash.dk point to the expected ingress and ports 80/443 are reachable.
|
||||
## - The dashboard is protected by basic auth and an IP allowlist (defined in dynamic.yml). Replace the bcrypt hash before enabling in production.
|
||||
|
||||
@@ -0,0 +1,501 @@
|
||||
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:2.11
|
||||
container_name: traefik
|
||||
group_add:
|
||||
- "${DOCKER_SOCKET_GID:-65534}"
|
||||
ports:
|
||||
- "${TRAEFIK_WEB_PORT:-80}:80"
|
||||
- "${TRAEFIK_WEBSECURE_PORT:-443}:443"
|
||||
- "${TRAEFIK_WEBSECURE_STAGING_PORT:-4433}:4433"
|
||||
# Prometheus metrics endpoint (local dev)
|
||||
- "${TRAEFIK_METRICS_PORT:-9100}:9100"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./services/traefik/traefik.yml:/etc/traefik/traefik.yml:ro
|
||||
- ./services/traefik/dynamic.yml:/etc/traefik/dynamic.yml:ro
|
||||
- ./services/traefik/acme.json:/acme.json
|
||||
- ./services/traefik/acme-io.json:/acme-io.json
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# Dashboard over HTTPS (production)
|
||||
- "traefik.http.routers.traefik.rule=Host(`traefik.truckwash.dk`)"
|
||||
- "traefik.http.routers.traefik.entrypoints=websecure"
|
||||
- "traefik.http.routers.traefik.tls=true"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=le"
|
||||
- "traefik.http.routers.traefik.service=api@internal"
|
||||
- "traefik.http.routers.traefik.middlewares=dashboard-allow-local@file,dashboard-auth@file"
|
||||
# Dashboard over HTTP (dev) -> redirect to HTTPS
|
||||
- "traefik.http.routers.traefik-http.rule=Host(`traefik.truckwash.dk`)"
|
||||
- "traefik.http.routers.traefik-http.entrypoints=web"
|
||||
- "traefik.http.routers.traefik-http.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.traefik-http.service=api@internal"
|
||||
# Local dashboard on traefik.localhost (HTTP only for dev)
|
||||
- "traefik.http.routers.traefik-local.rule=Host(`traefik.localhost`)"
|
||||
- "traefik.http.routers.traefik-local.entrypoints=web"
|
||||
- "traefik.http.routers.traefik-local.service=api@internal"
|
||||
- "traefik.http.routers.traefik-local.middlewares=dashboard-allow-local@file,dashboard-auth@file"
|
||||
# Broker API (handled in edge-broker service)
|
||||
- "traefik.http.routers.edge-broker.rule=Host(`api.truckwash.dk`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker.tls=true"
|
||||
- "traefik.http.routers.edge-broker.tls.certresolver=le"
|
||||
- "traefik.http.routers.edge-broker.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker.priority=200"
|
||||
- "traefik.http.routers.edge-broker.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-io.rule=Host(`api.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-io.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-io.tls=true"
|
||||
- "traefik.http.routers.edge-broker-io.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-io.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-io.priority=200"
|
||||
- "traefik.http.routers.edge-broker-io.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-v2.rule=Host(`api-v2.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-v2.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-v2.tls=true"
|
||||
- "traefik.http.routers.edge-broker-v2.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-v2.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-v2.priority=200"
|
||||
- "traefik.http.routers.edge-broker-v2.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-staging.rule=Host(`api.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.edge-broker-staging.tls=true"
|
||||
- "traefik.http.routers.edge-broker-staging.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-staging.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-staging.priority=200"
|
||||
- "traefik.http.routers.edge-broker-staging.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local.entrypoints=web"
|
||||
- "traefik.http.routers.edge-broker-local.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local-secure.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
|
||||
redis:
|
||||
image: redis:7
|
||||
container_name: redis
|
||||
# ports:
|
||||
# - "6379:6379"
|
||||
volumes:
|
||||
- nnks_redis:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
redis-staging:
|
||||
image: redis:7
|
||||
container_name: redis-staging
|
||||
# ports:
|
||||
# - "6380:6379"
|
||||
volumes:
|
||||
- nnks_redis_staging:/data
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
start_period: 10s
|
||||
|
||||
mysql-debug:
|
||||
image: mysql:8.4
|
||||
container_name: mysql-debug
|
||||
profiles: [dev]
|
||||
command: ["mysqld", "--innodb-use-native-aio=0"]
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: ${CONFIG_DB_DEBUG_PASSWORD:?CONFIG_DB_DEBUG_PASSWORD is required for mysql-debug}
|
||||
MYSQL_DATABASE: ${CONFIG_DB_DEBUG_DATABASE:-nnks_db_debug}
|
||||
ports:
|
||||
- "3307:3306"
|
||||
volumes:
|
||||
- db_debug_data:/var/lib/mysql
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "MYSQL_PWD=$$MYSQL_ROOT_PASSWORD mysqladmin -u root ping --silent"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 10
|
||||
start_period: 20s
|
||||
|
||||
edge-broker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/edge-broker/Dockerfile
|
||||
container_name: edge-broker
|
||||
environment:
|
||||
EDGE_AUTH_MODE: ${EDGE_AUTH_MODE:-strict}
|
||||
EDGE_MANAGER_URL: ${EDGE_MANAGER_URL:-http://caddy}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.edge-broker-api.rule=Host(`api.truckwash.dk`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api.tls.certresolver=le"
|
||||
- "traefik.http.routers.edge-broker-api.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-api-io.rule=Host(`api.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api-io.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api-io.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api-io.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-api-io.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api-io.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api-io.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-api-v2.rule=Host(`api-v2.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api-v2.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-api-v2.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api-v2.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-api-v2.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api-v2.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api-v2.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-api-staging.rule=Host(`api.truckwash.io`) && PathPrefix(`/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-api-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.edge-broker-api-staging.tls=true"
|
||||
- "traefik.http.routers.edge-broker-api-staging.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.edge-broker-api-staging.middlewares=secure-headers@file,edge-broker-strip"
|
||||
- "traefik.http.routers.edge-broker-api-staging.priority=200"
|
||||
- "traefik.http.routers.edge-broker-api-staging.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local.entrypoints=web"
|
||||
- "traefik.http.routers.edge-broker-local.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local-secure.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.edge-broker-local-secure.tls=true"
|
||||
- "traefik.http.routers.edge-broker-local-secure.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local-secure.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local-secure.service=edge-broker"
|
||||
- "traefik.http.routers.edge-broker-local-staging.rule=Host(`localhost`) && PathPrefix(`/api/edge-broker`)"
|
||||
- "traefik.http.routers.edge-broker-local-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.edge-broker-local-staging.tls=true"
|
||||
- "traefik.http.routers.edge-broker-local-staging.middlewares=secure-headers@file,edge-broker-strip-local"
|
||||
- "traefik.http.routers.edge-broker-local-staging.priority=200"
|
||||
- "traefik.http.routers.edge-broker-local-staging.service=edge-broker"
|
||||
- "traefik.http.middlewares.edge-broker-strip.stripPrefix.prefixes=/edge-broker"
|
||||
- "traefik.http.middlewares.edge-broker-strip-local.stripPrefix.prefixes=/api/edge-broker"
|
||||
- "traefik.http.services.edge-broker.loadbalancer.server.port=4300"
|
||||
|
||||
caddy:
|
||||
image: caddy:2.7.6-alpine
|
||||
container_name: caddy
|
||||
depends_on:
|
||||
- php1
|
||||
- php2
|
||||
- php3
|
||||
- php4
|
||||
- php5
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/caddy:/etc/caddy:ro
|
||||
- ./services/caddy/logs:/var/log/caddy
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# Public API (HTTPS via Traefik + LE)
|
||||
- "traefik.http.routers.api.rule=Host(`api.truckwash.dk`)"
|
||||
- "traefik.http.routers.api.entrypoints=websecure"
|
||||
- "traefik.http.routers.api.tls=true"
|
||||
- "traefik.http.routers.api.tls.domains[0].main=api.truckwash.dk"
|
||||
- "traefik.http.routers.api.tls.certresolver=le"
|
||||
- "traefik.http.routers.api.service=caddy"
|
||||
- "traefik.http.routers.api.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
# Public API (.io version)
|
||||
- "traefik.http.routers.api-io.rule=Host(`api.truckwash.io`)"
|
||||
- "traefik.http.routers.api-io.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-io.tls=true"
|
||||
- "traefik.http.routers.api-io.tls.domains[0].main=api.truckwash.io"
|
||||
- "traefik.http.routers.api-io.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.api-io.service=caddy"
|
||||
- "traefik.http.routers.api-io.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
# Public API (.io load-balanced gateway)
|
||||
- "traefik.http.routers.api-v2.rule=Host(`api-v2.truckwash.io`)"
|
||||
- "traefik.http.routers.api-v2.entrypoints=websecure"
|
||||
- "traefik.http.routers.api-v2.tls=true"
|
||||
- "traefik.http.routers.api-v2.tls.domains[0].main=api-v2.truckwash.io"
|
||||
- "traefik.http.routers.api-v2.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.api-v2.service=caddy"
|
||||
- "traefik.http.routers.api-v2.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
# HTTP to HTTPS redirect for both API domains
|
||||
- "traefik.http.routers.api-http.rule=Host(`api.truckwash.dk`) || Host(`api.truckwash.io`) || Host(`api-v2.truckwash.io`)"
|
||||
- "traefik.http.routers.api-http.entrypoints=web"
|
||||
- "traefik.http.routers.api-http.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.api-http.service=caddy"
|
||||
# Local development (HTTP only)
|
||||
- "traefik.http.routers.local.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local.entrypoints=web"
|
||||
- "traefik.http.routers.local.service=caddy"
|
||||
- "traefik.http.routers.local.middlewares=secure-headers@file"
|
||||
# Local development over HTTPS (self-signed/default Traefik cert)
|
||||
- "traefik.http.routers.local-secure.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.local-secure.tls=true"
|
||||
- "traefik.http.routers.local-secure.service=caddy"
|
||||
- "traefik.http.routers.local-secure.middlewares=secure-headers@file"
|
||||
# Local alias: http://localhost/api -> Caddy (strip /api prefix)
|
||||
- "traefik.http.routers.local-api.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-api.entrypoints=web"
|
||||
- "traefik.http.routers.local-api.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-api.service=caddy"
|
||||
- "traefik.http.routers.local-api.priority=100"
|
||||
# Local alias over HTTPS as well: https://localhost/api -> Caddy (strip /api prefix)
|
||||
- "traefik.http.routers.local-api-secure.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-api-secure.entrypoints=websecure"
|
||||
- "traefik.http.routers.local-api-secure.tls=true"
|
||||
- "traefik.http.routers.local-api-secure.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-api-secure.service=caddy"
|
||||
- "traefik.http.routers.local-api-secure.priority=100"
|
||||
# Tell Traefik which port Caddy listens on
|
||||
- "traefik.http.services.caddy.loadbalancer.server.port=80"
|
||||
|
||||
caddy-staging:
|
||||
image: caddy:2.7.6-alpine
|
||||
container_name: caddy-staging
|
||||
depends_on:
|
||||
- php-staging
|
||||
command: ["caddy", "run", "--config", "/etc/caddy/Caddyfile-staging", "--adapter", "caddyfile"]
|
||||
volumes:
|
||||
- ./services/nginx/staging:/var/www/html
|
||||
- ./services/caddy:/etc/caddy:ro
|
||||
- ./services/caddy/logs-staging:/var/log/caddy
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# Staging API (.io version on port 4433)
|
||||
- "traefik.http.routers.api-staging.rule=Host(`api.truckwash.io`)"
|
||||
- "traefik.http.routers.api-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.api-staging.tls=true"
|
||||
- "traefik.http.routers.api-staging.tls.domains[0].main=api.truckwash.io"
|
||||
- "traefik.http.routers.api-staging.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.api-staging.service=caddy-staging"
|
||||
- "traefik.http.routers.api-staging.middlewares=secure-headers@file,api-ratelimit@file"
|
||||
# Local staging development (HTTP on port 4433)
|
||||
- "traefik.http.routers.local-staging.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local-staging.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging.middlewares=secure-headers@file"
|
||||
# Local staging development (HTTPS on port 4433)
|
||||
- "traefik.http.routers.local-staging-secure.rule=Host(`localhost`)"
|
||||
- "traefik.http.routers.local-staging-secure.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging-secure.tls=true"
|
||||
- "traefik.http.routers.local-staging-secure.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging-secure.middlewares=secure-headers@file"
|
||||
# Local staging alias: http://localhost:4433/api -> Caddy staging (strip /api prefix)
|
||||
- "traefik.http.routers.local-staging-api.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-staging-api.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging-api.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-staging-api.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging-api.priority=100"
|
||||
# Local staging alias over HTTPS: https://localhost:4433/api -> Caddy staging (strip /api prefix)
|
||||
- "traefik.http.routers.local-staging-api-secure.rule=Host(`localhost`) && PathPrefix(`/api`)"
|
||||
- "traefik.http.routers.local-staging-api-secure.entrypoints=websecure-staging"
|
||||
- "traefik.http.routers.local-staging-api-secure.tls=true"
|
||||
- "traefik.http.routers.local-staging-api-secure.middlewares=strip-api-prefix@file,secure-headers@file"
|
||||
- "traefik.http.routers.local-staging-api-secure.service=caddy-staging"
|
||||
- "traefik.http.routers.local-staging-api-secure.priority=100"
|
||||
# Tell Traefik which port Caddy listens on
|
||||
- "traefik.http.services.caddy-staging.loadbalancer.server.port=80"
|
||||
|
||||
php1:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php1
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "true"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php2:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php2
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php3:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php3
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php4:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php4
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php5:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php5
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
|
||||
php-staging:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php-staging
|
||||
depends_on:
|
||||
- redis-staging
|
||||
- edge-broker
|
||||
command: ["php-fpm"]
|
||||
env_file:
|
||||
- .env.staging
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/staging:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs-staging:/var/log/php
|
||||
|
||||
php-cron:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: services/php/Dockerfile
|
||||
container_name: php-cron
|
||||
depends_on:
|
||||
- redis
|
||||
- edge-broker
|
||||
command: ["sh", "-c", "while true; do php index.php run cron; sleep 60; done"]
|
||||
env_file:
|
||||
- .env
|
||||
environment:
|
||||
AUTO_COMPOSER_INSTALL: "false"
|
||||
EDGE_BROKER_URL: ${EDGE_BROKER_URL:-http://edge-broker:4300}
|
||||
EDGE_BROKER_SHARED_SECRET: ${EDGE_BROKER_SHARED_SECRET:?set EDGE_BROKER_SHARED_SECRET in .env}
|
||||
volumes:
|
||||
- ./services/nginx/app:/var/www/html
|
||||
- ./services/php/php.ini:/usr/local/etc/php/conf.d/zz-custom.ini:ro
|
||||
- ./services/php/logs:/var/log/php
|
||||
portainer:
|
||||
image: portainer/portainer-ce:2.21.4
|
||||
container_name: portainer
|
||||
profiles:
|
||||
- dev
|
||||
ports:
|
||||
- "9443:9443"
|
||||
- "9000:9000"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock
|
||||
- portainer_data:/data
|
||||
|
||||
# Jaeger all-in-one for local tracing (Traefik → Jaeger)
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:1.53
|
||||
container_name: jaeger
|
||||
profiles:
|
||||
- dev
|
||||
environment:
|
||||
- COLLECTOR_ZIPKIN_HTTP_PORT=9411
|
||||
ports:
|
||||
- "16686:16686" # Jaeger UI
|
||||
# No volumes needed for dev; data is ephemeral
|
||||
|
||||
n8n:
|
||||
image: n8nio/n8n:latest
|
||||
container_name: n8n
|
||||
restart: always
|
||||
environment:
|
||||
- N8N_HOST=n8n.truckwash.io
|
||||
- N8N_PORT=5678
|
||||
- N8N_PROTOCOL=https
|
||||
- NODE_ENV=production
|
||||
- WEBHOOK_URL=https://n8n.truckwash.io/
|
||||
- GENERIC_TIMEZONE=${CONFIG_TIMEZONE:-Europe/Copenhagen}
|
||||
volumes:
|
||||
- n8n_data:/home/node/.n8n
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
# n8n over HTTPS (le_io cert resolver)
|
||||
- "traefik.http.routers.n8n.rule=Host(`n8n.truckwash.io`)"
|
||||
- "traefik.http.routers.n8n.entrypoints=websecure"
|
||||
- "traefik.http.routers.n8n.tls=true"
|
||||
- "traefik.http.routers.n8n.tls.certresolver=le_io"
|
||||
- "traefik.http.routers.n8n.service=n8n"
|
||||
# n8n HTTP to HTTPS redirect
|
||||
- "traefik.http.routers.n8n-http.rule=Host(`n8n.truckwash.io`)"
|
||||
- "traefik.http.routers.n8n-http.entrypoints=web"
|
||||
- "traefik.http.routers.n8n-http.middlewares=redirect-to-https@file"
|
||||
- "traefik.http.routers.n8n-http.service=n8n"
|
||||
# n8n service port
|
||||
- "traefik.http.services.n8n.loadbalancer.server.port=5678"
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
db_debug_data:
|
||||
nnks_redis:
|
||||
nnks_redis_staging:
|
||||
es_data:
|
||||
portainer_data:
|
||||
fleet-server-data:
|
||||
elastic-agent-data:
|
||||
n8n_data:
|
||||
@@ -0,0 +1,76 @@
|
||||
# Copenhagen Truck Wash API — Writerside Style Guide
|
||||
# This file defines the style rules for our documentation.
|
||||
# For more details, see https://vale.sh/docs/topics/styles/#extension-points
|
||||
|
||||
# --- RULE: Encourage descriptive language (existence) ---
|
||||
extends: existence
|
||||
message: "Avoid using '%s'. Try to be more descriptive or direct."
|
||||
level: warning
|
||||
ignorecase: true
|
||||
tokens:
|
||||
- simply
|
||||
- just
|
||||
- easy
|
||||
- easily
|
||||
- simple
|
||||
- basically
|
||||
- obviously
|
||||
- actually
|
||||
- very
|
||||
- really
|
||||
- pretty
|
||||
- quite
|
||||
- rather
|
||||
|
||||
---
|
||||
# --- RULE: Flag incomplete documentation (existence) ---
|
||||
extends: existence
|
||||
message: "Incomplete documentation: '%s' found. Please provide comprehensive details."
|
||||
level: error
|
||||
ignorecase: true
|
||||
tokens:
|
||||
- TBD
|
||||
- TO BE DETERMINED
|
||||
- TODO
|
||||
- FIXME
|
||||
- Placeholder
|
||||
- Coming soon
|
||||
|
||||
---
|
||||
# --- RULE: Preferred terminology (substitution) ---
|
||||
extends: substitution
|
||||
message: "Consider using '%s' instead of its informal or less descriptive counterpart."
|
||||
level: suggestion
|
||||
ignorecase: true
|
||||
swap:
|
||||
check[ -]box: checkbox
|
||||
right-click menu: context menu|popup menu
|
||||
webpage: page
|
||||
click on: click|select
|
||||
press: press|select
|
||||
setup: set up
|
||||
log[ -]in: sign in|log in
|
||||
e-mail: email
|
||||
interface: UI|interface
|
||||
the following: :
|
||||
utilize: use
|
||||
functionality: feature|function
|
||||
additional: more|extra
|
||||
|
||||
---
|
||||
# --- RULE: Avoid jargon and filler (existence) ---
|
||||
extends: existence
|
||||
message: "Avoid jargon or filler phrases like '%s'."
|
||||
level: warning
|
||||
ignorecase: true
|
||||
tokens:
|
||||
- leverage
|
||||
- bandwidth
|
||||
- synergy
|
||||
- best-in-class
|
||||
- cutting-edge
|
||||
- robust
|
||||
- state-of-the-art
|
||||
- mission-critical
|
||||
- go-forward
|
||||
- paradigm shift
|
||||
Binary file not shown.
@@ -0,0 +1,493 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Build results</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Tests</h1>
|
||||
<p>180 tests total.</p>
|
||||
<ul>
|
||||
<li><a href="#errors">3 errors</a></li>
|
||||
<li><a href="#warnings">1 warnings</a></li>
|
||||
<li><a href="#passed">176 passed</a></li>
|
||||
</ul>
|
||||
<h2 id="errors">Errors</h2>
|
||||
<ul style="list-style: none;">
|
||||
<li><a href="#MRK004"><code>MRK004</code> — Topic ID doesn't match the containing file name</a></li>
|
||||
<li><a href="#REF006"><code>REF006</code> — 'toc-element' for the current instance references a topic file that cannot be found</a></li>
|
||||
<li><a href="#TOC001"><code>TOC001</code> — <toc-element> points to an article that doesn't exist</a></li>
|
||||
</ul>
|
||||
<h3 id="MRK004"><code>MRK004</code> — Topic ID doesn't match the containing file name</h3>
|
||||
<ul id="MRK004-details">
|
||||
<li id="MRK004-In-Config_Module_Backups-topic-4-1">In Config_Module_Backups.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Backups_Page_1-topic-4-1">In Config_Module_Backups_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Bird-topic-4-1">In Config_Module_Bird.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Bird_Page_1-topic-4-1">In Config_Module_Bird_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Email-topic-4-1">In Config_Module_Email.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Email_Page_1-topic-4-1">In Config_Module_Email_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Entra-topic-4-1">In Config_Module_Entra.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Entra_Page_1-topic-4-1">In Config_Module_Entra_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_FXRatesAPI-topic-4-1">In Config_Module_FXRatesAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_FXRatesAPI_Page_1-topic-4-1">In Config_Module_FXRatesAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_GatewayAPI-topic-4-1">In Config_Module_GatewayAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_GatewayAPI_Page_1-topic-4-1">In Config_Module_GatewayAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_LicensePlateRecognizer-topic-4-1">In Config_Module_LicensePlateRecognizer.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_LicensePlateRecognizer_Page_1-topic-4-1">In Config_Module_LicensePlateRecognizer_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Limble-topic-4-1">In Config_Module_Limble.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Limble_Page_1-topic-4-1">In Config_Module_Limble_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_MotorAPI-topic-4-1">In Config_Module_MotorAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_MotorAPI_Page_1-topic-4-1">In Config_Module_MotorAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_OcrSpace-topic-4-1">In Config_Module_OcrSpace.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_OcrSpace_Page_1-topic-4-1">In Config_Module_OcrSpace_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_OpenAI-topic-4-1">In Config_Module_OpenAI.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_OpenAI_Page_1-topic-4-1">In Config_Module_OpenAI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Self_Serve-topic-4-1">In Config_Module_Self_Serve.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Self_Serve_Page_1-topic-4-1">In Config_Module_Self_Serve_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Shelly-topic-4-1">In Config_Module_Shelly.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Shelly_Page_1-topic-4-1">In Config_Module_Shelly_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Stripe-topic-4-1">In Config_Module_Stripe.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_Stripe_Page_1-topic-4-1">In Config_Module_Stripe_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_VirkData-topic-4-1">In Config_Module_VirkData.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_VirkData_Page_1-topic-4-1">In Config_Module_VirkData_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_WeatherAPI-topic-4-1">In Config_Module_WeatherAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_WeatherAPI_Page_1-topic-4-1">In Config_Module_WeatherAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_XLVask-topic-4-1">In Config_Module_XLVask.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_XLVask_Page_1-topic-4-1">In Config_Module_XLVask_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_e_conomic-topic-4-1">In Config_Module_e_conomic.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_e_conomic_Page_1-topic-4-1">In Config_Module_e_conomic_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_reCAPTCHA-topic-4-1">In Config_Module_reCAPTCHA.topic:4:1</li>
|
||||
<li id="MRK004-In-Config_Module_reCAPTCHA_Page_1-topic-4-1">In Config_Module_reCAPTCHA_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Action_Logs-topic-4-1">In Modules_Module_Action_Logs.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Action_Logs_Page_1-topic-4-1">In Modules_Module_Action_Logs_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Backup-topic-4-1">In Modules_Module_Backup.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Backup_Page_1-topic-4-1">In Modules_Module_Backup_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_CVR-topic-4-1">In Modules_Module_CVR.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_CVR_Page_1-topic-4-1">In Modules_Module_CVR_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Entra-topic-4-1">In Modules_Module_Entra.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Entra_Page_1-topic-4-1">In Modules_Module_Entra_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_FXRatesAPI-topic-4-1">In Modules_Module_FXRatesAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_FXRatesAPI_Page_1-topic-4-1">In Modules_Module_FXRatesAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_MotorAPI-topic-4-1">In Modules_Module_MotorAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_MotorAPI_Page_1-topic-4-1">In Modules_Module_MotorAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Self_Serve-topic-4-1">In Modules_Module_Self_Serve.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Self_Serve_Page_1-topic-4-1">In Modules_Module_Self_Serve_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Stripe-topic-4-1">In Modules_Module_Stripe.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Stripe_Page_1-topic-4-1">In Modules_Module_Stripe_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_VirkData-topic-4-1">In Modules_Module_VirkData.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_VirkData_Page_1-topic-4-1">In Modules_Module_VirkData_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Wash_Certificates-topic-4-1">In Modules_Module_Wash_Certificates.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_Wash_Certificates_Page_1-topic-4-1">In Modules_Module_Wash_Certificates_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_WeatherAPI-topic-4-1">In Modules_Module_WeatherAPI.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_WeatherAPI_Page_1-topic-4-1">In Modules_Module_WeatherAPI_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_XLVask-topic-4-1">In Modules_Module_XLVask.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_XLVask_Page_1-topic-4-1">In Modules_Module_XLVask_Page_1.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_e_conomic-topic-4-1">In Modules_Module_e_conomic.topic:4:1</li>
|
||||
<li id="MRK004-In-Modules_Module_e_conomic_Page_1-topic-4-1">In Modules_Module_e_conomic_Page_1.topic:4:1</li>
|
||||
</ul>
|
||||
<h3 id="REF006"><code>REF006</code> — 'toc-element' for the current instance references a topic file that cannot be found</h3>
|
||||
<ul id="REF006-details">
|
||||
<li id="REF006---API_Reference-topic---in-ctw-tree-613-5">""API_Reference.topic"" in ctw.tree:613:5</li>
|
||||
<li id="REF006---Admin_Bookings_CompleteWithoutWashCertificate_POST-topic---in-ctw-tree-629-5">""Admin_Bookings_CompleteWithoutWashCertificate_POST.topic"" in ctw.tree:629:5</li>
|
||||
<li id="REF006---Admin_Bookings_Delete_POST-topic---in-ctw-tree-626-5">""Admin_Bookings_Delete_POST.topic"" in ctw.tree:626:5</li>
|
||||
<li id="REF006---Admin_Bookings_Department_Count_GET-topic---in-ctw-tree-632-5">""Admin_Bookings_Department_Count_GET.topic"" in ctw.tree:632:5</li>
|
||||
<li id="REF006---Admin_Bookings_Sync_POST-topic---in-ctw-tree-624-5">""Admin_Bookings_Sync_POST.topic"" in ctw.tree:624:5</li>
|
||||
<li id="REF006---Bookings_Download_PDF_GET-topic---in-ctw-tree-621-5">""Bookings_Download_PDF_GET.topic"" in ctw.tree:621:5</li>
|
||||
<li id="REF006---Bookings_GET-topic---in-ctw-tree-633-5">""Bookings_GET.topic"" in ctw.tree:633:5</li>
|
||||
<li id="REF006---Bookings_PUT-topic---in-ctw-tree-628-5">""Bookings_PUT.topic"" in ctw.tree:628:5</li>
|
||||
<li id="REF006---Customers_GET-topic---in-ctw-tree-618-5">""Customers_GET.topic"" in ctw.tree:618:5</li>
|
||||
<li id="REF006---Customers_POST-topic---in-ctw-tree-615-5">""Customers_POST.topic"" in ctw.tree:615:5</li>
|
||||
<li id="REF006---Customers_PUT-topic---in-ctw-tree-608-5">""Customers_PUT.topic"" in ctw.tree:608:5</li>
|
||||
<li id="REF006---Customers_id_DELETE-topic---in-ctw-tree-610-5">""Customers_id_DELETE.topic"" in ctw.tree:610:5</li>
|
||||
<li id="REF006---Department_Timebookings_Entries_Public_GET-topic---in-ctw-tree-625-5">""Department_Timebookings_Entries_Public_GET.topic"" in ctw.tree:625:5</li>
|
||||
<li id="REF006---Department_Timebookings_Entries_Public_POST-topic---in-ctw-tree-620-5">""Department_Timebookings_Entries_Public_POST.topic"" in ctw.tree:620:5</li>
|
||||
<li id="REF006---Department_Timebookings_OpeningHours_Public_GET-topic---in-ctw-tree-630-5">""Department_Timebookings_OpeningHours_Public_GET.topic"" in ctw.tree:630:5</li>
|
||||
<li id="REF006---Department_Timebookings_Types_Public_GET-topic---in-ctw-tree-627-5">""Department_Timebookings_Types_Public_GET.topic"" in ctw.tree:627:5</li>
|
||||
<li id="REF006---Superuser_Bookings_Sync_All_POST-topic---in-ctw-tree-631-5">""Superuser_Bookings_Sync_All_POST.topic"" in ctw.tree:631:5</li>
|
||||
<li id="REF006---UsageLog_GET-topic---in-ctw-tree-617-5">""UsageLog_GET.topic"" in ctw.tree:617:5</li>
|
||||
<li id="REF006---User_Bookings_Delete_POST-topic---in-ctw-tree-619-5">""User_Bookings_Delete_POST.topic"" in ctw.tree:619:5</li>
|
||||
<li id="REF006---User_Bookings_GET-topic---in-ctw-tree-623-5">""User_Bookings_GET.topic"" in ctw.tree:623:5</li>
|
||||
<li id="REF006---User_Bookings_Washcertificate_Download_POST-topic---in-ctw-tree-622-5">""User_Bookings_Washcertificate_Download_POST.topic"" in ctw.tree:622:5</li>
|
||||
<li id="REF006---Vehicles_GET-topic---in-ctw-tree-609-5">""Vehicles_GET.topic"" in ctw.tree:609:5</li>
|
||||
<li id="REF006---Vehicles_POST-topic---in-ctw-tree-616-5">""Vehicles_POST.topic"" in ctw.tree:616:5</li>
|
||||
<li id="REF006---Vehicles_PUT-topic---in-ctw-tree-607-5">""Vehicles_PUT.topic"" in ctw.tree:607:5</li>
|
||||
<li id="REF006---Vehicles_id_DELETE-topic---in-ctw-tree-614-5">""Vehicles_id_DELETE.topic"" in ctw.tree:614:5</li>
|
||||
<li id="REF006---config_module_backups-topic---in-ctw-tree-394-13">""config_module_backups.topic"" in ctw.tree:394:13</li>
|
||||
<li id="REF006---config_module_backups_page_1-topic---in-ctw-tree-395-17">""config_module_backups_page_1.topic"" in ctw.tree:395:17</li>
|
||||
<li id="REF006---config_module_bird-topic---in-ctw-tree-400-13">""config_module_bird.topic"" in ctw.tree:400:13</li>
|
||||
<li id="REF006---config_module_bird_page_1-topic---in-ctw-tree-401-17">""config_module_bird_page_1.topic"" in ctw.tree:401:17</li>
|
||||
<li id="REF006---config_module_e_conomic-topic---in-ctw-tree-406-13">""config_module_e_conomic.topic"" in ctw.tree:406:13</li>
|
||||
<li id="REF006---config_module_e_conomic_page_1-topic---in-ctw-tree-407-17">""config_module_e_conomic_page_1.topic"" in ctw.tree:407:17</li>
|
||||
<li id="REF006---config_module_email-topic---in-ctw-tree-412-13">""config_module_email.topic"" in ctw.tree:412:13</li>
|
||||
<li id="REF006---config_module_email_page_1-topic---in-ctw-tree-413-17">""config_module_email_page_1.topic"" in ctw.tree:413:17</li>
|
||||
<li id="REF006---config_module_entra-topic---in-ctw-tree-419-13">""config_module_entra.topic"" in ctw.tree:419:13</li>
|
||||
<li id="REF006---config_module_entra_page_1-topic---in-ctw-tree-420-17">""config_module_entra_page_1.topic"" in ctw.tree:420:17</li>
|
||||
<li id="REF006---config_module_fxratesapi-topic---in-ctw-tree-425-13">""config_module_fxratesapi.topic"" in ctw.tree:425:13</li>
|
||||
<li id="REF006---config_module_fxratesapi_page_1-topic---in-ctw-tree-426-17">""config_module_fxratesapi_page_1.topic"" in ctw.tree:426:17</li>
|
||||
<li id="REF006---config_module_gatewayapi-topic---in-ctw-tree-431-13">""config_module_gatewayapi.topic"" in ctw.tree:431:13</li>
|
||||
<li id="REF006---config_module_gatewayapi_page_1-topic---in-ctw-tree-432-17">""config_module_gatewayapi_page_1.topic"" in ctw.tree:432:17</li>
|
||||
<li id="REF006---config_module_licenseplaterecognizer-topic---in-ctw-tree-437-13">""config_module_licenseplaterecognizer.topic"" in ctw.tree:437:13</li>
|
||||
<li id="REF006---config_module_licenseplaterecognizer_page_1-topic---in-ctw-tree-438-17">""config_module_licenseplaterecognizer_page_1.topic"" in ctw.tree:438:17</li>
|
||||
<li id="REF006---config_module_limble-topic---in-ctw-tree-443-13">""config_module_limble.topic"" in ctw.tree:443:13</li>
|
||||
<li id="REF006---config_module_limble_page_1-topic---in-ctw-tree-444-17">""config_module_limble_page_1.topic"" in ctw.tree:444:17</li>
|
||||
<li id="REF006---config_module_motorapi-topic---in-ctw-tree-449-13">""config_module_motorapi.topic"" in ctw.tree:449:13</li>
|
||||
<li id="REF006---config_module_motorapi_page_1-topic---in-ctw-tree-450-17">""config_module_motorapi_page_1.topic"" in ctw.tree:450:17</li>
|
||||
<li id="REF006---config_module_ocrspace-topic---in-ctw-tree-455-13">""config_module_ocrspace.topic"" in ctw.tree:455:13</li>
|
||||
<li id="REF006---config_module_ocrspace_page_1-topic---in-ctw-tree-456-17">""config_module_ocrspace_page_1.topic"" in ctw.tree:456:17</li>
|
||||
<li id="REF006---config_module_openai-topic---in-ctw-tree-461-13">""config_module_openai.topic"" in ctw.tree:461:13</li>
|
||||
<li id="REF006---config_module_openai_page_1-topic---in-ctw-tree-462-17">""config_module_openai_page_1.topic"" in ctw.tree:462:17</li>
|
||||
<li id="REF006---config_module_recaptcha-topic---in-ctw-tree-467-13">""config_module_recaptcha.topic"" in ctw.tree:467:13</li>
|
||||
<li id="REF006---config_module_recaptcha_page_1-topic---in-ctw-tree-468-17">""config_module_recaptcha_page_1.topic"" in ctw.tree:468:17</li>
|
||||
<li id="REF006---config_module_self_serve-topic---in-ctw-tree-473-13">""config_module_self_serve.topic"" in ctw.tree:473:13</li>
|
||||
<li id="REF006---config_module_self_serve_page_1-topic---in-ctw-tree-474-17">""config_module_self_serve_page_1.topic"" in ctw.tree:474:17</li>
|
||||
<li id="REF006---config_module_shelly-topic---in-ctw-tree-479-13">""config_module_shelly.topic"" in ctw.tree:479:13</li>
|
||||
<li id="REF006---config_module_shelly_page_1-topic---in-ctw-tree-480-17">""config_module_shelly_page_1.topic"" in ctw.tree:480:17</li>
|
||||
<li id="REF006---config_module_stripe-topic---in-ctw-tree-485-13">""config_module_stripe.topic"" in ctw.tree:485:13</li>
|
||||
<li id="REF006---config_module_stripe_page_1-topic---in-ctw-tree-486-17">""config_module_stripe_page_1.topic"" in ctw.tree:486:17</li>
|
||||
<li id="REF006---config_module_virkdata-topic---in-ctw-tree-491-13">""config_module_virkdata.topic"" in ctw.tree:491:13</li>
|
||||
<li id="REF006---config_module_virkdata_page_1-topic---in-ctw-tree-492-17">""config_module_virkdata_page_1.topic"" in ctw.tree:492:17</li>
|
||||
<li id="REF006---config_module_weatherapi-topic---in-ctw-tree-497-13">""config_module_weatherapi.topic"" in ctw.tree:497:13</li>
|
||||
<li id="REF006---config_module_weatherapi_page_1-topic---in-ctw-tree-498-17">""config_module_weatherapi_page_1.topic"" in ctw.tree:498:17</li>
|
||||
<li id="REF006---config_module_xlvask-topic---in-ctw-tree-503-13">""config_module_xlvask.topic"" in ctw.tree:503:13</li>
|
||||
<li id="REF006---config_module_xlvask_page_1-topic---in-ctw-tree-504-17">""config_module_xlvask_page_1.topic"" in ctw.tree:504:17</li>
|
||||
<li id="REF006---modules_module_action_logs-topic---in-ctw-tree-257-13">""modules_module_action_logs.topic"" in ctw.tree:257:13</li>
|
||||
<li id="REF006---modules_module_action_logs_page_1-topic---in-ctw-tree-258-17">""modules_module_action_logs_page_1.topic"" in ctw.tree:258:17</li>
|
||||
<li id="REF006---modules_module_backup-topic---in-ctw-tree-262-13">""modules_module_backup.topic"" in ctw.tree:262:13</li>
|
||||
<li id="REF006---modules_module_backup_page_1-topic---in-ctw-tree-263-17">""modules_module_backup_page_1.topic"" in ctw.tree:263:17</li>
|
||||
<li id="REF006---modules_module_cvr-topic---in-ctw-tree-268-13">""modules_module_cvr.topic"" in ctw.tree:268:13</li>
|
||||
<li id="REF006---modules_module_cvr_page_1-topic---in-ctw-tree-269-17">""modules_module_cvr_page_1.topic"" in ctw.tree:269:17</li>
|
||||
<li id="REF006---modules_module_e_conomic-topic---in-ctw-tree-274-13">""modules_module_e_conomic.topic"" in ctw.tree:274:13</li>
|
||||
<li id="REF006---modules_module_e_conomic_page_1-topic---in-ctw-tree-275-17">""modules_module_e_conomic_page_1.topic"" in ctw.tree:275:17</li>
|
||||
<li id="REF006---modules_module_entra-topic---in-ctw-tree-288-13">""modules_module_entra.topic"" in ctw.tree:288:13</li>
|
||||
<li id="REF006---modules_module_entra_page_1-topic---in-ctw-tree-289-17">""modules_module_entra_page_1.topic"" in ctw.tree:289:17</li>
|
||||
<li id="REF006---modules_module_fxratesapi-topic---in-ctw-tree-293-13">""modules_module_fxratesapi.topic"" in ctw.tree:293:13</li>
|
||||
<li id="REF006---modules_module_fxratesapi_page_1-topic---in-ctw-tree-294-17">""modules_module_fxratesapi_page_1.topic"" in ctw.tree:294:17</li>
|
||||
<li id="REF006---modules_module_motorapi-topic---in-ctw-tree-299-13">""modules_module_motorapi.topic"" in ctw.tree:299:13</li>
|
||||
<li id="REF006---modules_module_motorapi_page_1-topic---in-ctw-tree-300-17">""modules_module_motorapi_page_1.topic"" in ctw.tree:300:17</li>
|
||||
<li id="REF006---modules_module_self_serve-topic---in-ctw-tree-304-13">""modules_module_self_serve.topic"" in ctw.tree:304:13</li>
|
||||
<li id="REF006---modules_module_self_serve_page_1-topic---in-ctw-tree-305-17">""modules_module_self_serve_page_1.topic"" in ctw.tree:305:17</li>
|
||||
<li id="REF006---modules_module_stripe-topic---in-ctw-tree-314-13">""modules_module_stripe.topic"" in ctw.tree:314:13</li>
|
||||
<li id="REF006---modules_module_stripe_page_1-topic---in-ctw-tree-315-17">""modules_module_stripe_page_1.topic"" in ctw.tree:315:17</li>
|
||||
<li id="REF006---modules_module_virkdata-topic---in-ctw-tree-327-13">""modules_module_virkdata.topic"" in ctw.tree:327:13</li>
|
||||
<li id="REF006---modules_module_virkdata_page_1-topic---in-ctw-tree-328-17">""modules_module_virkdata_page_1.topic"" in ctw.tree:328:17</li>
|
||||
<li id="REF006---modules_module_wash_certificates-topic---in-ctw-tree-332-13">""modules_module_wash_certificates.topic"" in ctw.tree:332:13</li>
|
||||
<li id="REF006---modules_module_wash_certificates_page_1-topic---in-ctw-tree-333-17">""modules_module_wash_certificates_page_1.topic"" in ctw.tree:333:17</li>
|
||||
<li id="REF006---modules_module_weatherapi-topic---in-ctw-tree-337-13">""modules_module_weatherapi.topic"" in ctw.tree:337:13</li>
|
||||
<li id="REF006---modules_module_weatherapi_page_1-topic---in-ctw-tree-338-17">""modules_module_weatherapi_page_1.topic"" in ctw.tree:338:17</li>
|
||||
<li id="REF006---modules_module_xlvask-topic---in-ctw-tree-344-13">""modules_module_xlvask.topic"" in ctw.tree:344:13</li>
|
||||
<li id="REF006---modules_module_xlvask_page_1-topic---in-ctw-tree-345-17">""modules_module_xlvask_page_1.topic"" in ctw.tree:345:17</li>
|
||||
</ul>
|
||||
<h3 id="TOC001"><code>TOC001</code> — <toc-element> points to an article that doesn't exist</h3>
|
||||
<ul id="TOC001-details">
|
||||
<li id="TOC001--API_Reference-topic--in-ctw-tree-613-5">"API_Reference.topic" in ctw.tree:613:5</li>
|
||||
<li id="TOC001--Admin_Bookings_CompleteWithoutWashCertificate_POST-topic--in-ctw-tree-629-5">"Admin_Bookings_CompleteWithoutWashCertificate_POST.topic" in ctw.tree:629:5</li>
|
||||
<li id="TOC001--Admin_Bookings_Delete_POST-topic--in-ctw-tree-626-5">"Admin_Bookings_Delete_POST.topic" in ctw.tree:626:5</li>
|
||||
<li id="TOC001--Admin_Bookings_Department_Count_GET-topic--in-ctw-tree-632-5">"Admin_Bookings_Department_Count_GET.topic" in ctw.tree:632:5</li>
|
||||
<li id="TOC001--Admin_Bookings_Sync_POST-topic--in-ctw-tree-624-5">"Admin_Bookings_Sync_POST.topic" in ctw.tree:624:5</li>
|
||||
<li id="TOC001--Bookings_Download_PDF_GET-topic--in-ctw-tree-621-5">"Bookings_Download_PDF_GET.topic" in ctw.tree:621:5</li>
|
||||
<li id="TOC001--Bookings_GET-topic--in-ctw-tree-633-5">"Bookings_GET.topic" in ctw.tree:633:5</li>
|
||||
<li id="TOC001--Bookings_PUT-topic--in-ctw-tree-628-5">"Bookings_PUT.topic" in ctw.tree:628:5</li>
|
||||
<li id="TOC001--Customers_GET-topic--in-ctw-tree-618-5">"Customers_GET.topic" in ctw.tree:618:5</li>
|
||||
<li id="TOC001--Customers_POST-topic--in-ctw-tree-615-5">"Customers_POST.topic" in ctw.tree:615:5</li>
|
||||
<li id="TOC001--Customers_PUT-topic--in-ctw-tree-608-5">"Customers_PUT.topic" in ctw.tree:608:5</li>
|
||||
<li id="TOC001--Customers_id_DELETE-topic--in-ctw-tree-610-5">"Customers_id_DELETE.topic" in ctw.tree:610:5</li>
|
||||
<li id="TOC001--Department_Timebookings_Entries_Public_GET-topic--in-ctw-tree-625-5">"Department_Timebookings_Entries_Public_GET.topic" in ctw.tree:625:5</li>
|
||||
<li id="TOC001--Department_Timebookings_Entries_Public_POST-topic--in-ctw-tree-620-5">"Department_Timebookings_Entries_Public_POST.topic" in ctw.tree:620:5</li>
|
||||
<li id="TOC001--Department_Timebookings_OpeningHours_Public_GET-topic--in-ctw-tree-630-5">"Department_Timebookings_OpeningHours_Public_GET.topic" in ctw.tree:630:5</li>
|
||||
<li id="TOC001--Department_Timebookings_Types_Public_GET-topic--in-ctw-tree-627-5">"Department_Timebookings_Types_Public_GET.topic" in ctw.tree:627:5</li>
|
||||
<li id="TOC001--Superuser_Bookings_Sync_All_POST-topic--in-ctw-tree-631-5">"Superuser_Bookings_Sync_All_POST.topic" in ctw.tree:631:5</li>
|
||||
<li id="TOC001--UsageLog_GET-topic--in-ctw-tree-617-5">"UsageLog_GET.topic" in ctw.tree:617:5</li>
|
||||
<li id="TOC001--User_Bookings_Delete_POST-topic--in-ctw-tree-619-5">"User_Bookings_Delete_POST.topic" in ctw.tree:619:5</li>
|
||||
<li id="TOC001--User_Bookings_GET-topic--in-ctw-tree-623-5">"User_Bookings_GET.topic" in ctw.tree:623:5</li>
|
||||
<li id="TOC001--User_Bookings_Washcertificate_Download_POST-topic--in-ctw-tree-622-5">"User_Bookings_Washcertificate_Download_POST.topic" in ctw.tree:622:5</li>
|
||||
<li id="TOC001--Vehicles_GET-topic--in-ctw-tree-609-5">"Vehicles_GET.topic" in ctw.tree:609:5</li>
|
||||
<li id="TOC001--Vehicles_POST-topic--in-ctw-tree-616-5">"Vehicles_POST.topic" in ctw.tree:616:5</li>
|
||||
<li id="TOC001--Vehicles_PUT-topic--in-ctw-tree-607-5">"Vehicles_PUT.topic" in ctw.tree:607:5</li>
|
||||
<li id="TOC001--Vehicles_id_DELETE-topic--in-ctw-tree-614-5">"Vehicles_id_DELETE.topic" in ctw.tree:614:5</li>
|
||||
<li id="TOC001--config_module_backups-topic--in-ctw-tree-394-13">"config_module_backups.topic" in ctw.tree:394:13</li>
|
||||
<li id="TOC001--config_module_backups_page_1-topic--in-ctw-tree-395-17">"config_module_backups_page_1.topic" in ctw.tree:395:17</li>
|
||||
<li id="TOC001--config_module_bird-topic--in-ctw-tree-400-13">"config_module_bird.topic" in ctw.tree:400:13</li>
|
||||
<li id="TOC001--config_module_bird_page_1-topic--in-ctw-tree-401-17">"config_module_bird_page_1.topic" in ctw.tree:401:17</li>
|
||||
<li id="TOC001--config_module_e_conomic-topic--in-ctw-tree-406-13">"config_module_e_conomic.topic" in ctw.tree:406:13</li>
|
||||
<li id="TOC001--config_module_e_conomic_page_1-topic--in-ctw-tree-407-17">"config_module_e_conomic_page_1.topic" in ctw.tree:407:17</li>
|
||||
<li id="TOC001--config_module_email-topic--in-ctw-tree-412-13">"config_module_email.topic" in ctw.tree:412:13</li>
|
||||
<li id="TOC001--config_module_email_page_1-topic--in-ctw-tree-413-17">"config_module_email_page_1.topic" in ctw.tree:413:17</li>
|
||||
<li id="TOC001--config_module_entra-topic--in-ctw-tree-419-13">"config_module_entra.topic" in ctw.tree:419:13</li>
|
||||
<li id="TOC001--config_module_entra_page_1-topic--in-ctw-tree-420-17">"config_module_entra_page_1.topic" in ctw.tree:420:17</li>
|
||||
<li id="TOC001--config_module_fxratesapi-topic--in-ctw-tree-425-13">"config_module_fxratesapi.topic" in ctw.tree:425:13</li>
|
||||
<li id="TOC001--config_module_fxratesapi_page_1-topic--in-ctw-tree-426-17">"config_module_fxratesapi_page_1.topic" in ctw.tree:426:17</li>
|
||||
<li id="TOC001--config_module_gatewayapi-topic--in-ctw-tree-431-13">"config_module_gatewayapi.topic" in ctw.tree:431:13</li>
|
||||
<li id="TOC001--config_module_gatewayapi_page_1-topic--in-ctw-tree-432-17">"config_module_gatewayapi_page_1.topic" in ctw.tree:432:17</li>
|
||||
<li id="TOC001--config_module_licenseplaterecognizer-topic--in-ctw-tree-437-13">"config_module_licenseplaterecognizer.topic" in ctw.tree:437:13</li>
|
||||
<li id="TOC001--config_module_licenseplaterecognizer_page_1-topic--in-ctw-tree-438-17">"config_module_licenseplaterecognizer_page_1.topic" in ctw.tree:438:17</li>
|
||||
<li id="TOC001--config_module_limble-topic--in-ctw-tree-443-13">"config_module_limble.topic" in ctw.tree:443:13</li>
|
||||
<li id="TOC001--config_module_limble_page_1-topic--in-ctw-tree-444-17">"config_module_limble_page_1.topic" in ctw.tree:444:17</li>
|
||||
<li id="TOC001--config_module_motorapi-topic--in-ctw-tree-449-13">"config_module_motorapi.topic" in ctw.tree:449:13</li>
|
||||
<li id="TOC001--config_module_motorapi_page_1-topic--in-ctw-tree-450-17">"config_module_motorapi_page_1.topic" in ctw.tree:450:17</li>
|
||||
<li id="TOC001--config_module_ocrspace-topic--in-ctw-tree-455-13">"config_module_ocrspace.topic" in ctw.tree:455:13</li>
|
||||
<li id="TOC001--config_module_ocrspace_page_1-topic--in-ctw-tree-456-17">"config_module_ocrspace_page_1.topic" in ctw.tree:456:17</li>
|
||||
<li id="TOC001--config_module_openai-topic--in-ctw-tree-461-13">"config_module_openai.topic" in ctw.tree:461:13</li>
|
||||
<li id="TOC001--config_module_openai_page_1-topic--in-ctw-tree-462-17">"config_module_openai_page_1.topic" in ctw.tree:462:17</li>
|
||||
<li id="TOC001--config_module_recaptcha-topic--in-ctw-tree-467-13">"config_module_recaptcha.topic" in ctw.tree:467:13</li>
|
||||
<li id="TOC001--config_module_recaptcha_page_1-topic--in-ctw-tree-468-17">"config_module_recaptcha_page_1.topic" in ctw.tree:468:17</li>
|
||||
<li id="TOC001--config_module_self_serve-topic--in-ctw-tree-473-13">"config_module_self_serve.topic" in ctw.tree:473:13</li>
|
||||
<li id="TOC001--config_module_self_serve_page_1-topic--in-ctw-tree-474-17">"config_module_self_serve_page_1.topic" in ctw.tree:474:17</li>
|
||||
<li id="TOC001--config_module_shelly-topic--in-ctw-tree-479-13">"config_module_shelly.topic" in ctw.tree:479:13</li>
|
||||
<li id="TOC001--config_module_shelly_page_1-topic--in-ctw-tree-480-17">"config_module_shelly_page_1.topic" in ctw.tree:480:17</li>
|
||||
<li id="TOC001--config_module_stripe-topic--in-ctw-tree-485-13">"config_module_stripe.topic" in ctw.tree:485:13</li>
|
||||
<li id="TOC001--config_module_stripe_page_1-topic--in-ctw-tree-486-17">"config_module_stripe_page_1.topic" in ctw.tree:486:17</li>
|
||||
<li id="TOC001--config_module_virkdata-topic--in-ctw-tree-491-13">"config_module_virkdata.topic" in ctw.tree:491:13</li>
|
||||
<li id="TOC001--config_module_virkdata_page_1-topic--in-ctw-tree-492-17">"config_module_virkdata_page_1.topic" in ctw.tree:492:17</li>
|
||||
<li id="TOC001--config_module_weatherapi-topic--in-ctw-tree-497-13">"config_module_weatherapi.topic" in ctw.tree:497:13</li>
|
||||
<li id="TOC001--config_module_weatherapi_page_1-topic--in-ctw-tree-498-17">"config_module_weatherapi_page_1.topic" in ctw.tree:498:17</li>
|
||||
<li id="TOC001--config_module_xlvask-topic--in-ctw-tree-503-13">"config_module_xlvask.topic" in ctw.tree:503:13</li>
|
||||
<li id="TOC001--config_module_xlvask_page_1-topic--in-ctw-tree-504-17">"config_module_xlvask_page_1.topic" in ctw.tree:504:17</li>
|
||||
<li id="TOC001--modules_module_action_logs-topic--in-ctw-tree-257-13">"modules_module_action_logs.topic" in ctw.tree:257:13</li>
|
||||
<li id="TOC001--modules_module_action_logs_page_1-topic--in-ctw-tree-258-17">"modules_module_action_logs_page_1.topic" in ctw.tree:258:17</li>
|
||||
<li id="TOC001--modules_module_backup-topic--in-ctw-tree-262-13">"modules_module_backup.topic" in ctw.tree:262:13</li>
|
||||
<li id="TOC001--modules_module_backup_page_1-topic--in-ctw-tree-263-17">"modules_module_backup_page_1.topic" in ctw.tree:263:17</li>
|
||||
<li id="TOC001--modules_module_cvr-topic--in-ctw-tree-268-13">"modules_module_cvr.topic" in ctw.tree:268:13</li>
|
||||
<li id="TOC001--modules_module_cvr_page_1-topic--in-ctw-tree-269-17">"modules_module_cvr_page_1.topic" in ctw.tree:269:17</li>
|
||||
<li id="TOC001--modules_module_e_conomic-topic--in-ctw-tree-274-13">"modules_module_e_conomic.topic" in ctw.tree:274:13</li>
|
||||
<li id="TOC001--modules_module_e_conomic_page_1-topic--in-ctw-tree-275-17">"modules_module_e_conomic_page_1.topic" in ctw.tree:275:17</li>
|
||||
<li id="TOC001--modules_module_entra-topic--in-ctw-tree-288-13">"modules_module_entra.topic" in ctw.tree:288:13</li>
|
||||
<li id="TOC001--modules_module_entra_page_1-topic--in-ctw-tree-289-17">"modules_module_entra_page_1.topic" in ctw.tree:289:17</li>
|
||||
<li id="TOC001--modules_module_fxratesapi-topic--in-ctw-tree-293-13">"modules_module_fxratesapi.topic" in ctw.tree:293:13</li>
|
||||
<li id="TOC001--modules_module_fxratesapi_page_1-topic--in-ctw-tree-294-17">"modules_module_fxratesapi_page_1.topic" in ctw.tree:294:17</li>
|
||||
<li id="TOC001--modules_module_motorapi-topic--in-ctw-tree-299-13">"modules_module_motorapi.topic" in ctw.tree:299:13</li>
|
||||
<li id="TOC001--modules_module_motorapi_page_1-topic--in-ctw-tree-300-17">"modules_module_motorapi_page_1.topic" in ctw.tree:300:17</li>
|
||||
<li id="TOC001--modules_module_self_serve-topic--in-ctw-tree-304-13">"modules_module_self_serve.topic" in ctw.tree:304:13</li>
|
||||
<li id="TOC001--modules_module_self_serve_page_1-topic--in-ctw-tree-305-17">"modules_module_self_serve_page_1.topic" in ctw.tree:305:17</li>
|
||||
<li id="TOC001--modules_module_stripe-topic--in-ctw-tree-314-13">"modules_module_stripe.topic" in ctw.tree:314:13</li>
|
||||
<li id="TOC001--modules_module_stripe_page_1-topic--in-ctw-tree-315-17">"modules_module_stripe_page_1.topic" in ctw.tree:315:17</li>
|
||||
<li id="TOC001--modules_module_virkdata-topic--in-ctw-tree-327-13">"modules_module_virkdata.topic" in ctw.tree:327:13</li>
|
||||
<li id="TOC001--modules_module_virkdata_page_1-topic--in-ctw-tree-328-17">"modules_module_virkdata_page_1.topic" in ctw.tree:328:17</li>
|
||||
<li id="TOC001--modules_module_wash_certificates-topic--in-ctw-tree-332-13">"modules_module_wash_certificates.topic" in ctw.tree:332:13</li>
|
||||
<li id="TOC001--modules_module_wash_certificates_page_1-topic--in-ctw-tree-333-17">"modules_module_wash_certificates_page_1.topic" in ctw.tree:333:17</li>
|
||||
<li id="TOC001--modules_module_weatherapi-topic--in-ctw-tree-337-13">"modules_module_weatherapi.topic" in ctw.tree:337:13</li>
|
||||
<li id="TOC001--modules_module_weatherapi_page_1-topic--in-ctw-tree-338-17">"modules_module_weatherapi_page_1.topic" in ctw.tree:338:17</li>
|
||||
<li id="TOC001--modules_module_xlvask-topic--in-ctw-tree-344-13">"modules_module_xlvask.topic" in ctw.tree:344:13</li>
|
||||
<li id="TOC001--modules_module_xlvask_page_1-topic--in-ctw-tree-345-17">"modules_module_xlvask_page_1.topic" in ctw.tree:345:17</li>
|
||||
</ul>
|
||||
<h2 id="warnings">Warnings</h2>
|
||||
<ul style="list-style: none;">
|
||||
<li><a href="#INT002"><code>INT002</code> — Map ID is not unique</a></li>
|
||||
</ul>
|
||||
<h3 id="INT002"><code>INT002</code> — Map ID is not unique</h3>
|
||||
<ul id="INT002-details">
|
||||
<li id="INT002---Bird---Page-1-of-1---in-ctw-tree-589-13--ctw-tree-677-5">""Bird - Page 1 of 1"" in ctw.tree:589:13; ctw.tree:677:5</li>
|
||||
<li id="INT002---Bird---in-ctw-tree-588-9--ctw-tree-669-5">""Bird"" in ctw.tree:588:9; ctw.tree:669:5</li>
|
||||
<li id="INT002---Bird---Page-1-of-1---in-ctw-tree-589-13--ctw-tree-677-5">""Bird+-+Page+1+of+1"" in ctw.tree:589:13; ctw.tree:677:5</li>
|
||||
<li id="INT002---Entra---Page-1-of-1---in-ctw-tree-636-5--ctw-tree-690-5">""Entra - Page 1 of 1"" in ctw.tree:636:5; ctw.tree:690:5</li>
|
||||
<li id="INT002---Entra---in-ctw-tree-645-5--ctw-tree-692-5">""Entra"" in ctw.tree:645:5; ctw.tree:692:5</li>
|
||||
<li id="INT002---Entra---Page-1-of-1---in-ctw-tree-636-5--ctw-tree-690-5">""Entra+-+Page+1+of+1"" in ctw.tree:636:5; ctw.tree:690:5</li>
|
||||
<li id="INT002---FXRatesAPI---Page-1-of-1---in-ctw-tree-663-5--ctw-tree-682-5">""FXRatesAPI - Page 1 of 1"" in ctw.tree:663:5; ctw.tree:682:5</li>
|
||||
<li id="INT002---FXRatesAPI---in-ctw-tree-644-5--ctw-tree-651-5">""FXRatesAPI"" in ctw.tree:644:5; ctw.tree:651:5</li>
|
||||
<li id="INT002---FXRatesAPI---Page-1-of-1---in-ctw-tree-663-5--ctw-tree-682-5">""FXRatesAPI+-+Page+1+of+1"" in ctw.tree:663:5; ctw.tree:682:5</li>
|
||||
<li id="INT002---MotorAPI---Page-1-of-1---in-ctw-tree-659-5--ctw-tree-673-5">""MotorAPI - Page 1 of 1"" in ctw.tree:659:5; ctw.tree:673:5</li>
|
||||
<li id="INT002---MotorAPI---in-ctw-tree-648-5--ctw-tree-671-5">""MotorAPI"" in ctw.tree:648:5; ctw.tree:671:5</li>
|
||||
<li id="INT002---MotorAPI---Page-1-of-1---in-ctw-tree-659-5--ctw-tree-673-5">""MotorAPI+-+Page+1+of+1"" in ctw.tree:659:5; ctw.tree:673:5</li>
|
||||
<li id="INT002---Record-machine-start-button-press-webhook---in-ctw-tree-389-17--ctw-tree-390-17">""Record machine start button press webhook"" in ctw.tree:389:17; ctw.tree:390:17</li>
|
||||
<li id="INT002---Record-machine-start-button-press-webhook---in-ctw-tree-389-17--ctw-tree-390-17">""Record+machine+start+button+press+webhook"" in ctw.tree:389:17; ctw.tree:390:17</li>
|
||||
<li id="INT002---Self-Serve---Page-1-of-1---in-ctw-tree-649-5--ctw-tree-691-5">""Self-Serve - Page 1 of 1"" in ctw.tree:649:5; ctw.tree:691:5</li>
|
||||
<li id="INT002---Self-Serve---in-ctw-tree-527-9--ctw-tree-666-5--ctw-tree-668-5">""Self-Serve"" in ctw.tree:527:9; ctw.tree:666:5; ctw.tree:668:5</li>
|
||||
<li id="INT002---Self-Serve---Page-1-of-1---in-ctw-tree-649-5--ctw-tree-691-5">""Self-Serve+-+Page+1+of+1"" in ctw.tree:649:5; ctw.tree:691:5</li>
|
||||
<li id="INT002---Stripe---Page-1-of-1---in-ctw-tree-641-5--ctw-tree-683-5">""Stripe - Page 1 of 1"" in ctw.tree:641:5; ctw.tree:683:5</li>
|
||||
<li id="INT002---Stripe---in-ctw-tree-650-5--ctw-tree-681-5">""Stripe"" in ctw.tree:650:5; ctw.tree:681:5</li>
|
||||
<li id="INT002---Stripe---Page-1-of-1---in-ctw-tree-641-5--ctw-tree-683-5">""Stripe+-+Page+1+of+1"" in ctw.tree:641:5; ctw.tree:683:5</li>
|
||||
<li id="INT002---System-wide-search---in-ctw-tree-84-17--ctw-tree-85-17">""System-wide search"" in ctw.tree:84:17; ctw.tree:85:17</li>
|
||||
<li id="INT002---System-wide-search---in-ctw-tree-84-17--ctw-tree-85-17">""System-wide+search"" in ctw.tree:84:17; ctw.tree:85:17</li>
|
||||
<li id="INT002---VirkData---Page-1-of-1---in-ctw-tree-661-5--ctw-tree-693-5">""VirkData - Page 1 of 1"" in ctw.tree:661:5; ctw.tree:693:5</li>
|
||||
<li id="INT002---VirkData---in-ctw-tree-638-5--ctw-tree-695-5">""VirkData"" in ctw.tree:638:5; ctw.tree:695:5</li>
|
||||
<li id="INT002---VirkData---Page-1-of-1---in-ctw-tree-661-5--ctw-tree-693-5">""VirkData+-+Page+1+of+1"" in ctw.tree:661:5; ctw.tree:693:5</li>
|
||||
<li id="INT002---WeatherAPI---Page-1-of-1---in-ctw-tree-643-5--ctw-tree-646-5">""WeatherAPI - Page 1 of 1"" in ctw.tree:643:5; ctw.tree:646:5</li>
|
||||
<li id="INT002---WeatherAPI---in-ctw-tree-658-5--ctw-tree-665-5">""WeatherAPI"" in ctw.tree:658:5; ctw.tree:665:5</li>
|
||||
<li id="INT002---WeatherAPI---Page-1-of-1---in-ctw-tree-643-5--ctw-tree-646-5">""WeatherAPI+-+Page+1+of+1"" in ctw.tree:643:5; ctw.tree:646:5</li>
|
||||
<li id="INT002---XLVask---Page-1-of-1---in-ctw-tree-639-5--ctw-tree-642-5">""XLVask - Page 1 of 1"" in ctw.tree:639:5; ctw.tree:642:5</li>
|
||||
<li id="INT002---XLVask---in-ctw-tree-637-5--ctw-tree-688-5">""XLVask"" in ctw.tree:637:5; ctw.tree:688:5</li>
|
||||
<li id="INT002---XLVask---Page-1-of-1---in-ctw-tree-639-5--ctw-tree-642-5">""XLVask+-+Page+1+of+1"" in ctw.tree:639:5; ctw.tree:642:5</li>
|
||||
<li id="INT002---e-conomic---Page-1-of-1---in-ctw-tree-672-5--ctw-tree-694-5">""e-conomic - Page 1 of 1"" in ctw.tree:672:5; ctw.tree:694:5</li>
|
||||
<li id="INT002---e-conomic---in-ctw-tree-657-5--ctw-tree-685-5">""e-conomic"" in ctw.tree:657:5; ctw.tree:685:5</li>
|
||||
<li id="INT002---e-conomic---Page-1-of-1---in-ctw-tree-672-5--ctw-tree-694-5">""e-conomic+-+Page+1+of+1"" in ctw.tree:672:5; ctw.tree:694:5</li>
|
||||
</ul>
|
||||
<h2 id="passed">Passed</h2>
|
||||
<ul>
|
||||
<li id="API001"><code>API001</code> — API documentation markup validation issue</li>
|
||||
<li id="API002"><code>API002</code> — API Reference Generation Error</li>
|
||||
<li id="API003"><code>API003</code> — Specification file contains features or content not supported by our generator</li>
|
||||
<li id="API004"><code>API004</code> — API model building problem</li>
|
||||
<li id="CDE001"><code>CDE001</code> — The <compare> element must contain exactly two code blocks</li>
|
||||
<li id="CDE002"><code>CDE002</code> — The 'collapsed-title-line-number' attribute value on a 'code-block' element is not a valid number</li>
|
||||
<li id="CDE003"><code>CDE003</code> — The code snippet doesn't contain the line with the number specified in the 'collapsed-title-line-number' attribute</li>
|
||||
<li id="CDE004"><code>CDE004</code> — Cannot read the source code snippet from the specified location, falling back to the 'code-block' element content</li>
|
||||
<li id="CDE005"><code>CDE005</code> — Cannot read the source code snippet from the specified location, and there is no fallback content in the 'code-block' element</li>
|
||||
<li id="CDE006"><code>CDE006</code> — 'code-block' cannot be empty</li>
|
||||
<li id="CDE007"><code>CDE007</code> — The 'include-lines' attribute on a 'code-block' element must represent a line number range like 1-3, or multiple comma-separated ranges like 1-3,5-7</li>
|
||||
<li id="CDE008"><code>CDE008</code> — The code snippet doesn't contain the lines specified in the 'include-lines' attribute of the corresponding 'code-block' element</li>
|
||||
<li id="CDE009"><code>CDE009</code> — Cannot use both the 'include-symbol' and the 'include-lines' attributes to reference a code snippet</li>
|
||||
<li id="CDE010"><code>CDE010</code> — The specified code construct is not found in the source file or the file language is not recognized</li>
|
||||
<li id="CDE011"><code>CDE011</code> — Code sample contains errors</li>
|
||||
<li id="CDE012"><code>CDE012</code> — Cannot validate code sample because its language is not supported</li>
|
||||
<li id="CDE013"><code>CDE013</code> — Cannot validate code sample because its language is not specified</li>
|
||||
<li id="CDE014"><code>CDE014</code> — Content other than text or CDATA in a code block, for example, HTML/XML-like tags</li>
|
||||
<li id="CDE015"><code>CDE015</code> — Unsupported 'style' value on the <compare> element</li>
|
||||
<li id="CDE016"><code>CDE016</code> — Unknown language is specified for a code block</li>
|
||||
<li id="CDE017"><code>CDE017</code> — Syntax error in a code block</li>
|
||||
<li id="CDE018"><code>CDE018</code> — Expected at least one closed @start...@end block, but found none.</li>
|
||||
<li id="CNF001"><code>CNF001</code> — Category specified in <seealso> is not declared in c.list</li>
|
||||
<li id="CNF002"><code>CNF002</code> — Topic title cannot be empty</li>
|
||||
<li id="CNF003"><code>CNF003</code> — Invalid buildprofiles.xml property value</li>
|
||||
<li id="CNF005"><code>CNF005</code> — The 'accepts-web-file-names' attribute contains symbols that cannot appear in a file name</li>
|
||||
<li id="CNF006"><code>CNF006</code> — The 'accepts-web-file-names' attribute points to a non-existing redirection rule</li>
|
||||
<li id="CNF008"><code>CNF008</code> — The 'start-page' attribute on 'instance-profile' cannot be empty</li>
|
||||
<li id="CNF009"><code>CNF009</code> — Global variable name in v.list is duplicated</li>
|
||||
<li id="CNF010"><code>CNF010</code> — Cannot find specified resource in the resources folder</li>
|
||||
<li id="CNF011"><code>CNF011</code> — Category sort order is not a valid number</li>
|
||||
<li id="CNF012"><code>CNF012</code> — Tooltip not found</li>
|
||||
<li id="CNF013"><code>CNF013</code> — Cannot reference a resource as the r.list file is missing</li>
|
||||
<li id="CNF014"><code>CNF014</code> — The instance version links require 'web-path' in instance declaration</li>
|
||||
<li id="CNF015"><code>CNF015</code> — Cannot write the result to the specified output directory</li>
|
||||
<li id="CNF016"><code>CNF016</code> — Redirect map ID is not unique</li>
|
||||
<li id="CNF017"><code>CNF017</code> — Cannot read analytics script or html snippet</li>
|
||||
<li id="CNF018"><code>CNF018</code> — Footer link without 'href' attribute</li>
|
||||
<li id="CNF019"><code>CNF019</code> — Unknown social link type {0}</li>
|
||||
<li id="CNF020"><code>CNF020</code> — Absolute images web-path was given, but images are bundled into single artifact</li>
|
||||
<li id="CNF021"><code>CNF021</code> — Web filename is reserved, use a different value for the <web-file-name> tag</li>
|
||||
<li id="CNF022"><code>CNF022</code> — Web filename is duplicated, ensure that web filename is unique</li>
|
||||
<li id="CNF023"><code>CNF023</code> — Topic filenames must be unique, regardless of letter case</li>
|
||||
<li id="CNF024"><code>CNF024</code> — The 'start-page' attribute on 'instance-profile' is empty</li>
|
||||
<li id="CNF025"><code>CNF025</code> — Web filename is empty. Add letters or digits to the topic filename or specify a custom web filename</li>
|
||||
<li id="CNF026"><code>CNF026</code> — Referenced file {0} does not exist or is not possible to read.</li>
|
||||
<li id="CNF027"><code>CNF027</code> — Multiple values for {0} are not allowed here.</li>
|
||||
<li id="CNF028"><code>CNF028</code> — Expected true or false.</li>
|
||||
<li id="CTT001"><code>CTT001</code> — Inappropriate language detected</li>
|
||||
<li id="CTT002"><code>CTT002</code> — The generated HTML file size exceeds 1 MB, which may lead to poor performance when rendered in the browser. Consider splitting large topics into multiple smaller ones.</li>
|
||||
<li id="CTT004"><code>CTT004</code> — Undefined variable</li>
|
||||
<li id="CTT005"><code>CTT005</code> — Variable depends on itself</li>
|
||||
<li id="INT001"><code>INT001</code> — Error description template is not found</li>
|
||||
<li id="INT004"><code>INT004</code> — Unexpected article rendering error:</li>
|
||||
<li id="INT007"><code>INT007</code> — XML serialization error</li>
|
||||
<li id="INT008"><code>INT008</code> — Unexpected HTML rendering error: cannot produce a PDF</li>
|
||||
<li id="INT009"><code>INT009</code> — Unexpected diagram rendering error</li>
|
||||
<li id="INT010"><code>INT010</code> — Unexpected PlantUML error:</li>
|
||||
<li id="MRK001"><code>MRK001</code> — The element doesn't comply with validation rules</li>
|
||||
<li id="MRK002"><code>MRK002</code> — Source file syntax is corrupted</li>
|
||||
<li id="MRK003"><code>MRK003</code> — Element ID is not unique</li>
|
||||
<li id="MRK006"><code>MRK006</code> — The 'term' attribute is missing for the <tooltip> element</li>
|
||||
<li id="MRK007"><code>MRK007</code> — The 'resource-id' attribute is missing for the <res> element</li>
|
||||
<li id="MRK008"><code>MRK008</code> — The 'ref' attribute is missing for the <category> element</li>
|
||||
<li id="MRK009"><code>MRK009</code> — Element is not allowed in the current context</li>
|
||||
<li id="MRK011"><code>MRK011</code> — Only <code>, <property>, <shortcut>, image or text with inline formatting is allowed inside an <a> element to define link text</li>
|
||||
<li id="MRK012"><code>MRK012</code> — Element is unknown</li>
|
||||
<li id="MRK013"><code>MRK013</code> — Starting page title is empty</li>
|
||||
<li id="MRK014"><code>MRK014</code> — Section starting page description is empty</li>
|
||||
<li id="MRK015"><code>MRK015</code> — Section starting page must contain exactly two links under the 'spotlight' element</li>
|
||||
<li id="MRK016"><code>MRK016</code> — Section starting page link summary is empty</li>
|
||||
<li id="MRK017"><code>MRK017</code> — Section starting page group title is empty</li>
|
||||
<li id="MRK018"><code>MRK018</code> — Section starting page group is empty</li>
|
||||
<li id="MRK019"><code>MRK019</code> — Element is not allowed on a section starting page</li>
|
||||
<li id="MRK020"><code>MRK020</code> — Javascript expression specified in the 'use-when' attribute failed to execute</li>
|
||||
<li id="MRK026"><code>MRK026</code> — Unknown 'type' attribute value</li>
|
||||
<li id="MRK027"><code>MRK027</code> — The source file for the 'include' is corrupted</li>
|
||||
<li id="MRK028"><code>MRK028</code> — Invalid 'style' attribute value on a deflist</li>
|
||||
<li id="MRK032"><code>MRK032</code> — Element ID contains whitespace characters</li>
|
||||
<li id="MRK033"><code>MRK033</code> — Unknown 'style' attribute value on a list</li>
|
||||
<li id="MRK034"><code>MRK034</code> — The value of the 'columns' attribute on a list must be a number between 1 and 5</li>
|
||||
<li id="MRK035"><code>MRK035</code> — The value of the 'start' attribute on a list must be a valid number</li>
|
||||
<li id="MRK036"><code>MRK036</code> — The 'start' attribute on a list is only valid for 'alpha-lower' and 'decimal' list types</li>
|
||||
<li id="MRK037"><code>MRK037</code> — Unknown 'sorted' attribute value</li>
|
||||
<li id="MRK038"><code>MRK038</code> — The value of the 'level' attribute on a chapter must be a valid number between 2 and 6</li>
|
||||
<li id="MRK039"><code>MRK039</code> — Unknown 'style' attribute value on a procedure</li>
|
||||
<li id="MRK040"><code>MRK040</code> — Tab with an empty title</li>
|
||||
<li id="MRK041"><code>MRK041</code> — Unknown 'style' attribute value on a table</li>
|
||||
<li id="MRK042"><code>MRK042</code> — 'colspan' and 'rowspan' attributes of a table cell must be valid numbers</li>
|
||||
<li id="MRK043"><code>MRK043</code> — Cannot sort table with 'colspan' or 'rowspan'</li>
|
||||
<li id="MRK044"><code>MRK044</code> — Cannot sort table with rows of different length</li>
|
||||
<li id="MRK045"><code>MRK045</code> — 'sorted' attribute must appear on the first row cells</li>
|
||||
<li id="MRK046"><code>MRK046</code> — Element referred from 'rel' attribute does not exist or is inaccessible in the current context</li>
|
||||
<li id="MRK047"><code>MRK047</code> — Summary element has both 'rel' attribute and text specified</li>
|
||||
<li id="MRK048"><code>MRK048</code> — Summary element does not provide any text</li>
|
||||
<li id="MRK049"><code>MRK049</code> — Unknown 'style' attribute value on a format element</li>
|
||||
<li id="MRK050"><code>MRK050</code> — Unknown 'color' attribute value on a format element</li>
|
||||
<li id="MRK051"><code>MRK051</code> — The topic must contain exactly one <tldr> element. All except the first one were ignored</li>
|
||||
<li id="MRK052"><code>MRK052</code> — Web name is empty</li>
|
||||
<li id="MRK053"><code>MRK053</code> — Element has no title</li>
|
||||
<li id="MRK054"><code>MRK054</code> — Collapsible procedure title is empty</li>
|
||||
<li id="MRK055"><code>MRK055</code> — Unknown 'caps' attribute value</li>
|
||||
<li id="MRK056"><code>MRK056</code> — Title can not contain inline formatting</li>
|
||||
<li id="MRK057"><code>MRK057</code> — Paragraph can only contain inline elements</li>
|
||||
<li id="MRK058"><code>MRK058</code> — Large image in paragraph rendered as a block element by default. Put it outside the paragraph or set the 'style' attribute to indicate your intent.</li>
|
||||
<li id="MRK059"><code>MRK059</code> — Nested paragraphs are not allowed. Consider unwrapping or properly breaking the paragraphs.</li>
|
||||
<li id="MRK060"><code>MRK060</code> — The chapter must contain exactly one <tldr> element. All except the first one were ignored</li>
|
||||
<li id="MRK061"><code>MRK061</code> — Chapter titles with level more than 6 are rendered as level 6</li>
|
||||
<li id="MRK062"><code>MRK062</code> — The value of the 'depth' attribute on a <toc> must be a valid number</li>
|
||||
<li id="MRK063"><code>MRK063</code> — The 'src' attribute is missing for the <resource> element</li>
|
||||
<li id="MRK064"><code>MRK064</code> — The topic must contain exactly one <primary-label> element. All except the first one were ignored</li>
|
||||
<li id="MRK065"><code>MRK065</code> — The chapter must contain exactly one <primary-label> element. All except the first one were ignored</li>
|
||||
<li id="MRK066"><code>MRK066</code> — Unknown 'border' attribute value on a table. It should be 'false' for no border or 'true' for a border</li>
|
||||
<li id="MRK067"><code>MRK067</code> — The 'height' attribute of an iframe cannot be set to 100%. Height will be set to 250px</li>
|
||||
<li id="MRK068"><code>MRK068</code> — A 'card' can have only one of the following attributes: 'image', 'icon', or 'badge'</li>
|
||||
<li id="MRK069"><code>MRK069</code> — Last modified date must be either a specific date in the format YYYY-MM-DD, 'git' (to get the date from Git history) or 'file' (to get the date from the file system)</li>
|
||||
<li id="PTY001"><code>PTY001</code> — The <property> element must contain the 'bundle' and 'key' attributes</li>
|
||||
<li id="PTY002"><code>PTY002</code> — The property bundle referenced from a <property> element cannot be found</li>
|
||||
<li id="PTY003"><code>PTY003</code> — The specified property key cannot be found in the bundle specified by <property> element</li>
|
||||
<li id="PTY004"><code>PTY004</code> — Product specified in the 'from-product' attribute on the <property> element is not found</li>
|
||||
<li id="PTY005"><code>PTY005</code> — The specified property bundle is not available for the current product</li>
|
||||
<li id="PTY006"><code>PTY006</code> — Cannot process regular expression that cleans up a property value</li>
|
||||
<li id="PTY007"><code>PTY007</code> — Property content is corrupted</li>
|
||||
<li id="REF001"><code>REF001</code> — Cannot link to a topic that is not included in the current instance</li>
|
||||
<li id="REF002"><code>REF002</code> — Referenced topic doesn't exist</li>
|
||||
<li id="REF003"><code>REF003</code> — Cannot include element with the specified ID because it does not exist</li>
|
||||
<li id="REF004"><code>REF004</code> — Link uses anchor that does not exist</li>
|
||||
<li id="REF005"><code>REF005</code> — Link inside topic points to the same topic without an anchor</li>
|
||||
<li id="REF007"><code>REF007</code> — Cannot redirect from file name that is associated with an existing article</li>
|
||||
<li id="REF008"><code>REF008</code> — Link points to a topic in a 'draft' state that is not included in the current build</li>
|
||||
<li id="REF009"><code>REF009</code> — Cannot include from topic that does not exist</li>
|
||||
<li id="REF010"><code>REF010</code> — Link in the 'seealso' section points to itself</li>
|
||||
<li id="REF012"><code>REF012</code> — Unknown 'style' attribute value on a 'seealso' section</li>
|
||||
<li id="REF013"><code>REF013</code> — Cannot include a parent element in its child element</li>
|
||||
<li id="REF014"><code>REF014</code> — Cannot include an include directly</li>
|
||||
<li id="REF015"><code>REF015</code> — Include points to multiple IDs</li>
|
||||
<li id="SCT001"><code>SCT001</code> — Hard-coded shortcut: consider referencing the corresponding action in the 'key' attribute of the 'shortcut' element</li>
|
||||
<li id="SCT002"><code>SCT002</code> — Shortcut is not defined for the requested keymap</li>
|
||||
<li id="SCT003"><code>SCT003</code> — Shortcut is not defined for the requested platform</li>
|
||||
<li id="SCT004"><code>SCT004</code> — The file containing the keymap referenced from platforms.xml cannot be found or is empty</li>
|
||||
<li id="SCT005"><code>SCT005</code> — Action ID is not found in the product keymap.</li>
|
||||
<li id="SCT006"><code>SCT006</code> — Shortcut is not defined for layout</li>
|
||||
<li id="SCT007"><code>SCT007</code> — Shortcut is not defined for the default keymap</li>
|
||||
<li id="SCT008"><code>SCT008</code> — Shortcut is not defined in the current product's keymap</li>
|
||||
<li id="SCT009"><code>SCT009</code> — The requested keymap cannot be found</li>
|
||||
<li id="SCT011"><code>SCT011</code> — platforms.xml file is corrupted</li>
|
||||
<li id="TOC002"><code>TOC002</code> — <toc-element> points to a library topic</li>
|
||||
<li id="TOC003"><code>TOC003</code> — The nesting level for a <toc-element> is more than 3. Consider restructuring content for easier navigation.</li>
|
||||
<li id="TOC004"><code>TOC004</code> — Wrapper <toc-element> cannot have the 'accepts-web-file-names' attribute as it does not produce any content, so it cannot take redirects</li>
|
||||
<li id="TOC005"><code>TOC005</code> — Wrapper <toc-element> cannot have the 'help-id' attribute as it does not produce any content, so there is nothing to link from the UI</li>
|
||||
<li id="TOC006"><code>TOC006</code> — <toc-element> ID is duplicated</li>
|
||||
<li id="TOC007"><code>TOC007</code> — The 'toc-title' attribute is redundant as it matches the topic title</li>
|
||||
<li id="TOC010"><code>TOC010</code> — <toc-element> cannot have both the 'accepts-web-file-names' and the 'accepts-web-file-names-ref' attribute. Consider moving all references to redirection-rules.xml</li>
|
||||
<li id="TOC011"><code>TOC011</code> — The 'accepts-web-file-names' attribute references the same topic in several TOC elements</li>
|
||||
<li id="TOC012"><code>TOC012</code> — The 'custom-title' attribute on a <toc-element> is deprecated. Move it to the topic itself.</li>
|
||||
<li id="TOC013"><code>TOC013</code> — The value of the 'show-structure-depth' attribute on a <toc-element> must be a valid number</li>
|
||||
<li id="TOC016"><code>TOC016</code> — <toc-element> should have one of following attributes: 'topic', 'toc-title', or 'ref'</li>
|
||||
<li id="TOC017"><code>TOC017</code> — Invalid value of attribute "for"</li>
|
||||
<li id="TOC018"><code>TOC018</code> — Target for external redirect conflicts with topic reference</li>
|
||||
<li id="TOC019"><code>TOC019</code> — Target for external redirect requires web file names</li>
|
||||
<li id="TOC020"><code>TOC020</code> — Target for external redirect must be a hidden TOC element</li>
|
||||
<li id="VIS001"><code>VIS001</code> — Image or video file cannot be found</li>
|
||||
<li id="VIS002"><code>VIS002</code> — GIF animations and image thumbnails can only be block elements, do not place them inside a paragraph</li>
|
||||
<li id="VIS003"><code>VIS003</code> — Logo aspect ratio H:W must be between 0.24 and 1.20</li>
|
||||
<li id="VIS004"><code>VIS004</code> — Image or video must have the 'src' attribute</li>
|
||||
<li id="VIS005"><code>VIS005</code> — Origin module for image cannot be found in the project</li>
|
||||
<li id="VIS006"><code>VIS006</code> — Image or video 'width' and 'height' attributes must be positive integers</li>
|
||||
<li id="VIS007"><code>VIS007</code> — Unable to count frames in a GIF image</li>
|
||||
<li id="VIS008"><code>VIS008</code> — GIF animations cannot be rendered without a border, do not use 'border-effect="none"'</li>
|
||||
<li id="VIS009"><code>VIS009</code> — Unknown image 'border-effect' value</li>
|
||||
<li id="VIS010"><code>VIS010</code> — Unknown image style</li>
|
||||
<li id="VIS011"><code>VIS011</code> — Dark version of image or video file cannot be found</li>
|
||||
<li id="VIS012"><code>VIS012</code> — Image file type is not supported, must be PNG or SVG</li>
|
||||
<li id="VIS013"><code>VIS013</code> — Video file type is not supported, must be MP4</li>
|
||||
<li id="VIS014"><code>VIS014</code> — Referenced file is outside the documentation project</li>
|
||||
<li id="VIS015"><code>VIS015</code> — Image file type is not supported</li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:46.389471778"><title>Add branding option | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add branding option | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addbrandingoption.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add branding option | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addbrandingoption.html#webpage",
|
||||
"url": "writerside-documentation/addbrandingoption.html",
|
||||
"name": "Add branding option | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addBrandingOption" data-main-title="Add branding option" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Branding.topic|Branding///Tag_Branding_Page_1.topic|Branding - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addBrandingOption" id="addBrandingOption.topic">Add branding option</h1><p id="-8moxql_2">This endpoint documentation is generated directly from <code class="code" id="-8moxql_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /branding</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-8moxql_10">Operation ID: <code class="code" id="-8moxql_12">addBrandingOption</code></p><p id="-8moxql_11">Create a new branding option</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-8moxql_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-8moxql_14"><thead><tr class="ijRowHead" id="-8moxql_15"><th id="-8moxql_17"><p>Scheme</p></th><th id="-8moxql_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-8moxql_16"><td id="-8moxql_19"><p>BearerAuth</p></td><td id="-8moxql_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-8moxql_21">Required: yes.</p><p id="-8moxql_22">Content type: <code class="code" id="-8moxql_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"cvr": {
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"description",
|
||||
"cvr"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-8moxql_25"><thead><tr class="ijRowHead" id="-8moxql_28"><th id="-8moxql_31"><p>Status</p></th><th id="-8moxql_32"><p>Description</p></th><th id="-8moxql_33"><p>Content Types</p></th></tr></thead><tbody><tr id="-8moxql_29"><td id="-8moxql_34"><p>200</p></td><td id="-8moxql_35"><p>Branding option added successfully</p></td><td id="-8moxql_36"><p>application/json</p></td></tr><tr id="-8moxql_30"><td id="-8moxql_37"><p>403</p></td><td id="-8moxql_38"></td><td id="-8moxql_39"></td></tr></tbody></table></div><p id="-8moxql_26">Schema for response <code class="code" id="-8moxql_40">200</code> (<code class="code" id="-8moxql_41">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listbrandingoptions.html" class="navigation-links__prev">List branding options</a><a href="editbrandingoption.html" class="navigation-links__next">Edit branding option</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:46.652552977"><title>Record machine start button press webhook | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Record machine start button press webhook | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addbuttonpress.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Record machine start button press webhook | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addbuttonpress.html#webpage",
|
||||
"url": "writerside-documentation/addbuttonpress.html",
|
||||
"name": "Record machine start button press webhook | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addButtonPress" data-main-title="Record machine start button press webhook" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Plate_Scans.topic|Plate Scans///Tag_Plate_Scans_Page_1.topic|Plate Scans - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addButtonPress" id="addButtonPress.topic">Record machine start button press webhook</h1><p id="-d80xc_2">This endpoint documentation is generated directly from <code class="code" id="-d80xc_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /relay/button/press/post</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-d80xc_10">Operation ID: <code class="code" id="-d80xc_12">addButtonPress</code></p><p id="-d80xc_11">Record machine start button press webhook</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-d80xc_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-d80xc_14"><thead><tr class="ijRowHead" id="-d80xc_15"><th id="-d80xc_17"><p>Scheme</p></th><th id="-d80xc_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-d80xc_16"><td id="-d80xc_19"><p>BearerAuth</p></td><td id="-d80xc_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-d80xc_21"><thead><tr class="ijRowHead" id="-d80xc_22"><th id="-d80xc_26"><p>Name</p></th><th id="-d80xc_27"><p>In</p></th><th id="-d80xc_28"><p>Required</p></th><th id="-d80xc_29"><p>Type</p></th><th id="-d80xc_30"><p>Description</p></th></tr></thead><tbody><tr id="-d80xc_23"><td id="-d80xc_31"><p>token</p></td><td id="-d80xc_32"><p>query</p></td><td id="-d80xc_33"><p>no</p></td><td id="-d80xc_34"><p>string</p></td><td id="-d80xc_35"></td></tr><tr id="-d80xc_24"><td id="-d80xc_36"><p>lane_id</p></td><td id="-d80xc_37"><p>query</p></td><td id="-d80xc_38"><p>no</p></td><td id="-d80xc_39"><p>integer</p></td><td id="-d80xc_40"></td></tr><tr id="-d80xc_25"><td id="-d80xc_41"><p>reg</p></td><td id="-d80xc_42"><p>query</p></td><td id="-d80xc_43"><p>no</p></td><td id="-d80xc_44"><p>string</p></td><td id="-d80xc_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-d80xc_46"><thead><tr class="ijRowHead" id="-d80xc_49"><th id="-d80xc_52"><p>Status</p></th><th id="-d80xc_53"><p>Description</p></th><th id="-d80xc_54"><p>Content Types</p></th></tr></thead><tbody><tr id="-d80xc_50"><td id="-d80xc_55"><p>201</p></td><td id="-d80xc_56"><p>Button press recorded and linked to a self-serve wash session</p></td><td id="-d80xc_57"><p>application/json</p></td></tr><tr id="-d80xc_51"><td id="-d80xc_58"><p>404</p></td><td id="-d80xc_59"></td><td id="-d80xc_60"></td></tr></tbody></table></div><p id="-d80xc_47">Schema for response <code class="code" id="-d80xc_61">201</code> (<code class="code" id="-d80xc_62">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/MachineButtonPressWebhookResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getplatescanpostresults.html" class="navigation-links__prev">Get post-scan results</a><a href="addbuttonpresspost.html" class="navigation-links__next">Record machine start button press webhook</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:55.703970971"><title>Record machine start button press webhook | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Record machine start button press webhook | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addbuttonpresspost.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Record machine start button press webhook | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addbuttonpresspost.html#webpage",
|
||||
"url": "writerside-documentation/addbuttonpresspost.html",
|
||||
"name": "Record machine start button press webhook | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addButtonPressPost" data-main-title="Record machine start button press webhook" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Plate_Scans.topic|Plate Scans///Tag_Plate_Scans_Page_1.topic|Plate Scans - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addButtonPressPost" id="addButtonPressPost.topic">Record machine start button press webhook</h1><p id="z33b4b4_2">This endpoint documentation is generated directly from <code class="code" id="z33b4b4_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /relay/button/press/post</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z33b4b4_10">Operation ID: <code class="code" id="z33b4b4_12">addButtonPressPost</code></p><p id="z33b4b4_11">Record machine start button press webhook</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z33b4b4_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z33b4b4_14"><thead><tr class="ijRowHead" id="z33b4b4_15"><th id="z33b4b4_17"><p>Scheme</p></th><th id="z33b4b4_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z33b4b4_16"><td id="z33b4b4_19"><p>BearerAuth</p></td><td id="z33b4b4_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="z33b4b4_21">Required: no.</p><p id="z33b4b4_22">Content type: <code class="code" id="z33b4b4_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"lane_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"reg": {
|
||||
"type": "string"
|
||||
},
|
||||
"token": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z33b4b4_25"><thead><tr class="ijRowHead" id="z33b4b4_28"><th id="z33b4b4_31"><p>Status</p></th><th id="z33b4b4_32"><p>Description</p></th><th id="z33b4b4_33"><p>Content Types</p></th></tr></thead><tbody><tr id="z33b4b4_29"><td id="z33b4b4_34"><p>201</p></td><td id="z33b4b4_35"><p>Button press recorded and linked to a self-serve wash session</p></td><td id="z33b4b4_36"><p>application/json</p></td></tr><tr id="z33b4b4_30"><td id="z33b4b4_37"><p>404</p></td><td id="z33b4b4_38"></td><td id="z33b4b4_39"></td></tr></tbody></table></div><p id="z33b4b4_26">Schema for response <code class="code" id="z33b4b4_40">201</code> (<code class="code" id="z33b4b4_41">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/MachineButtonPressWebhookResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="addbuttonpress.html" class="navigation-links__prev">Record machine start button press webhook</a><a href="tag-config.html" class="navigation-links__next">Config</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:06.10673471"><title>Add customer attribute | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add customer attribute | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addcustomerattribute.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add customer attribute | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addcustomerattribute.html#webpage",
|
||||
"url": "writerside-documentation/addcustomerattribute.html",
|
||||
"name": "Add customer attribute | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addCustomerAttribute" data-main-title="Add customer attribute" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Users.topic|Users///Tag_Users_Page_1.topic|Users - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addCustomerAttribute" id="addCustomerAttribute.topic">Add customer attribute</h1><p id="-9vye9v_2">This endpoint documentation is generated directly from <code class="code" id="-9vye9v_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /customer/attributes</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-9vye9v_10">Operation ID: <code class="code" id="-9vye9v_12">addCustomerAttribute</code></p><p id="-9vye9v_11">Add a custom attribute to a customer</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-9vye9v_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-9vye9v_14"><thead><tr class="ijRowHead" id="-9vye9v_15"><th id="-9vye9v_17"><p>Scheme</p></th><th id="-9vye9v_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-9vye9v_16"><td id="-9vye9v_19"><p>BearerAuth</p></td><td id="-9vye9v_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-9vye9v_21">Required: no.</p><p id="-9vye9v_22">Content type: <code class="code" id="-9vye9v_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-9vye9v_25"><thead><tr class="ijRowHead" id="-9vye9v_28"><th id="-9vye9v_30"><p>Status</p></th><th id="-9vye9v_31"><p>Description</p></th><th id="-9vye9v_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-9vye9v_29"><td id="-9vye9v_33"><p>201</p></td><td id="-9vye9v_34"><p>Customer attribute added successfully</p></td><td id="-9vye9v_35"><p>application/json</p></td></tr></tbody></table></div><p id="-9vye9v_26">Schema for response <code class="code" id="-9vye9v_36">201</code> (<code class="code" id="-9vye9v_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getcustomerattributes.html" class="navigation-links__prev">Get customer attributes</a><a href="deletecustomerdefaultdepartment.html" class="navigation-links__next">Delete customer default department</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:45.856148375"><title>Add customer code | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add customer code | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addcustomercode.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add customer code | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addcustomercode.html#webpage",
|
||||
"url": "writerside-documentation/addcustomercode.html",
|
||||
"name": "Add customer code | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addCustomerCode" data-main-title="Add customer code" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Users.topic|Users///Tag_Users_Page_1.topic|Users - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addCustomerCode" id="addCustomerCode.topic">Add customer code</h1><p id="xxk3ri_2">This endpoint documentation is generated directly from <code class="code" id="xxk3ri_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /admin/customer/code</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="xxk3ri_10">Operation ID: <code class="code" id="xxk3ri_12">addCustomerCode</code></p><p id="xxk3ri_11">Add customer code</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="xxk3ri_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="xxk3ri_14"><thead><tr class="ijRowHead" id="xxk3ri_15"><th id="xxk3ri_17"><p>Scheme</p></th><th id="xxk3ri_18"><p>Scopes</p></th></tr></thead><tbody><tr id="xxk3ri_16"><td id="xxk3ri_19"><p>BearerAuth</p></td><td id="xxk3ri_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="xxk3ri_21">Required: yes.</p><p id="xxk3ri_22">Content type: <code class="code" id="xxk3ri_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"code": {
|
||||
"type": "string"
|
||||
},
|
||||
"customer_number": {
|
||||
"type": "integer"
|
||||
},
|
||||
"user_id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="xxk3ri_25"><thead><tr class="ijRowHead" id="xxk3ri_28"><th id="xxk3ri_30"><p>Status</p></th><th id="xxk3ri_31"><p>Description</p></th><th id="xxk3ri_32"><p>Content Types</p></th></tr></thead><tbody><tr id="xxk3ri_29"><td id="xxk3ri_33"><p>200</p></td><td id="xxk3ri_34"><p>Success</p></td><td id="xxk3ri_35"><p>application/json</p></td></tr></tbody></table></div><p id="xxk3ri_26">Schema for response <code class="code" id="xxk3ri_36">200</code> (<code class="code" id="xxk3ri_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getcustomercode.html" class="navigation-links__prev">Get customer code</a><a href="getuseridfromcustomernumber.html" class="navigation-links__next">Get user ID from customer number</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:32.815054228"><title>Add customer default department | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add customer default department | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addcustomerdefaultdepartment.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add customer default department | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addcustomerdefaultdepartment.html#webpage",
|
||||
"url": "writerside-documentation/addcustomerdefaultdepartment.html",
|
||||
"name": "Add customer default department | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addCustomerDefaultDepartment" data-main-title="Add customer default department" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Users.topic|Users///Tag_Users_Page_1.topic|Users - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addCustomerDefaultDepartment" id="addCustomerDefaultDepartment.topic">Add customer default department</h1><p id="z7oi8r8_2">This endpoint documentation is generated directly from <code class="code" id="z7oi8r8_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /customer/department/default</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z7oi8r8_10">Operation ID: <code class="code" id="z7oi8r8_12">addCustomerDefaultDepartment</code></p><p id="z7oi8r8_11">Add customer default department</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z7oi8r8_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z7oi8r8_14"><thead><tr class="ijRowHead" id="z7oi8r8_15"><th id="z7oi8r8_17"><p>Scheme</p></th><th id="z7oi8r8_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z7oi8r8_16"><td id="z7oi8r8_19"><p>BearerAuth</p></td><td id="z7oi8r8_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="z7oi8r8_21">Required: yes.</p><p id="z7oi8r8_22">Content type: <code class="code" id="z7oi8r8_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"customer_number": {
|
||||
"type": "integer"
|
||||
},
|
||||
"department": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"department"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z7oi8r8_25"><thead><tr class="ijRowHead" id="z7oi8r8_28"><th id="z7oi8r8_30"><p>Status</p></th><th id="z7oi8r8_31"><p>Description</p></th><th id="z7oi8r8_32"><p>Content Types</p></th></tr></thead><tbody><tr id="z7oi8r8_29"><td id="z7oi8r8_33"><p>200</p></td><td id="z7oi8r8_34"><p>Success</p></td><td id="z7oi8r8_35"><p>application/json</p></td></tr></tbody></table></div><p id="z7oi8r8_26">Schema for response <code class="code" id="z7oi8r8_36">200</code> (<code class="code" id="z7oi8r8_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getcustomerdefaultdepartment.html" class="navigation-links__prev">Get customer default department</a><a href="deletecustomernote.html" class="navigation-links__next">Delete customer note</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:01.514331845"><title>Add customer fixed pricing | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add customer fixed pricing | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addcustomerfixedpricing.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add customer fixed pricing | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addcustomerfixedpricing.html#webpage",
|
||||
"url": "writerside-documentation/addcustomerfixedpricing.html",
|
||||
"name": "Add customer fixed pricing | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addCustomerFixedPricing" data-main-title="Add customer fixed pricing" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Users.topic|Users///Tag_Users_Page_1.topic|Users - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addCustomerFixedPricing" id="addCustomerFixedPricing.topic">Add customer fixed pricing</h1><p id="upkh77_2">This endpoint documentation is generated directly from <code class="code" id="upkh77_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /customer/pricing/fixed</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="upkh77_10">Operation ID: <code class="code" id="upkh77_12">addCustomerFixedPricing</code></p><p id="upkh77_11">Add customer fixed pricing</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="upkh77_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="upkh77_14"><thead><tr class="ijRowHead" id="upkh77_15"><th id="upkh77_17"><p>Scheme</p></th><th id="upkh77_18"><p>Scopes</p></th></tr></thead><tbody><tr id="upkh77_16"><td id="upkh77_19"><p>BearerAuth</p></td><td id="upkh77_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="upkh77_21">Required: yes.</p><p id="upkh77_22">Content type: <code class="code" id="upkh77_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"customer_number": {
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"price": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"customer_number",
|
||||
"price",
|
||||
"description"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="upkh77_25"><thead><tr class="ijRowHead" id="upkh77_28"><th id="upkh77_30"><p>Status</p></th><th id="upkh77_31"><p>Description</p></th><th id="upkh77_32"><p>Content Types</p></th></tr></thead><tbody><tr id="upkh77_29"><td id="upkh77_33"><p>200</p></td><td id="upkh77_34"><p>Success</p></td><td id="upkh77_35"><p>application/json</p></td></tr></tbody></table></div><p id="upkh77_26">Schema for response <code class="code" id="upkh77_36">200</code> (<code class="code" id="upkh77_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getcustomerfixedpricing.html" class="navigation-links__prev">Get customer fixed pricing</a><a href="listcustomers.html" class="navigation-links__next">List customers</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:10.315625351"><title>Add customer note | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add customer note | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addcustomernote.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add customer note | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addcustomernote.html#webpage",
|
||||
"url": "writerside-documentation/addcustomernote.html",
|
||||
"name": "Add customer note | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addCustomerNote" data-main-title="Add customer note" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Users.topic|Users///Tag_Users_Page_1.topic|Users - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addCustomerNote" id="addCustomerNote.topic">Add customer note</h1><p id="x5vq6r_2">This endpoint documentation is generated directly from <code class="code" id="x5vq6r_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /customer/notes</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="x5vq6r_10">Operation ID: <code class="code" id="x5vq6r_12">addCustomerNote</code></p><p id="x5vq6r_11">Add a note to a customer</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="x5vq6r_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="x5vq6r_14"><thead><tr class="ijRowHead" id="x5vq6r_15"><th id="x5vq6r_17"><p>Scheme</p></th><th id="x5vq6r_18"><p>Scopes</p></th></tr></thead><tbody><tr id="x5vq6r_16"><td id="x5vq6r_19"><p>BearerAuth</p></td><td id="x5vq6r_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="x5vq6r_21">Required: no.</p><p id="x5vq6r_22">Content type: <code class="code" id="x5vq6r_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="x5vq6r_25"><thead><tr class="ijRowHead" id="x5vq6r_28"><th id="x5vq6r_30"><p>Status</p></th><th id="x5vq6r_31"><p>Description</p></th><th id="x5vq6r_32"><p>Content Types</p></th></tr></thead><tbody><tr id="x5vq6r_29"><td id="x5vq6r_33"><p>201</p></td><td id="x5vq6r_34"><p>Customer note added successfully</p></td><td id="x5vq6r_35"><p>application/json</p></td></tr></tbody></table></div><p id="x5vq6r_26">Schema for response <code class="code" id="x5vq6r_36">201</code> (<code class="code" id="x5vq6r_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getcustomernotes.html" class="navigation-links__prev">Get customer notes</a><a href="deletecustomerfixedpricing.html" class="navigation-links__next">Delete customer fixed pricing</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:57.560621286"><title>Add daily report | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add daily report | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/adddailyreport.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add daily report | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/adddailyreport.html#webpage",
|
||||
"url": "writerside-documentation/adddailyreport.html",
|
||||
"name": "Add daily report | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addDailyReport" data-main-title="Add daily report" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Departments.topic|Departments///Tag_Departments_Page_1.topic|Departments - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addDailyReport" id="addDailyReport.topic">Add daily report</h1><p id="weug98_2">This endpoint documentation is generated directly from <code class="code" id="weug98_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /departments/daily-reports</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="weug98_10">Operation ID: <code class="code" id="weug98_12">addDailyReport</code></p><p id="weug98_11">Add daily report</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="weug98_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="weug98_14"><thead><tr class="ijRowHead" id="weug98_15"><th id="weug98_17"><p>Scheme</p></th><th id="weug98_18"><p>Scopes</p></th></tr></thead><tbody><tr id="weug98_16"><td id="weug98_19"><p>BearerAuth</p></td><td id="weug98_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="weug98_21">Required: yes.</p><p id="weug98_22">Content type: <code class="code" id="weug98_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"date": {
|
||||
"type": "string"
|
||||
},
|
||||
"department_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"report": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"department_id",
|
||||
"date",
|
||||
"report"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="weug98_25"><thead><tr class="ijRowHead" id="weug98_28"><th id="weug98_30"><p>Status</p></th><th id="weug98_31"><p>Description</p></th><th id="weug98_32"><p>Content Types</p></th></tr></thead><tbody><tr id="weug98_29"><td id="weug98_33"><p>200</p></td><td id="weug98_34"><p>Success</p></td><td id="weug98_35"><p>application/json</p></td></tr></tbody></table></div><p id="weug98_26">Schema for response <code class="code" id="weug98_36">200</code> (<code class="code" id="weug98_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listdailyreports.html" class="navigation-links__prev">List daily reports</a><a href="tag-departments-page-2.html" class="navigation-links__next">Departments - Page 2 of 2</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:01.515837311"><title>Add category to department | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add category to department | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/adddepartmentcategory.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add category to department | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/adddepartmentcategory.html#webpage",
|
||||
"url": "writerside-documentation/adddepartmentcategory.html",
|
||||
"name": "Add category to department | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addDepartmentCategory" data-main-title="Add category to department" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Departments.topic|Departments///Tag_Departments_Page_1.topic|Departments - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addDepartmentCategory" id="addDepartmentCategory.topic">Add category to department</h1><p id="-rhmyel_2">This endpoint documentation is generated directly from <code class="code" id="-rhmyel_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /departments/categories</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-rhmyel_10">Operation ID: <code class="code" id="-rhmyel_12">addDepartmentCategory</code></p><p id="-rhmyel_11">Associate a product category with a department</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-rhmyel_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-rhmyel_14"><thead><tr class="ijRowHead" id="-rhmyel_15"><th id="-rhmyel_17"><p>Scheme</p></th><th id="-rhmyel_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-rhmyel_16"><td id="-rhmyel_19"><p>BearerAuth</p></td><td id="-rhmyel_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-rhmyel_21">Required: yes.</p><p id="-rhmyel_22">Content type: <code class="code" id="-rhmyel_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"category_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"department_id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-rhmyel_25"><thead><tr class="ijRowHead" id="-rhmyel_28"><th id="-rhmyel_30"><p>Status</p></th><th id="-rhmyel_31"><p>Description</p></th><th id="-rhmyel_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-rhmyel_29"><td id="-rhmyel_33"><p>201</p></td><td id="-rhmyel_34"><p>Category added to department successfully</p></td><td id="-rhmyel_35"><p>application/json</p></td></tr></tbody></table></div><p id="-rhmyel_26">Schema for response <code class="code" id="-rhmyel_36">201</code> (<code class="code" id="-rhmyel_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="getdepartmentcategories.html" class="navigation-links__prev">Get department categories</a><a href="listdailyreports.html" class="navigation-links__next">List daily reports</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:23.960845957"><title>Add item to order | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add item to order | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addorderitem.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add item to order | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addorderitem.html#webpage",
|
||||
"url": "writerside-documentation/addorderitem.html",
|
||||
"name": "Add item to order | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addOrderItem" data-main-title="Add item to order" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Order_Items.topic|Order Items///Tag_Order_Items_Page_1.topic|Order Items - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addOrderItem" id="addOrderItem.topic">Add item to order</h1><p id="vkfgv4_2">This endpoint documentation is generated directly from <code class="code" id="vkfgv4_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /order/items</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="vkfgv4_10">Operation ID: <code class="code" id="vkfgv4_12">addOrderItem</code></p><p id="vkfgv4_11">Add a new item to an existing order</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="vkfgv4_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="vkfgv4_14"><thead><tr class="ijRowHead" id="vkfgv4_15"><th id="vkfgv4_17"><p>Scheme</p></th><th id="vkfgv4_18"><p>Scopes</p></th></tr></thead><tbody><tr id="vkfgv4_16"><td id="vkfgv4_19"><p>BearerAuth</p></td><td id="vkfgv4_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="vkfgv4_21">Required: yes.</p><p id="vkfgv4_22">Content type: <code class="code" id="vkfgv4_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/OrderItemCreate"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="vkfgv4_25"><thead><tr class="ijRowHead" id="vkfgv4_28"><th id="vkfgv4_31"><p>Status</p></th><th id="vkfgv4_32"><p>Description</p></th><th id="vkfgv4_33"><p>Content Types</p></th></tr></thead><tbody><tr id="vkfgv4_29"><td id="vkfgv4_34"><p>201</p></td><td id="vkfgv4_35"><p>Order item added successfully</p></td><td id="vkfgv4_36"><p>application/json</p></td></tr><tr id="vkfgv4_30"><td id="vkfgv4_37"><p>400</p></td><td id="vkfgv4_38"></td><td id="vkfgv4_39"></td></tr></tbody></table></div><p id="vkfgv4_26">Schema for response <code class="code" id="vkfgv4_40">201</code> (<code class="code" id="vkfgv4_41">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listorderitems.html" class="navigation-links__prev">List order items</a><a href="updateorderitem.html" class="navigation-links__next">Update order item</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:57.012514428"><title>Add plate scanner | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add plate scanner | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addplatescanner.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add plate scanner | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addplatescanner.html#webpage",
|
||||
"url": "writerside-documentation/addplatescanner.html",
|
||||
"name": "Add plate scanner | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addPlateScanner" data-main-title="Add plate scanner" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Plate_Scans.topic|Plate Scans///Tag_Plate_Scans_Page_1.topic|Plate Scans - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addPlateScanner" id="addPlateScanner.topic">Add plate scanner</h1><p id="mcro17_2">This endpoint documentation is generated directly from <code class="code" id="mcro17_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /numberplatescanners</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="mcro17_10">Operation ID: <code class="code" id="mcro17_12">addPlateScanner</code></p><p id="mcro17_11">Add plate scanner</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="mcro17_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="mcro17_14"><thead><tr class="ijRowHead" id="mcro17_15"><th id="mcro17_17"><p>Scheme</p></th><th id="mcro17_18"><p>Scopes</p></th></tr></thead><tbody><tr id="mcro17_16"><td id="mcro17_19"><p>BearerAuth</p></td><td id="mcro17_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="mcro17_21">Required: yes.</p><p id="mcro17_22">Content type: <code class="code" id="mcro17_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"department_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"notes": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"department_id",
|
||||
"name",
|
||||
"notes"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="mcro17_25"><thead><tr class="ijRowHead" id="mcro17_28"><th id="mcro17_30"><p>Status</p></th><th id="mcro17_31"><p>Description</p></th><th id="mcro17_32"><p>Content Types</p></th></tr></thead><tbody><tr id="mcro17_29"><td id="mcro17_33"><p>201</p></td><td id="mcro17_34"><p>Plate scanner added successfully</p></td><td id="mcro17_35"><p>application/json</p></td></tr></tbody></table></div><p id="mcro17_26">Schema for response <code class="code" id="mcro17_36">201</code> (<code class="code" id="mcro17_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listplatescanners.html" class="navigation-links__prev">List plate scanners</a><a href="updateplatescanner.html" class="navigation-links__next">Update plate scanner</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:13.488605147"><title>Add role | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add role | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addrole.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add role | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addrole.html#webpage",
|
||||
"url": "writerside-documentation/addrole.html",
|
||||
"name": "Add role | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addRole" data-main-title="Add role" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Roles.topic|Roles///Tag_Roles_Page_1.topic|Roles - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addRole" id="addRole.topic">Add role</h1><p id="-yg849z_2">This endpoint documentation is generated directly from <code class="code" id="-yg849z_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /roles</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-yg849z_10">Operation ID: <code class="code" id="-yg849z_12">addRole</code></p><p id="-yg849z_11">Add role</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-yg849z_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-yg849z_14"><thead><tr class="ijRowHead" id="-yg849z_15"><th id="-yg849z_17"><p>Scheme</p></th><th id="-yg849z_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-yg849z_16"><td id="-yg849z_19"><p>BearerAuth</p></td><td id="-yg849z_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-yg849z_21">Required: yes.</p><p id="-yg849z_22">Content type: <code class="code" id="-yg849z_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-yg849z_25"><thead><tr class="ijRowHead" id="-yg849z_28"><th id="-yg849z_30"><p>Status</p></th><th id="-yg849z_31"><p>Description</p></th><th id="-yg849z_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-yg849z_29"><td id="-yg849z_33"><p>200</p></td><td id="-yg849z_34"><p>Success</p></td><td id="-yg849z_35"><p>application/json</p></td></tr></tbody></table></div><p id="-yg849z_26">Schema for response <code class="code" id="-yg849z_36">200</code> (<code class="code" id="-yg849z_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listroles.html" class="navigation-links__prev">List roles</a><a href="editrole.html" class="navigation-links__next">Edit role</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:50.885972622"><title>Add permission to role | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add permission to role | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addrolepermission.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add permission to role | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addrolepermission.html#webpage",
|
||||
"url": "writerside-documentation/addrolepermission.html",
|
||||
"name": "Add permission to role | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addRolePermission" data-main-title="Add permission to role" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Roles.topic|Roles///Tag_Roles_Page_1.topic|Roles - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addRolePermission" id="addRolePermission.topic">Add permission to role</h1><p id="fnxwco_2">This endpoint documentation is generated directly from <code class="code" id="fnxwco_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /roles/permissions</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="fnxwco_10">Operation ID: <code class="code" id="fnxwco_12">addRolePermission</code></p><p id="fnxwco_11">Add permission to role</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="fnxwco_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="fnxwco_14"><thead><tr class="ijRowHead" id="fnxwco_15"><th id="fnxwco_17"><p>Scheme</p></th><th id="fnxwco_18"><p>Scopes</p></th></tr></thead><tbody><tr id="fnxwco_16"><td id="fnxwco_19"><p>BearerAuth</p></td><td id="fnxwco_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="fnxwco_21">Required: yes.</p><p id="fnxwco_22">Content type: <code class="code" id="fnxwco_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"permission": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"role_id",
|
||||
"permission"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="fnxwco_25"><thead><tr class="ijRowHead" id="fnxwco_28"><th id="fnxwco_30"><p>Status</p></th><th id="fnxwco_31"><p>Description</p></th><th id="fnxwco_32"><p>Content Types</p></th></tr></thead><tbody><tr id="fnxwco_29"><td id="fnxwco_33"><p>200</p></td><td id="fnxwco_34"><p>Success</p></td><td id="fnxwco_35"><p>application/json</p></td></tr></tbody></table></div><p id="fnxwco_26">Schema for response <code class="code" id="fnxwco_36">200</code> (<code class="code" id="fnxwco_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="removerolepermission.html" class="navigation-links__prev">Remove permission from role</a><a href="tag-self-serve.html" class="navigation-links__next">Self-Serve</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:43.615253374"><title>Add self-serve condition | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add self-serve condition | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addselfservecondition.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add self-serve condition | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addselfservecondition.html#webpage",
|
||||
"url": "writerside-documentation/addselfservecondition.html",
|
||||
"name": "Add self-serve condition | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addSelfserveCondition" data-main-title="Add self-serve condition" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Self_Serve.topic|Self-Serve///Tag_Self_Serve_Page_1.topic|Self-Serve - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addSelfserveCondition" id="addSelfserveCondition.topic">Add self-serve condition</h1><p id="-o0z7d1_2">This endpoint documentation is generated directly from <code class="code" id="-o0z7d1_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /department/selfserve/conditions</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-o0z7d1_10">Operation ID: <code class="code" id="-o0z7d1_12">addSelfserveCondition</code></p><p id="-o0z7d1_11">Add a new self-serve condition. Either provide a reusable machine_type_id or a legacy department/lane/product scope.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-o0z7d1_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-o0z7d1_14"><thead><tr class="ijRowHead" id="-o0z7d1_15"><th id="-o0z7d1_17"><p>Scheme</p></th><th id="-o0z7d1_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-o0z7d1_16"><td id="-o0z7d1_19"><p>BearerAuth</p></td><td id="-o0z7d1_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-o0z7d1_21">Required: yes.</p><p id="-o0z7d1_22">Content type: <code class="code" id="-o0z7d1_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"condition_id": {
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"department": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"lane": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"machine_type_id": {
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"product": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"description"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-o0z7d1_25"><thead><tr class="ijRowHead" id="-o0z7d1_28"><th id="-o0z7d1_32"><p>Status</p></th><th id="-o0z7d1_33"><p>Description</p></th><th id="-o0z7d1_34"><p>Content Types</p></th></tr></thead><tbody><tr id="-o0z7d1_29"><td id="-o0z7d1_35"><p>200</p></td><td id="-o0z7d1_36"><p>Successfully added condition</p></td><td id="-o0z7d1_37"><p>application/json</p></td></tr><tr id="-o0z7d1_30"><td id="-o0z7d1_38"><p>400</p></td><td id="-o0z7d1_39"></td><td id="-o0z7d1_40"></td></tr><tr id="-o0z7d1_31"><td id="-o0z7d1_41"><p>500</p></td><td id="-o0z7d1_42"></td><td id="-o0z7d1_43"></td></tr></tbody></table></div><p id="-o0z7d1_26">Schema for response <code class="code" id="-o0z7d1_44">200</code> (<code class="code" id="-o0z7d1_45">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/DepartmentSelfserveCondition"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listselfserveconditions.html" class="navigation-links__prev">List self-serve conditions</a><a href="updateselfservecondition.html" class="navigation-links__next">Update self-serve condition</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,52 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:15.046696864"><title>Add self-serve condition rule | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add self-serve condition rule | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addselfserveconditionrule.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add self-serve condition rule | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addselfserveconditionrule.html#webpage",
|
||||
"url": "writerside-documentation/addselfserveconditionrule.html",
|
||||
"name": "Add self-serve condition rule | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addSelfserveConditionRule" data-main-title="Add self-serve condition rule" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Self_Serve.topic|Self-Serve///Tag_Self_Serve_Page_1.topic|Self-Serve - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addSelfserveConditionRule" id="addSelfserveConditionRule.topic">Add self-serve condition rule</h1><p id="-sr43qh_2">This endpoint documentation is generated directly from <code class="code" id="-sr43qh_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /department/selfserve/condition/rules</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-sr43qh_10">Operation ID: <code class="code" id="-sr43qh_12">addSelfserveConditionRule</code></p><p id="-sr43qh_11">Add a new self-serve condition rule.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-sr43qh_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-sr43qh_14"><thead><tr class="ijRowHead" id="-sr43qh_15"><th id="-sr43qh_17"><p>Scheme</p></th><th id="-sr43qh_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-sr43qh_16"><td id="-sr43qh_19"><p>BearerAuth</p></td><td id="-sr43qh_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-sr43qh_21">Required: yes.</p><p id="-sr43qh_22">Content type: <code class="code" id="-sr43qh_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"condition_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"object_id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"object_type": {
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"condition_id",
|
||||
"type",
|
||||
"object_type",
|
||||
"object_id",
|
||||
"name",
|
||||
"description"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-sr43qh_25"><thead><tr class="ijRowHead" id="-sr43qh_28"><th id="-sr43qh_32"><p>Status</p></th><th id="-sr43qh_33"><p>Description</p></th><th id="-sr43qh_34"><p>Content Types</p></th></tr></thead><tbody><tr id="-sr43qh_29"><td id="-sr43qh_35"><p>200</p></td><td id="-sr43qh_36"><p>Successfully added condition rule</p></td><td id="-sr43qh_37"><p>application/json</p></td></tr><tr id="-sr43qh_30"><td id="-sr43qh_38"><p>400</p></td><td id="-sr43qh_39"></td><td id="-sr43qh_40"></td></tr><tr id="-sr43qh_31"><td id="-sr43qh_41"><p>500</p></td><td id="-sr43qh_42"></td><td id="-sr43qh_43"></td></tr></tbody></table></div><p id="-sr43qh_26">Schema for response <code class="code" id="-sr43qh_44">200</code> (<code class="code" id="-sr43qh_45">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/DepartmentSelfserveConditionRule"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listselfserveconditionrules.html" class="navigation-links__prev">List self-serve condition rules</a><a href="updateselfserveconditionrule.html" class="navigation-links__next">Update self-serve condition rule</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:51.681265559"><title>Add reusable self-serve machine type | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add reusable self-serve machine type | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addselfservemachinetype.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add reusable self-serve machine type | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addselfservemachinetype.html#webpage",
|
||||
"url": "writerside-documentation/addselfservemachinetype.html",
|
||||
"name": "Add reusable self-serve machine type | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addSelfserveMachineType" data-main-title="Add reusable self-serve machine type" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Self_Serve.topic|Self-Serve///Tag_Self_Serve_Page_1.topic|Self-Serve - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addSelfserveMachineType" id="addSelfserveMachineType.topic">Add reusable self-serve machine type</h1><p id="-gzddmn_2">This endpoint documentation is generated directly from <code class="code" id="-gzddmn_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /department/selfserve/machine-types</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-gzddmn_10">Operation ID: <code class="code" id="-gzddmn_12">addSelfserveMachineType</code></p><p id="-gzddmn_11">Add reusable self-serve machine type</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-gzddmn_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-gzddmn_14"><thead><tr class="ijRowHead" id="-gzddmn_15"><th id="-gzddmn_17"><p>Scheme</p></th><th id="-gzddmn_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-gzddmn_16"><td id="-gzddmn_19"><p>BearerAuth</p></td><td id="-gzddmn_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-gzddmn_21">Required: yes.</p><p id="-gzddmn_22">Content type: <code class="code" id="-gzddmn_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"description": {
|
||||
"nullable": true,
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-gzddmn_25"><thead><tr class="ijRowHead" id="-gzddmn_28"><th id="-gzddmn_30"><p>Status</p></th><th id="-gzddmn_31"><p>Description</p></th><th id="-gzddmn_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-gzddmn_29"><td id="-gzddmn_33"><p>200</p></td><td id="-gzddmn_34"><p>Successfully added machine type</p></td><td id="-gzddmn_35"><p>application/json</p></td></tr></tbody></table></div><p id="-gzddmn_26">Schema for response <code class="code" id="-gzddmn_36">200</code> (<code class="code" id="-gzddmn_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/SelfserveMachineType"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listselfservemachinetypes.html" class="navigation-links__prev">List reusable self-serve machine types</a><a href="updateselfservemachinetype.html" class="navigation-links__next">Update reusable self-serve machine type</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:46:15.488004224"><title>Add self-serve question | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add self-serve question | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addselfservequestion.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add self-serve question | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addselfservequestion.html#webpage",
|
||||
"url": "writerside-documentation/addselfservequestion.html",
|
||||
"name": "Add self-serve question | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addSelfserveQuestion" data-main-title="Add self-serve question" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Self_Serve.topic|Self-Serve///Tag_Self_Serve_Page_1.topic|Self-Serve - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addSelfserveQuestion" id="addSelfserveQuestion.topic">Add self-serve question</h1><p id="-48x1y0_2">This endpoint documentation is generated directly from <code class="code" id="-48x1y0_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /department/selfserve/questions</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-48x1y0_10">Operation ID: <code class="code" id="-48x1y0_12">addSelfserveQuestion</code></p><p id="-48x1y0_11">Add a new self-serve question. Questions are typically shared across departments and lanes by omitting department, lane, and product, which default to 0.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-48x1y0_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-48x1y0_14"><thead><tr class="ijRowHead" id="-48x1y0_15"><th id="-48x1y0_17"><p>Scheme</p></th><th id="-48x1y0_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-48x1y0_16"><td id="-48x1y0_19"><p>BearerAuth</p></td><td id="-48x1y0_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-48x1y0_21">Required: yes.</p><p id="-48x1y0_22">Content type: <code class="code" id="-48x1y0_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"condition_id": {
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"department": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"lane": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"order_priority": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"product": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"question": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"question",
|
||||
"description"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-48x1y0_25"><thead><tr class="ijRowHead" id="-48x1y0_28"><th id="-48x1y0_32"><p>Status</p></th><th id="-48x1y0_33"><p>Description</p></th><th id="-48x1y0_34"><p>Content Types</p></th></tr></thead><tbody><tr id="-48x1y0_29"><td id="-48x1y0_35"><p>200</p></td><td id="-48x1y0_36"><p>Successfully added question</p></td><td id="-48x1y0_37"><p>application/json</p></td></tr><tr id="-48x1y0_30"><td id="-48x1y0_38"><p>400</p></td><td id="-48x1y0_39"></td><td id="-48x1y0_40"></td></tr><tr id="-48x1y0_31"><td id="-48x1y0_41"><p>500</p></td><td id="-48x1y0_42"></td><td id="-48x1y0_43"></td></tr></tbody></table></div><p id="-48x1y0_26">Schema for response <code class="code" id="-48x1y0_44">200</code> (<code class="code" id="-48x1y0_45">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/DepartmentSelfserveQuestion"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listselfservequestions.html" class="navigation-links__prev">List self-serve questions</a><a href="updateselfservequestion.html" class="navigation-links__next">Update self-serve question</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,80 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:45.855911338"><title>Add self-serve task | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add self-serve task | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addselfservetask.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add self-serve task | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addselfservetask.html#webpage",
|
||||
"url": "writerside-documentation/addselfservetask.html",
|
||||
"name": "Add self-serve task | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addSelfserveTask" data-main-title="Add self-serve task" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Self_Serve.topic|Self-Serve///Tag_Self_Serve_Page_1.topic|Self-Serve - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addSelfserveTask" id="addSelfserveTask.topic">Add self-serve task</h1><p id="-z0wiex_2">This endpoint documentation is generated directly from <code class="code" id="-z0wiex_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /department/selfserve/tasks</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-z0wiex_10">Operation ID: <code class="code" id="-z0wiex_12">addSelfserveTask</code></p><p id="-z0wiex_11">Add a new self-serve task. Either provide a reusable machine_type_id or a legacy department/lane/product scope.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-z0wiex_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-z0wiex_14"><thead><tr class="ijRowHead" id="-z0wiex_15"><th id="-z0wiex_17"><p>Scheme</p></th><th id="-z0wiex_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-z0wiex_16"><td id="-z0wiex_19"><p>BearerAuth</p></td><td id="-z0wiex_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-z0wiex_21">Required: yes.</p><p id="-z0wiex_22">Content type: <code class="code" id="-z0wiex_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"buttons": {
|
||||
"default": [],
|
||||
"description": "Optional dynamic image button IDs enabled by this task.",
|
||||
"items": {
|
||||
"type": "integer"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"condition_id": {
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"department": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"dynamic_images_vehicle_type": {
|
||||
"description": "Optional vehicle type selection override for the machine UI. Integer >= 0 or null.",
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"lane": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"machine_type_id": {
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"order_priority": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"product": {
|
||||
"default": 0,
|
||||
"type": "integer"
|
||||
},
|
||||
"services": {
|
||||
"description": "Optional services enabled by this task. Items must be valid service enum names.",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/SelfserveLaneService"
|
||||
},
|
||||
"type": "array"
|
||||
},
|
||||
"task": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"task",
|
||||
"description"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-z0wiex_25"><thead><tr class="ijRowHead" id="-z0wiex_28"><th id="-z0wiex_32"><p>Status</p></th><th id="-z0wiex_33"><p>Description</p></th><th id="-z0wiex_34"><p>Content Types</p></th></tr></thead><tbody><tr id="-z0wiex_29"><td id="-z0wiex_35"><p>200</p></td><td id="-z0wiex_36"><p>Successfully added task</p></td><td id="-z0wiex_37"><p>application/json</p></td></tr><tr id="-z0wiex_30"><td id="-z0wiex_38"><p>400</p></td><td id="-z0wiex_39"></td><td id="-z0wiex_40"></td></tr><tr id="-z0wiex_31"><td id="-z0wiex_41"><p>500</p></td><td id="-z0wiex_42"></td><td id="-z0wiex_43"></td></tr></tbody></table></div><p id="-z0wiex_26">Schema for response <code class="code" id="-z0wiex_44">200</code> (<code class="code" id="-z0wiex_45">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/DepartmentSelfserveTask"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listselfservetasks.html" class="navigation-links__prev">List self-serve tasks</a><a href="updateselfservetask.html" class="navigation-links__next">Update self-serve task</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:57.83478546"><title>Add vehicle condition | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add vehicle condition | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addselfservevehiclecondition.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add vehicle condition | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addselfservevehiclecondition.html#webpage",
|
||||
"url": "writerside-documentation/addselfservevehiclecondition.html",
|
||||
"name": "Add vehicle condition | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addSelfserveVehicleCondition" data-main-title="Add vehicle condition" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Self_Serve.topic|Self-Serve///Tag_Self_Serve_Page_2.topic|Self-Serve - Page 2 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addSelfserveVehicleCondition" id="addSelfserveVehicleCondition.topic">Add vehicle condition</h1><p id="c9k51t_2">This endpoint documentation is generated directly from <code class="code" id="c9k51t_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /department/selfserve/vehicle/conditions</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="c9k51t_10">Operation ID: <code class="code" id="c9k51t_12">addSelfserveVehicleCondition</code></p><p id="c9k51t_11">Add a new vehicle condition (answer to a question). Customers can only add conditions for their own vehicles.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="c9k51t_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="c9k51t_14"><thead><tr class="ijRowHead" id="c9k51t_15"><th id="c9k51t_17"><p>Scheme</p></th><th id="c9k51t_18"><p>Scopes</p></th></tr></thead><tbody><tr id="c9k51t_16"><td id="c9k51t_19"><p>BearerAuth</p></td><td id="c9k51t_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="c9k51t_21">Required: yes.</p><p id="c9k51t_22">Content type: <code class="code" id="c9k51t_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"customer_id": {
|
||||
"nullable": true,
|
||||
"type": "integer"
|
||||
},
|
||||
"department": {
|
||||
"type": "integer"
|
||||
},
|
||||
"lane": {
|
||||
"type": "integer"
|
||||
},
|
||||
"question": {
|
||||
"type": "integer"
|
||||
},
|
||||
"reg": {
|
||||
"type": "string"
|
||||
},
|
||||
"value": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"department",
|
||||
"lane",
|
||||
"reg",
|
||||
"question"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="c9k51t_25"><thead><tr class="ijRowHead" id="c9k51t_28"><th id="c9k51t_32"><p>Status</p></th><th id="c9k51t_33"><p>Description</p></th><th id="c9k51t_34"><p>Content Types</p></th></tr></thead><tbody><tr id="c9k51t_29"><td id="c9k51t_35"><p>200</p></td><td id="c9k51t_36"><p>Successfully added vehicle condition</p></td><td id="c9k51t_37"><p>application/json</p></td></tr><tr id="c9k51t_30"><td id="c9k51t_38"><p>400</p></td><td id="c9k51t_39"></td><td id="c9k51t_40"></td></tr><tr id="c9k51t_31"><td id="c9k51t_41"><p>500</p></td><td id="c9k51t_42"></td><td id="c9k51t_43"></td></tr></tbody></table></div><p id="c9k51t_26">Schema for response <code class="code" id="c9k51t_44">200</code> (<code class="code" id="c9k51t_45">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/DepartmentSelfserveVehicleConditionMutationResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listselfservevehicleconditions.html" class="navigation-links__prev">List vehicle conditions</a><a href="updateselfservevehiclecondition.html" class="navigation-links__next">Update vehicle condition</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:12.090036324"><title>Add vehicle | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Add vehicle | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/addvehicle.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Add vehicle | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/addvehicle.html#webpage",
|
||||
"url": "writerside-documentation/addvehicle.html",
|
||||
"name": "Add vehicle | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="addVehicle" data-main-title="Add vehicle" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Vehicles.topic|Vehicles///Tag_Vehicles_Page_1.topic|Vehicles - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="addVehicle" id="addVehicle.topic">Add vehicle</h1><p id="-59dur9_2">This endpoint documentation is generated directly from <code class="code" id="-59dur9_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /vehicles</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-59dur9_11">Operation ID: <code class="code" id="-59dur9_13">addVehicle</code></p><p id="-59dur9_12">Create a new vehicle for a customer. Permissions: - Own scope: `add_vehicle` (linked to subuser node `VEHICLES_ADD`). - Broader scope: `add_vehicle_other`.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-59dur9_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-59dur9_15"><thead><tr class="ijRowHead" id="-59dur9_16"><th id="-59dur9_18"><p>Scheme</p></th><th id="-59dur9_19"><p>Scopes</p></th></tr></thead><tbody><tr id="-59dur9_17"><td id="-59dur9_20"><p>BearerAuth</p></td><td id="-59dur9_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-59dur9_22"><thead><tr class="ijRowHead" id="-59dur9_23"><th id="-59dur9_25"><p>Name</p></th><th id="-59dur9_26"><p>In</p></th><th id="-59dur9_27"><p>Required</p></th><th id="-59dur9_28"><p>Type</p></th><th id="-59dur9_29"><p>Description</p></th></tr></thead><tbody><tr id="-59dur9_24"><td id="-59dur9_30"></td><td id="-59dur9_31"></td><td id="-59dur9_32"><p>no</p></td><td id="-59dur9_33"><p>object</p></td><td id="-59dur9_34"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-59dur9_35">Required: yes.</p><p id="-59dur9_36">Content type: <code class="code" id="-59dur9_38">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"customer_id": {
|
||||
"description": "Optional explicit target customer. Defaults to the effective customer context.",
|
||||
"type": "integer"
|
||||
},
|
||||
"reference": {
|
||||
"maxLength": 255,
|
||||
"nullable": true,
|
||||
"type": "string"
|
||||
},
|
||||
"reg": {
|
||||
"description": "Vehicle registration number",
|
||||
"maxLength": 12,
|
||||
"minLength": 2,
|
||||
"type": "string"
|
||||
},
|
||||
"type": {
|
||||
"description": "Product ID representing the vehicle wash type",
|
||||
"type": "integer"
|
||||
},
|
||||
"wash_subscription": {
|
||||
"type": "boolean"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"reg",
|
||||
"type",
|
||||
"wash_subscription"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-59dur9_39"><thead><tr class="ijRowHead" id="-59dur9_42"><th id="-59dur9_46"><p>Status</p></th><th id="-59dur9_47"><p>Description</p></th><th id="-59dur9_48"><p>Content Types</p></th></tr></thead><tbody><tr id="-59dur9_43"><td id="-59dur9_49"><p>200</p></td><td id="-59dur9_50"><p>Vehicle created</p></td><td id="-59dur9_51"><p>application/json</p></td></tr><tr id="-59dur9_44"><td id="-59dur9_52"><p>400</p></td><td id="-59dur9_53"></td><td id="-59dur9_54"></td></tr><tr id="-59dur9_45"><td id="-59dur9_55"><p>403</p></td><td id="-59dur9_56"></td><td id="-59dur9_57"></td></tr></tbody></table></div><p id="-59dur9_40">Schema for response <code class="code" id="-59dur9_58">200</code> (<code class="code" id="-59dur9_59">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listvehicles.html" class="navigation-links__prev">List vehicles</a><a href="editvehicle.html" class="navigation-links__next">Edit vehicle</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:39:51.307874295"><title>Delete booking (admin) | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Delete booking (admin) | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/admindeletebooking.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Delete booking (admin) | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/admindeletebooking.html#webpage",
|
||||
"url": "writerside-documentation/admindeletebooking.html",
|
||||
"name": "Delete booking (admin) | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="adminDeleteBooking" data-main-title="Delete booking (admin)" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bookings.topic|Bookings///Tag_Bookings_Page_1.topic|Bookings - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="adminDeleteBooking" id="adminDeleteBooking.topic">Delete booking (admin)</h1><p id="z68no4f_2">This endpoint documentation is generated directly from <code class="code" id="z68no4f_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /admin/bookings/delete</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z68no4f_10">Operation ID: <code class="code" id="z68no4f_12">adminDeleteBooking</code></p><p id="z68no4f_11">Delete booking (admin)</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z68no4f_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z68no4f_14"><thead><tr class="ijRowHead" id="z68no4f_15"><th id="z68no4f_17"><p>Scheme</p></th><th id="z68no4f_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z68no4f_16"><td id="z68no4f_19"><p>BearerAuth</p></td><td id="z68no4f_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="z68no4f_21">Required: yes.</p><p id="z68no4f_22">Content type: <code class="code" id="z68no4f_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z68no4f_25"><thead><tr class="ijRowHead" id="z68no4f_28"><th id="z68no4f_30"><p>Status</p></th><th id="z68no4f_31"><p>Description</p></th><th id="z68no4f_32"><p>Content Types</p></th></tr></thead><tbody><tr id="z68no4f_29"><td id="z68no4f_33"><p>200</p></td><td id="z68no4f_34"><p>Success</p></td><td id="z68no4f_35"><p>application/json</p></td></tr></tbody></table></div><p id="z68no4f_26">Schema for response <code class="code" id="z68no4f_36">200</code> (<code class="code" id="z68no4f_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="completewashwithoutwashcertificate.html" class="navigation-links__prev">Complete wash without wash certificate</a><a href="getdepartmentbookingcount.html" class="navigation-links__next">Get department unfulfilled bookings count</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1 @@
|
||||
{}
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:08.113413637"><title>API Overview | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"base-url","level":0,"title":"Base URLs","anchor":"#base-url"},{"id":"common-headers","level":0,"title":"Common Headers","anchor":"#common-headers"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="API Overview | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/api-overview.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="API Overview | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/api-overview.html#webpage",
|
||||
"url": "writerside-documentation/api-overview.html",
|
||||
"name": "API Overview | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="API-Overview" data-main-title="API Overview" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="API-Overview" id="API-Overview.topic">API Overview</h1><p id="qiufyk_2">This section provides a high-level overview of how to interact with the API based on <code class="code" id="qiufyk_5">openapi.yaml</code>.</p><section class="chapter"><h2 id="base-url" data-toc="base-url">Base URLs</h2><p id="qiufyk_6">The API currently defines the following servers:</p><div class="code-block" data-lang="none">
|
||||
https://api.truckwash.dk
|
||||
https://api.truckwash.io
|
||||
http://localhost/api
|
||||
</div></section><section class="chapter"><h2 id="common-headers" data-toc="common-headers">Common Headers</h2><div class="table-wrapper"><table class="wide" id="qiufyk_8"><thead><tr class="ijRowHead" id="qiufyk_9"><th id="qiufyk_14"><p>Header</p></th><th id="qiufyk_15"><p>Description</p></th></tr></thead><tbody><tr id="qiufyk_10"><td id="qiufyk_16"><p>Authorization</p></td><td id="qiufyk_17"><p>Use Bearer authentication for protected endpoints: <code class="code" id="qiufyk_18">Authorization: Bearer <JWT></code>.</p></td></tr><tr id="qiufyk_11"><td id="qiufyk_19"><p>Accept</p></td><td id="qiufyk_20"><p>Use <code class="code" id="qiufyk_21">application/json</code>.</p></td></tr><tr id="qiufyk_12"><td id="qiufyk_22"><p>Content-Type</p></td><td id="qiufyk_23"><p>Use <code class="code" id="qiufyk_24">application/json</code> for request bodies.</p></td></tr><tr id="qiufyk_13"><td id="qiufyk_25"><p>X-Customer-Number</p></td><td id="qiufyk_26"><p>Required for many customer-scoped requests when authenticated as a subuser.</p></td></tr></tbody></table></div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="introduction.html" class="navigation-links__prev">Introduction</a><a href="authentication.html" class="navigation-links__next">Authentication</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:12.258652205"><title>API Reference | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="API Reference | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/api-reference.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="API Reference | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/api-reference.html#webpage",
|
||||
"url": "writerside-documentation/api-reference.html",
|
||||
"name": "API Reference | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="API-Reference" data-main-title="API Reference" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="API-Reference" id="API-Reference.topic">API Reference</h1><p id="z1opr22_2">Comprehensive API reference generated from the repository root <code class="code" id="z1opr22_3">openapi.yaml</code>.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="error-handling.html" class="navigation-links__prev">Error Handling</a><a href="tag-authentication.html" class="navigation-links__next">Authentication</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:10.245691405"><title>Authentication | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"api-token","level":0,"title":"Bearer JWT Header","anchor":"#api-token"},{"id":"subuser-customer-targeting","level":0,"title":"Subuser Customer Targeting","anchor":"#subuser-customer-targeting"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Authentication | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/authentication.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Authentication | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/authentication.html#webpage",
|
||||
"url": "writerside-documentation/authentication.html",
|
||||
"name": "Authentication | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="Authentication" data-main-title="Authentication" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Overview.topic|API Overview"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="Authentication" id="Authentication.topic">Authentication</h1><p id="kim5nc_2">The API uses the <code class="code" id="kim5nc_5">BearerAuth</code> security scheme (HTTP Bearer, JWT).</p><section class="chapter"><h2 id="api-token" data-toc="api-token">Bearer JWT Header</h2><p id="kim5nc_6">Get a token from <code class="code" id="kim5nc_8">/auth/login</code> or <code class="code" id="kim5nc_9">/auth/employee/login</code>, then send:</p><div class="code-block" data-lang="http">
|
||||
Authorization: Bearer YOUR_API_TOKEN
|
||||
</div></section><section class="chapter"><h2 id="subuser-customer-targeting" data-toc="subuser-customer-targeting">Subuser Customer Targeting</h2><p id="kim5nc_10">When authenticated as a subuser, include a target customer header for customer-scoped endpoints:</p><div class="code-block" data-lang="http">
|
||||
X-Customer-Number: 123456
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="api-overview.html" class="navigation-links__prev">API Overview</a><a href="error-handling.html" class="navigation-links__next">Error Handling</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:02.492592831"><title>Create/place a flash call via Bird | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Create/place a flash call via Bird | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdcreateflashcall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Create/place a flash call via Bird | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdcreateflashcall.html#webpage",
|
||||
"url": "writerside-documentation/birdcreateflashcall.html",
|
||||
"name": "Create/place a flash call via Bird | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdCreateFlashCall" data-main-title="Create/place a flash call via Bird" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdCreateFlashCall" id="birdCreateFlashCall.topic">Create/place a flash call via Bird</h1><p id="-pc6vet_2">This endpoint documentation is generated directly from <code class="code" id="-pc6vet_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/flash-calls</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-pc6vet_11">Operation ID: <code class="code" id="-pc6vet_13">birdCreateFlashCall</code></p><p id="-pc6vet_12">Create/place a flash call via Bird</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-pc6vet_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-pc6vet_15"><thead><tr class="ijRowHead" id="-pc6vet_16"><th id="-pc6vet_18"><p>Scheme</p></th><th id="-pc6vet_19"><p>Scopes</p></th></tr></thead><tbody><tr id="-pc6vet_17"><td id="-pc6vet_20"><p>BearerAuth</p></td><td id="-pc6vet_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-pc6vet_22"><thead><tr class="ijRowHead" id="-pc6vet_23"><th id="-pc6vet_26"><p>Name</p></th><th id="-pc6vet_27"><p>In</p></th><th id="-pc6vet_28"><p>Required</p></th><th id="-pc6vet_29"><p>Type</p></th><th id="-pc6vet_30"><p>Description</p></th></tr></thead><tbody><tr id="-pc6vet_24"><td id="-pc6vet_31"><p>workspaceId</p></td><td id="-pc6vet_32"><p>query</p></td><td id="-pc6vet_33"><p>no</p></td><td id="-pc6vet_34"><p>string</p></td><td id="-pc6vet_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-pc6vet_25"><td id="-pc6vet_36"><p>channelId</p></td><td id="-pc6vet_37"><p>query</p></td><td id="-pc6vet_38"><p>no</p></td><td id="-pc6vet_39"><p>string</p></td><td id="-pc6vet_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-pc6vet_41">Required: yes.</p><p id="-pc6vet_42">Content type: <code class="code" id="-pc6vet_44">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-pc6vet_45"><thead><tr class="ijRowHead" id="-pc6vet_48"><th id="-pc6vet_50"><p>Status</p></th><th id="-pc6vet_51"><p>Description</p></th><th id="-pc6vet_52"><p>Content Types</p></th></tr></thead><tbody><tr id="-pc6vet_49"><td id="-pc6vet_53"><p>200</p></td><td id="-pc6vet_54"><p>Flash call created</p></td><td id="-pc6vet_55"><p>application/json</p></td></tr></tbody></table></div><p id="-pc6vet_46">Schema for response <code class="code" id="-pc6vet_56">200</code> (<code class="code" id="-pc6vet_57">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdlistflashcalls.html" class="navigation-links__prev">List flash calls</a><a href="birdendflashcallbynumbers.html" class="navigation-links__next">Complete/end a flash call using from/to numbers</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:09.58052399"><title>Create/place a voice call via Bird | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Create/place a voice call via Bird | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdcreatevoicecall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Create/place a voice call via Bird | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdcreatevoicecall.html#webpage",
|
||||
"url": "writerside-documentation/birdcreatevoicecall.html",
|
||||
"name": "Create/place a voice call via Bird | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdCreateVoiceCall" data-main-title="Create/place a voice call via Bird" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdCreateVoiceCall" id="birdCreateVoiceCall.topic">Create/place a voice call via Bird</h1><p id="z9imszh_2">This endpoint documentation is generated directly from <code class="code" id="z9imszh_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/calls</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z9imszh_11">Operation ID: <code class="code" id="z9imszh_13">birdCreateVoiceCall</code></p><p id="z9imszh_12">Create/place a voice call via Bird</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z9imszh_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z9imszh_15"><thead><tr class="ijRowHead" id="z9imszh_16"><th id="z9imszh_18"><p>Scheme</p></th><th id="z9imszh_19"><p>Scopes</p></th></tr></thead><tbody><tr id="z9imszh_17"><td id="z9imszh_20"><p>BearerAuth</p></td><td id="z9imszh_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="z9imszh_22"><thead><tr class="ijRowHead" id="z9imszh_23"><th id="z9imszh_26"><p>Name</p></th><th id="z9imszh_27"><p>In</p></th><th id="z9imszh_28"><p>Required</p></th><th id="z9imszh_29"><p>Type</p></th><th id="z9imszh_30"><p>Description</p></th></tr></thead><tbody><tr id="z9imszh_24"><td id="z9imszh_31"><p>workspaceId</p></td><td id="z9imszh_32"><p>query</p></td><td id="z9imszh_33"><p>no</p></td><td id="z9imszh_34"><p>string</p></td><td id="z9imszh_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="z9imszh_25"><td id="z9imszh_36"><p>channelId</p></td><td id="z9imszh_37"><p>query</p></td><td id="z9imszh_38"><p>no</p></td><td id="z9imszh_39"><p>string</p></td><td id="z9imszh_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="z9imszh_41">Required: yes.</p><p id="z9imszh_42">Content type: <code class="code" id="z9imszh_44">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"from": {
|
||||
"description": "E.164 phone number of the caller (sender)",
|
||||
"example": "+4599988877",
|
||||
"type": "string"
|
||||
},
|
||||
"to": {
|
||||
"description": "E.164 phone number of the callee",
|
||||
"example": "+4511122233",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z9imszh_45"><thead><tr class="ijRowHead" id="z9imszh_48"><th id="z9imszh_50"><p>Status</p></th><th id="z9imszh_51"><p>Description</p></th><th id="z9imszh_52"><p>Content Types</p></th></tr></thead><tbody><tr id="z9imszh_49"><td id="z9imszh_53"><p>200</p></td><td id="z9imszh_54"><p>Call created</p></td><td id="z9imszh_55"><p>application/json</p></td></tr></tbody></table></div><p id="z9imszh_46">Schema for response <code class="code" id="z9imszh_56">200</code> (<code class="code" id="z9imszh_57">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdlistvoicecalls.html" class="navigation-links__prev">List voice calls</a><a href="birdtestoutboundvoicecall.html" class="navigation-links__next">Place a test outbound call and hang up when accepted</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:32.205987443"><title>Delete/release a number by ID | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Delete/release a number by ID | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birddeletenumber.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Delete/release a number by ID | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birddeletenumber.html#webpage",
|
||||
"url": "writerside-documentation/birddeletenumber.html",
|
||||
"name": "Delete/release a number by ID | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdDeleteNumber" data-main-title="Delete/release a number by ID" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdDeleteNumber" id="birdDeleteNumber.topic">Delete/release a number by ID</h1><p id="-a2hln7_2">This endpoint documentation is generated directly from <code class="code" id="-a2hln7_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">DELETE /bird/numbers/{id}</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-a2hln7_10">Operation ID: <code class="code" id="-a2hln7_12">birdDeleteNumber</code></p><p id="-a2hln7_11">Delete/release a number by ID</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-a2hln7_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-a2hln7_14"><thead><tr class="ijRowHead" id="-a2hln7_15"><th id="-a2hln7_17"><p>Scheme</p></th><th id="-a2hln7_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-a2hln7_16"><td id="-a2hln7_19"><p>BearerAuth</p></td><td id="-a2hln7_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-a2hln7_21"><thead><tr class="ijRowHead" id="-a2hln7_22"><th id="-a2hln7_25"><p>Name</p></th><th id="-a2hln7_26"><p>In</p></th><th id="-a2hln7_27"><p>Required</p></th><th id="-a2hln7_28"><p>Type</p></th><th id="-a2hln7_29"><p>Description</p></th></tr></thead><tbody><tr id="-a2hln7_23"><td id="-a2hln7_30"><p>workspaceId</p></td><td id="-a2hln7_31"><p>query</p></td><td id="-a2hln7_32"><p>no</p></td><td id="-a2hln7_33"><p>string</p></td><td id="-a2hln7_34"><p>Bird Workspace identifier (optional if configured)</p></td></tr><tr id="-a2hln7_24"><td id="-a2hln7_35"><p>id</p></td><td id="-a2hln7_36"><p>path</p></td><td id="-a2hln7_37"><p>yes</p></td><td id="-a2hln7_38"><p>string</p></td><td id="-a2hln7_39"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-a2hln7_40"><thead><tr class="ijRowHead" id="-a2hln7_43"><th id="-a2hln7_45"><p>Status</p></th><th id="-a2hln7_46"><p>Description</p></th><th id="-a2hln7_47"><p>Content Types</p></th></tr></thead><tbody><tr id="-a2hln7_44"><td id="-a2hln7_48"><p>200</p></td><td id="-a2hln7_49"><p>Number deletion/release accepted</p></td><td id="-a2hln7_50"><p>application/json</p></td></tr></tbody></table></div><p id="-a2hln7_41">Schema for response <code class="code" id="-a2hln7_51">200</code> (<code class="code" id="-a2hln7_52">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdlistnumbers.html" class="navigation-links__prev">List your numbers</a><a href="birdgetnumber.html" class="navigation-links__next">Get a number by ID</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:16.203832432"><title>Complete/end a flash call by ID | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Complete/end a flash call by ID | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdendflashcall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Complete/end a flash call by ID | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdendflashcall.html#webpage",
|
||||
"url": "writerside-documentation/birdendflashcall.html",
|
||||
"name": "Complete/end a flash call by ID | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdEndFlashCall" data-main-title="Complete/end a flash call by ID" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdEndFlashCall" id="birdEndFlashCall.topic">Complete/end a flash call by ID</h1><p id="h3tr70_2">This endpoint documentation is generated directly from <code class="code" id="h3tr70_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/flash-calls/{id}</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="h3tr70_11">Operation ID: <code class="code" id="h3tr70_13">birdEndFlashCall</code></p><p id="h3tr70_12">Posts a completion/update payload to the flash call resource to finalize verification.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="h3tr70_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="h3tr70_15"><thead><tr class="ijRowHead" id="h3tr70_16"><th id="h3tr70_18"><p>Scheme</p></th><th id="h3tr70_19"><p>Scopes</p></th></tr></thead><tbody><tr id="h3tr70_17"><td id="h3tr70_20"><p>BearerAuth</p></td><td id="h3tr70_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="h3tr70_22"><thead><tr class="ijRowHead" id="h3tr70_23"><th id="h3tr70_27"><p>Name</p></th><th id="h3tr70_28"><p>In</p></th><th id="h3tr70_29"><p>Required</p></th><th id="h3tr70_30"><p>Type</p></th><th id="h3tr70_31"><p>Description</p></th></tr></thead><tbody><tr id="h3tr70_24"><td id="h3tr70_32"><p>workspaceId</p></td><td id="h3tr70_33"><p>query</p></td><td id="h3tr70_34"><p>no</p></td><td id="h3tr70_35"><p>string</p></td><td id="h3tr70_36"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="h3tr70_25"><td id="h3tr70_37"><p>channelId</p></td><td id="h3tr70_38"><p>query</p></td><td id="h3tr70_39"><p>no</p></td><td id="h3tr70_40"><p>string</p></td><td id="h3tr70_41"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="h3tr70_26"><td id="h3tr70_42"><p>id</p></td><td id="h3tr70_43"><p>path</p></td><td id="h3tr70_44"><p>yes</p></td><td id="h3tr70_45"><p>string</p></td><td id="h3tr70_46"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="h3tr70_47">Required: no.</p><p id="h3tr70_48">Content type: <code class="code" id="h3tr70_50">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="h3tr70_51"><thead><tr class="ijRowHead" id="h3tr70_54"><th id="h3tr70_56"><p>Status</p></th><th id="h3tr70_57"><p>Description</p></th><th id="h3tr70_58"><p>Content Types</p></th></tr></thead><tbody><tr id="h3tr70_55"><td id="h3tr70_59"><p>200</p></td><td id="h3tr70_60"><p>Flash call completed</p></td><td id="h3tr70_61"><p>application/json</p></td></tr></tbody></table></div><p id="h3tr70_52">Schema for response <code class="code" id="h3tr70_62">200</code> (<code class="code" id="h3tr70_63">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdgetflashcall.html" class="navigation-links__prev">Get a flash call by ID</a><a href="config-module-gatewayapi.html" class="navigation-links__next">GatewayAPI</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:23.260820422"><title>Complete/end a flash call using from/to numbers | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Complete/end a flash call using from/to numbers | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdendflashcallbynumbers.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Complete/end a flash call using from/to numbers | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdendflashcallbynumbers.html#webpage",
|
||||
"url": "writerside-documentation/birdendflashcallbynumbers.html",
|
||||
"name": "Complete/end a flash call using from/to numbers | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdEndFlashCallByNumbers" data-main-title="Complete/end a flash call using from/to numbers" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdEndFlashCallByNumbers" id="birdEndFlashCallByNumbers.topic">Complete/end a flash call using from/to numbers</h1><p id="kb1uvd_2">This endpoint documentation is generated directly from <code class="code" id="kb1uvd_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/flash-calls/end</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="kb1uvd_11">Operation ID: <code class="code" id="kb1uvd_13">birdEndFlashCallByNumbers</code></p><p id="kb1uvd_12">Ends an ongoing flash call by specifying the originating and destination numbers.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="kb1uvd_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="kb1uvd_15"><thead><tr class="ijRowHead" id="kb1uvd_16"><th id="kb1uvd_18"><p>Scheme</p></th><th id="kb1uvd_19"><p>Scopes</p></th></tr></thead><tbody><tr id="kb1uvd_17"><td id="kb1uvd_20"><p>BearerAuth</p></td><td id="kb1uvd_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="kb1uvd_22"><thead><tr class="ijRowHead" id="kb1uvd_23"><th id="kb1uvd_26"><p>Name</p></th><th id="kb1uvd_27"><p>In</p></th><th id="kb1uvd_28"><p>Required</p></th><th id="kb1uvd_29"><p>Type</p></th><th id="kb1uvd_30"><p>Description</p></th></tr></thead><tbody><tr id="kb1uvd_24"><td id="kb1uvd_31"><p>workspaceId</p></td><td id="kb1uvd_32"><p>query</p></td><td id="kb1uvd_33"><p>no</p></td><td id="kb1uvd_34"><p>string</p></td><td id="kb1uvd_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="kb1uvd_25"><td id="kb1uvd_36"><p>channelId</p></td><td id="kb1uvd_37"><p>query</p></td><td id="kb1uvd_38"><p>no</p></td><td id="kb1uvd_39"><p>string</p></td><td id="kb1uvd_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="kb1uvd_41">Required: yes.</p><p id="kb1uvd_42">Content type: <code class="code" id="kb1uvd_44">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"from": {
|
||||
"description": "E.164 formatted caller number",
|
||||
"example": "+4599988877",
|
||||
"type": "string"
|
||||
},
|
||||
"to": {
|
||||
"description": "E.164 formatted callee number",
|
||||
"example": "+4511122233",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="kb1uvd_45"><thead><tr class="ijRowHead" id="kb1uvd_48"><th id="kb1uvd_50"><p>Status</p></th><th id="kb1uvd_51"><p>Description</p></th><th id="kb1uvd_52"><p>Content Types</p></th></tr></thead><tbody><tr id="kb1uvd_49"><td id="kb1uvd_53"><p>200</p></td><td id="kb1uvd_54"><p>Flash call completed (by numbers)</p></td><td id="kb1uvd_55"><p>application/json</p></td></tr></tbody></table></div><p id="kb1uvd_46">Schema for response <code class="code" id="kb1uvd_56">200</code> (<code class="code" id="kb1uvd_57">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdcreateflashcall.html" class="navigation-links__prev">Create/place a flash call via Bird</a><a href="birdgetflashcall.html" class="navigation-links__next">Get a flash call by ID</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:52.529316983"><title>Get a flash call by ID | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Get a flash call by ID | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdgetflashcall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Get a flash call by ID | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdgetflashcall.html#webpage",
|
||||
"url": "writerside-documentation/birdgetflashcall.html",
|
||||
"name": "Get a flash call by ID | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdGetFlashCall" data-main-title="Get a flash call by ID" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdGetFlashCall" id="birdGetFlashCall.topic">Get a flash call by ID</h1><p id="z2r9635_2">This endpoint documentation is generated directly from <code class="code" id="z2r9635_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /bird/voice/flash-calls/{id}</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z2r9635_10">Operation ID: <code class="code" id="z2r9635_12">birdGetFlashCall</code></p><p id="z2r9635_11">Get a flash call by ID</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z2r9635_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z2r9635_14"><thead><tr class="ijRowHead" id="z2r9635_15"><th id="z2r9635_17"><p>Scheme</p></th><th id="z2r9635_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z2r9635_16"><td id="z2r9635_19"><p>BearerAuth</p></td><td id="z2r9635_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="z2r9635_21"><thead><tr class="ijRowHead" id="z2r9635_22"><th id="z2r9635_26"><p>Name</p></th><th id="z2r9635_27"><p>In</p></th><th id="z2r9635_28"><p>Required</p></th><th id="z2r9635_29"><p>Type</p></th><th id="z2r9635_30"><p>Description</p></th></tr></thead><tbody><tr id="z2r9635_23"><td id="z2r9635_31"><p>workspaceId</p></td><td id="z2r9635_32"><p>query</p></td><td id="z2r9635_33"><p>no</p></td><td id="z2r9635_34"><p>string</p></td><td id="z2r9635_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="z2r9635_24"><td id="z2r9635_36"><p>channelId</p></td><td id="z2r9635_37"><p>query</p></td><td id="z2r9635_38"><p>no</p></td><td id="z2r9635_39"><p>string</p></td><td id="z2r9635_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="z2r9635_25"><td id="z2r9635_41"><p>id</p></td><td id="z2r9635_42"><p>path</p></td><td id="z2r9635_43"><p>yes</p></td><td id="z2r9635_44"><p>string</p></td><td id="z2r9635_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z2r9635_46"><thead><tr class="ijRowHead" id="z2r9635_49"><th id="z2r9635_51"><p>Status</p></th><th id="z2r9635_52"><p>Description</p></th><th id="z2r9635_53"><p>Content Types</p></th></tr></thead><tbody><tr id="z2r9635_50"><td id="z2r9635_54"><p>200</p></td><td id="z2r9635_55"><p>Flash call details</p></td><td id="z2r9635_56"><p>application/json</p></td></tr></tbody></table></div><p id="z2r9635_47">Schema for response <code class="code" id="z2r9635_57">200</code> (<code class="code" id="z2r9635_58">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdendflashcallbynumbers.html" class="navigation-links__prev">Complete/end a flash call using from/to numbers</a><a href="birdendflashcall.html" class="navigation-links__next">Complete/end a flash call by ID</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:46.223981425"><title>Get a number by ID | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Get a number by ID | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdgetnumber.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Get a number by ID | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdgetnumber.html#webpage",
|
||||
"url": "writerside-documentation/birdgetnumber.html",
|
||||
"name": "Get a number by ID | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdGetNumber" data-main-title="Get a number by ID" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdGetNumber" id="birdGetNumber.topic">Get a number by ID</h1><p id="-xcdihk_2">This endpoint documentation is generated directly from <code class="code" id="-xcdihk_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /bird/numbers/{id}</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-xcdihk_10">Operation ID: <code class="code" id="-xcdihk_12">birdGetNumber</code></p><p id="-xcdihk_11">Get a number by ID</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-xcdihk_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-xcdihk_14"><thead><tr class="ijRowHead" id="-xcdihk_15"><th id="-xcdihk_17"><p>Scheme</p></th><th id="-xcdihk_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-xcdihk_16"><td id="-xcdihk_19"><p>BearerAuth</p></td><td id="-xcdihk_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-xcdihk_21"><thead><tr class="ijRowHead" id="-xcdihk_22"><th id="-xcdihk_25"><p>Name</p></th><th id="-xcdihk_26"><p>In</p></th><th id="-xcdihk_27"><p>Required</p></th><th id="-xcdihk_28"><p>Type</p></th><th id="-xcdihk_29"><p>Description</p></th></tr></thead><tbody><tr id="-xcdihk_23"><td id="-xcdihk_30"><p>workspaceId</p></td><td id="-xcdihk_31"><p>query</p></td><td id="-xcdihk_32"><p>no</p></td><td id="-xcdihk_33"><p>string</p></td><td id="-xcdihk_34"><p>Bird Workspace identifier (optional if configured)</p></td></tr><tr id="-xcdihk_24"><td id="-xcdihk_35"><p>id</p></td><td id="-xcdihk_36"><p>path</p></td><td id="-xcdihk_37"><p>yes</p></td><td id="-xcdihk_38"><p>string</p></td><td id="-xcdihk_39"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-xcdihk_40"><thead><tr class="ijRowHead" id="-xcdihk_43"><th id="-xcdihk_45"><p>Status</p></th><th id="-xcdihk_46"><p>Description</p></th><th id="-xcdihk_47"><p>Content Types</p></th></tr></thead><tbody><tr id="-xcdihk_44"><td id="-xcdihk_48"><p>200</p></td><td id="-xcdihk_49"><p>Number details</p></td><td id="-xcdihk_50"><p>application/json</p></td></tr></tbody></table></div><p id="-xcdihk_41">Schema for response <code class="code" id="-xcdihk_51">200</code> (<code class="code" id="-xcdihk_52">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdNumberSingleResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birddeletenumber.html" class="navigation-links__prev">Delete/release a number by ID</a><a href="birdlistvoicecalls.html" class="navigation-links__next">List voice calls</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:31.03654499"><title>Get a voice call by ID | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Get a voice call by ID | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdgetvoicecall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Get a voice call by ID | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdgetvoicecall.html#webpage",
|
||||
"url": "writerside-documentation/birdgetvoicecall.html",
|
||||
"name": "Get a voice call by ID | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdGetVoiceCall" data-main-title="Get a voice call by ID" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdGetVoiceCall" id="birdGetVoiceCall.topic">Get a voice call by ID</h1><p id="-xf17hp_2">This endpoint documentation is generated directly from <code class="code" id="-xf17hp_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /bird/voice/calls/{id}</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-xf17hp_10">Operation ID: <code class="code" id="-xf17hp_12">birdGetVoiceCall</code></p><p id="-xf17hp_11">Get a voice call by ID</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-xf17hp_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-xf17hp_14"><thead><tr class="ijRowHead" id="-xf17hp_15"><th id="-xf17hp_17"><p>Scheme</p></th><th id="-xf17hp_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-xf17hp_16"><td id="-xf17hp_19"><p>BearerAuth</p></td><td id="-xf17hp_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-xf17hp_21"><thead><tr class="ijRowHead" id="-xf17hp_22"><th id="-xf17hp_26"><p>Name</p></th><th id="-xf17hp_27"><p>In</p></th><th id="-xf17hp_28"><p>Required</p></th><th id="-xf17hp_29"><p>Type</p></th><th id="-xf17hp_30"><p>Description</p></th></tr></thead><tbody><tr id="-xf17hp_23"><td id="-xf17hp_31"><p>workspaceId</p></td><td id="-xf17hp_32"><p>query</p></td><td id="-xf17hp_33"><p>no</p></td><td id="-xf17hp_34"><p>string</p></td><td id="-xf17hp_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-xf17hp_24"><td id="-xf17hp_36"><p>channelId</p></td><td id="-xf17hp_37"><p>query</p></td><td id="-xf17hp_38"><p>no</p></td><td id="-xf17hp_39"><p>string</p></td><td id="-xf17hp_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-xf17hp_25"><td id="-xf17hp_41"><p>id</p></td><td id="-xf17hp_42"><p>path</p></td><td id="-xf17hp_43"><p>yes</p></td><td id="-xf17hp_44"><p>string</p></td><td id="-xf17hp_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-xf17hp_46"><thead><tr class="ijRowHead" id="-xf17hp_49"><th id="-xf17hp_51"><p>Status</p></th><th id="-xf17hp_52"><p>Description</p></th><th id="-xf17hp_53"><p>Content Types</p></th></tr></thead><tbody><tr id="-xf17hp_50"><td id="-xf17hp_54"><p>200</p></td><td id="-xf17hp_55"><p>Call details</p></td><td id="-xf17hp_56"><p>application/json</p></td></tr></tbody></table></div><p id="-xf17hp_47">Schema for response <code class="code" id="-xf17hp_57">200</code> (<code class="code" id="-xf17hp_58">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdtestoutboundvoicecall.html" class="navigation-links__prev">Place a test outbound call and hang up when accepted</a><a href="birdhangupvoicecall.html" class="navigation-links__next">Hang up a voice call by ID</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:00.58965386"><title>Hang up a voice call by ID | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Hang up a voice call by ID | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdhangupvoicecall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Hang up a voice call by ID | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdhangupvoicecall.html#webpage",
|
||||
"url": "writerside-documentation/birdhangupvoicecall.html",
|
||||
"name": "Hang up a voice call by ID | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdHangupVoiceCall" data-main-title="Hang up a voice call by ID" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdHangupVoiceCall" id="birdHangupVoiceCall.topic">Hang up a voice call by ID</h1><p id="-b4pvg4_2">This endpoint documentation is generated directly from <code class="code" id="-b4pvg4_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/calls/{id}/hangup</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-b4pvg4_10">Operation ID: <code class="code" id="-b4pvg4_12">birdHangupVoiceCall</code></p><p id="-b4pvg4_11">Hang up a voice call by ID</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-b4pvg4_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-b4pvg4_14"><thead><tr class="ijRowHead" id="-b4pvg4_15"><th id="-b4pvg4_17"><p>Scheme</p></th><th id="-b4pvg4_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-b4pvg4_16"><td id="-b4pvg4_19"><p>BearerAuth</p></td><td id="-b4pvg4_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-b4pvg4_21"><thead><tr class="ijRowHead" id="-b4pvg4_22"><th id="-b4pvg4_26"><p>Name</p></th><th id="-b4pvg4_27"><p>In</p></th><th id="-b4pvg4_28"><p>Required</p></th><th id="-b4pvg4_29"><p>Type</p></th><th id="-b4pvg4_30"><p>Description</p></th></tr></thead><tbody><tr id="-b4pvg4_23"><td id="-b4pvg4_31"><p>workspaceId</p></td><td id="-b4pvg4_32"><p>query</p></td><td id="-b4pvg4_33"><p>no</p></td><td id="-b4pvg4_34"><p>string</p></td><td id="-b4pvg4_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-b4pvg4_24"><td id="-b4pvg4_36"><p>channelId</p></td><td id="-b4pvg4_37"><p>query</p></td><td id="-b4pvg4_38"><p>no</p></td><td id="-b4pvg4_39"><p>string</p></td><td id="-b4pvg4_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-b4pvg4_25"><td id="-b4pvg4_41"><p>id</p></td><td id="-b4pvg4_42"><p>path</p></td><td id="-b4pvg4_43"><p>yes</p></td><td id="-b4pvg4_44"><p>string</p></td><td id="-b4pvg4_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-b4pvg4_46"><thead><tr class="ijRowHead" id="-b4pvg4_49"><th id="-b4pvg4_51"><p>Status</p></th><th id="-b4pvg4_52"><p>Description</p></th><th id="-b4pvg4_53"><p>Content Types</p></th></tr></thead><tbody><tr id="-b4pvg4_50"><td id="-b4pvg4_54"><p>200</p></td><td id="-b4pvg4_55"><p>Hangup requested</p></td><td id="-b4pvg4_56"><p>application/json</p></td></tr></tbody></table></div><p id="-b4pvg4_47">Schema for response <code class="code" id="-b4pvg4_57">200</code> (<code class="code" id="-b4pvg4_58">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdgetvoicecall.html" class="navigation-links__prev">Get a voice call by ID</a><a href="birdsayonvoicecall.html" class="navigation-links__next">Say a message on an active voice call and hang up afterwards</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:49.737344517"><title>List flash calls | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="List flash calls | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdlistflashcalls.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="List flash calls | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdlistflashcalls.html#webpage",
|
||||
"url": "writerside-documentation/birdlistflashcalls.html",
|
||||
"name": "List flash calls | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdListFlashCalls" data-main-title="List flash calls" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdListFlashCalls" id="birdListFlashCalls.topic">List flash calls</h1><p id="dzggm4_2">This endpoint documentation is generated directly from <code class="code" id="dzggm4_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /bird/voice/flash-calls</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="dzggm4_10">Operation ID: <code class="code" id="dzggm4_12">birdListFlashCalls</code></p><p id="dzggm4_11">List flash calls</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="dzggm4_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="dzggm4_14"><thead><tr class="ijRowHead" id="dzggm4_15"><th id="dzggm4_17"><p>Scheme</p></th><th id="dzggm4_18"><p>Scopes</p></th></tr></thead><tbody><tr id="dzggm4_16"><td id="dzggm4_19"><p>BearerAuth</p></td><td id="dzggm4_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="dzggm4_21"><thead><tr class="ijRowHead" id="dzggm4_22"><th id="dzggm4_26"><p>Name</p></th><th id="dzggm4_27"><p>In</p></th><th id="dzggm4_28"><p>Required</p></th><th id="dzggm4_29"><p>Type</p></th><th id="dzggm4_30"><p>Description</p></th></tr></thead><tbody><tr id="dzggm4_23"><td id="dzggm4_31"><p>workspaceId</p></td><td id="dzggm4_32"><p>query</p></td><td id="dzggm4_33"><p>no</p></td><td id="dzggm4_34"><p>string</p></td><td id="dzggm4_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="dzggm4_24"><td id="dzggm4_36"><p>channelId</p></td><td id="dzggm4_37"><p>query</p></td><td id="dzggm4_38"><p>no</p></td><td id="dzggm4_39"><p>string</p></td><td id="dzggm4_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="dzggm4_25"><td id="dzggm4_41"><p>page</p></td><td id="dzggm4_42"><p>query</p></td><td id="dzggm4_43"><p>no</p></td><td id="dzggm4_44"><p>integer</p></td><td id="dzggm4_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="dzggm4_46"><thead><tr class="ijRowHead" id="dzggm4_49"><th id="dzggm4_51"><p>Status</p></th><th id="dzggm4_52"><p>Description</p></th><th id="dzggm4_53"><p>Content Types</p></th></tr></thead><tbody><tr id="dzggm4_50"><td id="dzggm4_54"><p>200</p></td><td id="dzggm4_55"><p>A list of flash calls</p></td><td id="dzggm4_56"><p>application/json</p></td></tr></tbody></table></div><p id="dzggm4_47">Schema for response <code class="code" id="dzggm4_57">200</code> (<code class="code" id="dzggm4_58">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdsayonvoicecall.html" class="navigation-links__prev">Say a message on an active voice call and hang up afterwards</a><a href="birdcreateflashcall.html" class="navigation-links__next">Create/place a flash call via Bird</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:18.114543899"><title>List your numbers | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="List your numbers | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdlistnumbers.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="List your numbers | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdlistnumbers.html#webpage",
|
||||
"url": "writerside-documentation/birdlistnumbers.html",
|
||||
"name": "List your numbers | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdListNumbers" data-main-title="List your numbers" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdListNumbers" id="birdListNumbers.topic">List your numbers</h1><p id="z1kcp9x_2">This endpoint documentation is generated directly from <code class="code" id="z1kcp9x_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /bird/numbers</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z1kcp9x_10">Operation ID: <code class="code" id="z1kcp9x_12">birdListNumbers</code></p><p id="z1kcp9x_11">List your numbers</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z1kcp9x_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z1kcp9x_14"><thead><tr class="ijRowHead" id="z1kcp9x_15"><th id="z1kcp9x_17"><p>Scheme</p></th><th id="z1kcp9x_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z1kcp9x_16"><td id="z1kcp9x_19"><p>BearerAuth</p></td><td id="z1kcp9x_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="z1kcp9x_21"><thead><tr class="ijRowHead" id="z1kcp9x_22"><th id="z1kcp9x_26"><p>Name</p></th><th id="z1kcp9x_27"><p>In</p></th><th id="z1kcp9x_28"><p>Required</p></th><th id="z1kcp9x_29"><p>Type</p></th><th id="z1kcp9x_30"><p>Description</p></th></tr></thead><tbody><tr id="z1kcp9x_23"><td id="z1kcp9x_31"><p>workspaceId</p></td><td id="z1kcp9x_32"><p>query</p></td><td id="z1kcp9x_33"><p>no</p></td><td id="z1kcp9x_34"><p>string</p></td><td id="z1kcp9x_35"><p>Bird Workspace identifier (optional if configured)</p></td></tr><tr id="z1kcp9x_24"><td id="z1kcp9x_36"><p>page</p></td><td id="z1kcp9x_37"><p>query</p></td><td id="z1kcp9x_38"><p>no</p></td><td id="z1kcp9x_39"><p>integer</p></td><td id="z1kcp9x_40"></td></tr><tr id="z1kcp9x_25"><td id="z1kcp9x_41"><p>limit</p></td><td id="z1kcp9x_42"><p>query</p></td><td id="z1kcp9x_43"><p>no</p></td><td id="z1kcp9x_44"><p>integer</p></td><td id="z1kcp9x_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z1kcp9x_46"><thead><tr class="ijRowHead" id="z1kcp9x_49"><th id="z1kcp9x_51"><p>Status</p></th><th id="z1kcp9x_52"><p>Description</p></th><th id="z1kcp9x_53"><p>Content Types</p></th></tr></thead><tbody><tr id="z1kcp9x_50"><td id="z1kcp9x_54"><p>200</p></td><td id="z1kcp9x_55"><p>A list of numbers</p></td><td id="z1kcp9x_56"><p>application/json</p></td></tr></tbody></table></div><p id="z1kcp9x_47">Schema for response <code class="code" id="z1kcp9x_57">200</code> (<code class="code" id="z1kcp9x_58">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdNumberListResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="tag-bird-page-1.html" class="navigation-links__prev">Bird - Page 1 of 1</a><a href="birddeletenumber.html" class="navigation-links__next">Delete/release a number by ID</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:00.622041611"><title>List voice calls | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="List voice calls | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdlistvoicecalls.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="List voice calls | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdlistvoicecalls.html#webpage",
|
||||
"url": "writerside-documentation/birdlistvoicecalls.html",
|
||||
"name": "List voice calls | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdListVoiceCalls" data-main-title="List voice calls" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdListVoiceCalls" id="birdListVoiceCalls.topic">List voice calls</h1><p id="t2bna2_2">This endpoint documentation is generated directly from <code class="code" id="t2bna2_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /bird/voice/calls</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="t2bna2_10">Operation ID: <code class="code" id="t2bna2_12">birdListVoiceCalls</code></p><p id="t2bna2_11">List voice calls</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="t2bna2_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="t2bna2_14"><thead><tr class="ijRowHead" id="t2bna2_15"><th id="t2bna2_17"><p>Scheme</p></th><th id="t2bna2_18"><p>Scopes</p></th></tr></thead><tbody><tr id="t2bna2_16"><td id="t2bna2_19"><p>BearerAuth</p></td><td id="t2bna2_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="t2bna2_21"><thead><tr class="ijRowHead" id="t2bna2_22"><th id="t2bna2_26"><p>Name</p></th><th id="t2bna2_27"><p>In</p></th><th id="t2bna2_28"><p>Required</p></th><th id="t2bna2_29"><p>Type</p></th><th id="t2bna2_30"><p>Description</p></th></tr></thead><tbody><tr id="t2bna2_23"><td id="t2bna2_31"><p>workspaceId</p></td><td id="t2bna2_32"><p>query</p></td><td id="t2bna2_33"><p>no</p></td><td id="t2bna2_34"><p>string</p></td><td id="t2bna2_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="t2bna2_24"><td id="t2bna2_36"><p>channelId</p></td><td id="t2bna2_37"><p>query</p></td><td id="t2bna2_38"><p>no</p></td><td id="t2bna2_39"><p>string</p></td><td id="t2bna2_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="t2bna2_25"><td id="t2bna2_41"><p>page</p></td><td id="t2bna2_42"><p>query</p></td><td id="t2bna2_43"><p>no</p></td><td id="t2bna2_44"><p>integer</p></td><td id="t2bna2_45"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="t2bna2_46"><thead><tr class="ijRowHead" id="t2bna2_49"><th id="t2bna2_51"><p>Status</p></th><th id="t2bna2_52"><p>Description</p></th><th id="t2bna2_53"><p>Content Types</p></th></tr></thead><tbody><tr id="t2bna2_50"><td id="t2bna2_54"><p>200</p></td><td id="t2bna2_55"><p>A list of calls</p></td><td id="t2bna2_56"><p>application/json</p></td></tr></tbody></table></div><p id="t2bna2_47">Schema for response <code class="code" id="t2bna2_57">200</code> (<code class="code" id="t2bna2_58">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdVoiceCallListResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdgetnumber.html" class="navigation-links__prev">Get a number by ID</a><a href="birdcreatevoicecall.html" class="navigation-links__next">Create/place a voice call via Bird</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:30.379602855"><title>Say a message on an active voice call and hang up afterwards | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Say a message on an active voice call and hang up afterwards | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdsayonvoicecall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Say a message on an active voice call and hang up afterwards | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdsayonvoicecall.html#webpage",
|
||||
"url": "writerside-documentation/birdsayonvoicecall.html",
|
||||
"name": "Say a message on an active voice call and hang up afterwards | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdSayOnVoiceCall" data-main-title="Say a message on an active voice call and hang up afterwards" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdSayOnVoiceCall" id="birdSayOnVoiceCall.topic">Say a message on an active voice call and hang up afterwards</h1><p id="-evlgu9_2">This endpoint documentation is generated directly from <code class="code" id="-evlgu9_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/calls/{id}/say</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-evlgu9_11">Operation ID: <code class="code" id="-evlgu9_13">birdSayOnVoiceCall</code></p><p id="-evlgu9_12">Say a message on an active voice call and hang up afterwards</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-evlgu9_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-evlgu9_15"><thead><tr class="ijRowHead" id="-evlgu9_16"><th id="-evlgu9_18"><p>Scheme</p></th><th id="-evlgu9_19"><p>Scopes</p></th></tr></thead><tbody><tr id="-evlgu9_17"><td id="-evlgu9_20"><p>BearerAuth</p></td><td id="-evlgu9_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-evlgu9_22"><thead><tr class="ijRowHead" id="-evlgu9_23"><th id="-evlgu9_27"><p>Name</p></th><th id="-evlgu9_28"><p>In</p></th><th id="-evlgu9_29"><p>Required</p></th><th id="-evlgu9_30"><p>Type</p></th><th id="-evlgu9_31"><p>Description</p></th></tr></thead><tbody><tr id="-evlgu9_24"><td id="-evlgu9_32"><p>workspaceId</p></td><td id="-evlgu9_33"><p>query</p></td><td id="-evlgu9_34"><p>no</p></td><td id="-evlgu9_35"><p>string</p></td><td id="-evlgu9_36"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-evlgu9_25"><td id="-evlgu9_37"><p>channelId</p></td><td id="-evlgu9_38"><p>query</p></td><td id="-evlgu9_39"><p>no</p></td><td id="-evlgu9_40"><p>string</p></td><td id="-evlgu9_41"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-evlgu9_26"><td id="-evlgu9_42"><p>id</p></td><td id="-evlgu9_43"><p>path</p></td><td id="-evlgu9_44"><p>yes</p></td><td id="-evlgu9_45"><p>string</p></td><td id="-evlgu9_46"><p>Call identifier</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-evlgu9_47">Required: yes.</p><p id="-evlgu9_48">Content type: <code class="code" id="-evlgu9_50">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"hangup": {
|
||||
"description": "Whether to hang up the call after the message finishes playing (defaults to true)",
|
||||
"example": true,
|
||||
"type": "boolean"
|
||||
},
|
||||
"locale": {
|
||||
"description": "The locale to use for the TTS voice (e.g. en-US)",
|
||||
"example": "en-US",
|
||||
"type": "string"
|
||||
},
|
||||
"loop": {
|
||||
"description": "Number of times to loop the message",
|
||||
"example": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"text": {
|
||||
"description": "The text message to play via TTS",
|
||||
"example": "The gate will open shortly.",
|
||||
"type": "string"
|
||||
},
|
||||
"timeout": {
|
||||
"description": "Timeout in seconds for the TTS action",
|
||||
"example": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"voice": {
|
||||
"description": "The voice identifier to use",
|
||||
"example": "male",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"text"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-evlgu9_51"><thead><tr class="ijRowHead" id="-evlgu9_54"><th id="-evlgu9_56"><p>Status</p></th><th id="-evlgu9_57"><p>Description</p></th><th id="-evlgu9_58"><p>Content Types</p></th></tr></thead><tbody><tr id="-evlgu9_55"><td id="-evlgu9_59"><p>200</p></td><td id="-evlgu9_60"><p>TTS action requested</p></td><td id="-evlgu9_61"><p>application/json</p></td></tr></tbody></table></div><p id="-evlgu9_52">Schema for response <code class="code" id="-evlgu9_62">200</code> (<code class="code" id="-evlgu9_63">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdVoiceCallSingleResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdhangupvoicecall.html" class="navigation-links__prev">Hang up a voice call by ID</a><a href="birdlistflashcalls.html" class="navigation-links__next">List flash calls</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,48 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:14.677040207"><title>Place a test outbound call and hang up when accepted | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Place a test outbound call and hang up when accepted | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/birdtestoutboundvoicecall.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Place a test outbound call and hang up when accepted | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/birdtestoutboundvoicecall.html#webpage",
|
||||
"url": "writerside-documentation/birdtestoutboundvoicecall.html",
|
||||
"name": "Place a test outbound call and hang up when accepted | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="birdTestOutboundVoiceCall" data-main-title="Place a test outbound call and hang up when accepted" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bird.topic|Bird///Tag_Bird_Page_1.topic|Bird - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="birdTestOutboundVoiceCall" id="birdTestOutboundVoiceCall.topic">Place a test outbound call and hang up when accepted</h1><p id="-3ucdl_2">This endpoint documentation is generated directly from <code class="code" id="-3ucdl_9">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /bird/voice/calls/test-outbound</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-3ucdl_11">Operation ID: <code class="code" id="-3ucdl_13">birdTestOutboundVoiceCall</code></p><p id="-3ucdl_12">Calls +45 42 33 11 28 and hangs up when the call reaches accepted/ongoing state.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-3ucdl_14">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-3ucdl_15"><thead><tr class="ijRowHead" id="-3ucdl_16"><th id="-3ucdl_18"><p>Scheme</p></th><th id="-3ucdl_19"><p>Scopes</p></th></tr></thead><tbody><tr id="-3ucdl_17"><td id="-3ucdl_20"><p>BearerAuth</p></td><td id="-3ucdl_21"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-3ucdl_22"><thead><tr class="ijRowHead" id="-3ucdl_23"><th id="-3ucdl_26"><p>Name</p></th><th id="-3ucdl_27"><p>In</p></th><th id="-3ucdl_28"><p>Required</p></th><th id="-3ucdl_29"><p>Type</p></th><th id="-3ucdl_30"><p>Description</p></th></tr></thead><tbody><tr id="-3ucdl_24"><td id="-3ucdl_31"><p>workspaceId</p></td><td id="-3ucdl_32"><p>query</p></td><td id="-3ucdl_33"><p>no</p></td><td id="-3ucdl_34"><p>string</p></td><td id="-3ucdl_35"><p>Bird Workspace identifier (falls back to module configuration if omitted)</p></td></tr><tr id="-3ucdl_25"><td id="-3ucdl_36"><p>channelId</p></td><td id="-3ucdl_37"><p>query</p></td><td id="-3ucdl_38"><p>no</p></td><td id="-3ucdl_39"><p>string</p></td><td id="-3ucdl_40"><p>Bird Channel identifier (falls back to module configuration if omitted)</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-3ucdl_41">Required: no.</p><p id="-3ucdl_42">Content type: <code class="code" id="-3ucdl_44">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"properties": {
|
||||
"from": {
|
||||
"description": "Caller E.164 number to use for the test call",
|
||||
"example": "+4599988877",
|
||||
"type": "string"
|
||||
},
|
||||
"hangupCause": {
|
||||
"description": "Optional hangup cause passed through to Bird",
|
||||
"type": "string"
|
||||
},
|
||||
"maxPollSeconds": {
|
||||
"description": "Max time to wait before timing out",
|
||||
"example": 30,
|
||||
"minimum": 5,
|
||||
"type": "integer"
|
||||
},
|
||||
"pollIntervalSeconds": {
|
||||
"description": "Poll interval while waiting for accepted status",
|
||||
"example": 2,
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-3ucdl_45"><thead><tr class="ijRowHead" id="-3ucdl_48"><th id="-3ucdl_50"><p>Status</p></th><th id="-3ucdl_51"><p>Description</p></th><th id="-3ucdl_52"><p>Content Types</p></th></tr></thead><tbody><tr id="-3ucdl_49"><td id="-3ucdl_53"><p>200</p></td><td id="-3ucdl_54"><p>Test call created and either hung up or timed out</p></td><td id="-3ucdl_55"><p>application/json</p></td></tr></tbody></table></div><p id="-3ucdl_46">Schema for response <code class="code" id="-3ucdl_56">200</code> (<code class="code" id="-3ucdl_57">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/BirdTestOutboundCallResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdcreatevoicecall.html" class="navigation-links__prev">Create/place a voice call via Bird</a><a href="birdgetvoicecall.html" class="navigation-links__next">Get a voice call by ID</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:30.124973156"><title>Capture Stripe payment intent | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Capture Stripe payment intent | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/capturestripepaymentintent.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Capture Stripe payment intent | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/capturestripepaymentintent.html#webpage",
|
||||
"url": "writerside-documentation/capturestripepaymentintent.html",
|
||||
"name": "Capture Stripe payment intent | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="captureStripePaymentIntent" data-main-title="Capture Stripe payment intent" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Orders.topic|Orders///Tag_Orders_Page_1.topic|Orders - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="captureStripePaymentIntent" id="captureStripePaymentIntent.topic">Capture Stripe payment intent</h1><p id="-rzy0kx_2">This endpoint documentation is generated directly from <code class="code" id="-rzy0kx_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /orders/module/stripe/payment_intent/capture</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-rzy0kx_10">Operation ID: <code class="code" id="-rzy0kx_12">captureStripePaymentIntent</code></p><p id="-rzy0kx_11">Capture Stripe payment intent</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-rzy0kx_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-rzy0kx_14"><thead><tr class="ijRowHead" id="-rzy0kx_15"><th id="-rzy0kx_17"><p>Scheme</p></th><th id="-rzy0kx_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-rzy0kx_16"><td id="-rzy0kx_19"><p>BearerAuth</p></td><td id="-rzy0kx_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-rzy0kx_21">Required: yes.</p><p id="-rzy0kx_22">Content type: <code class="code" id="-rzy0kx_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-rzy0kx_25"><thead><tr class="ijRowHead" id="-rzy0kx_28"><th id="-rzy0kx_30"><p>Status</p></th><th id="-rzy0kx_31"><p>Description</p></th><th id="-rzy0kx_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-rzy0kx_29"><td id="-rzy0kx_33"><p>200</p></td><td id="-rzy0kx_34"><p>Success</p></td><td id="-rzy0kx_35"><p>application/json</p></td></tr></tbody></table></div><p id="-rzy0kx_26">Schema for response <code class="code" id="-rzy0kx_36">200</code> (<code class="code" id="-rzy0kx_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="createstripepaymentintent.html" class="navigation-links__prev">Create Stripe payment intent</a><a href="getuserorder.html" class="navigation-links__next">Get user's specific order</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,18 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:23.924328492"><title>Check if customer exists in e-conomic | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Check if customer exists in e-conomic | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/checkeconomiccustomerexists.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Check if customer exists in e-conomic | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/checkeconomiccustomerexists.html#webpage",
|
||||
"url": "writerside-documentation/checkeconomiccustomerexists.html",
|
||||
"name": "Check if customer exists in e-conomic | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="checkEconomicCustomerExists" data-main-title="Check if customer exists in e-conomic" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Modules.topic|Modules///modules_module_e_conomic.topic///modules_module_e_conomic_page_1.topic"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="checkEconomicCustomerExists" id="checkEconomicCustomerExists.topic">Check if customer exists in e-conomic</h1><p id="-q97pmv_2">This endpoint documentation is generated directly from <code class="code" id="-q97pmv_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /economic/doesCustomerExist</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-q97pmv_10">Operation ID: <code class="code" id="-q97pmv_12">checkEconomicCustomerExists</code></p><p id="-q97pmv_11">Check if customer exists in e-conomic</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-q97pmv_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-q97pmv_14"><thead><tr class="ijRowHead" id="-q97pmv_15"><th id="-q97pmv_17"><p>Scheme</p></th><th id="-q97pmv_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-q97pmv_16"><td id="-q97pmv_19"><p>BearerAuth</p></td><td id="-q97pmv_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-q97pmv_21"><thead><tr class="ijRowHead" id="-q97pmv_22"><th id="-q97pmv_24"><p>Name</p></th><th id="-q97pmv_25"><p>In</p></th><th id="-q97pmv_26"><p>Required</p></th><th id="-q97pmv_27"><p>Type</p></th><th id="-q97pmv_28"><p>Description</p></th></tr></thead><tbody><tr id="-q97pmv_23"><td id="-q97pmv_29"><p>cvr</p></td><td id="-q97pmv_30"><p>query</p></td><td id="-q97pmv_31"><p>yes</p></td><td id="-q97pmv_32"><p>string</p></td><td id="-q97pmv_33"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-q97pmv_34"><thead><tr class="ijRowHead" id="-q97pmv_37"><th id="-q97pmv_40"><p>Status</p></th><th id="-q97pmv_41"><p>Description</p></th><th id="-q97pmv_42"><p>Content Types</p></th></tr></thead><tbody><tr id="-q97pmv_38"><td id="-q97pmv_43"><p>200</p></td><td id="-q97pmv_44"><p>Customer check completed</p></td><td id="-q97pmv_45"><p>application/json</p></td></tr><tr id="-q97pmv_39"><td id="-q97pmv_46"><p>404</p></td><td id="-q97pmv_47"></td><td id="-q97pmv_48"></td></tr></tbody></table></div><p id="-q97pmv_35">Schema for response <code class="code" id="-q97pmv_49">200</code> (<code class="code" id="-q97pmv_50">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="searchcvr.html" class="navigation-links__prev">Search CVR</a><a href="createeconomiccustomer.html" class="navigation-links__next">Create e-conomic customer</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:13.488619106"><title>Clear system search caches | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Clear system search caches | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/clearsystemsearchcache.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Clear system search caches | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/clearsystemsearchcache.html#webpage",
|
||||
"url": "writerside-documentation/clearsystemsearchcache.html",
|
||||
"name": "Clear system search caches | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="clearSystemSearchCache" data-main-title="Clear system search caches" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Search.topic|Search///Tag_Search_Page_1.topic|Search - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="clearSystemSearchCache" id="clearSystemSearchCache.topic">Clear system search caches</h1><p id="zddv7i_2">This endpoint documentation is generated directly from <code class="code" id="zddv7i_7">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">DELETE /superuser/search/system/cache</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="zddv7i_9">Operation ID: <code class="code" id="zddv7i_11">clearSystemSearchCache</code></p><p id="zddv7i_10">Clears both query-result cache and intent-parser cache namespaces for system-wide search.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="zddv7i_12">Security requirements:</p><div class="table-wrapper"><table class="wide" id="zddv7i_13"><thead><tr class="ijRowHead" id="zddv7i_14"><th id="zddv7i_16"><p>Scheme</p></th><th id="zddv7i_17"><p>Scopes</p></th></tr></thead><tbody><tr id="zddv7i_15"><td id="zddv7i_18"><p>BearerAuth</p></td><td id="zddv7i_19"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="zddv7i_20"><thead><tr class="ijRowHead" id="zddv7i_23"><th id="zddv7i_27"><p>Status</p></th><th id="zddv7i_28"><p>Description</p></th><th id="zddv7i_29"><p>Content Types</p></th></tr></thead><tbody><tr id="zddv7i_24"><td id="zddv7i_30"><p>200</p></td><td id="zddv7i_31"><p>Cache cleared successfully</p></td><td id="zddv7i_32"><p>application/json</p></td></tr><tr id="zddv7i_25"><td id="zddv7i_33"><p>401</p></td><td id="zddv7i_34"></td><td id="zddv7i_35"></td></tr><tr id="zddv7i_26"><td id="zddv7i_36"><p>403</p></td><td id="zddv7i_37"></td><td id="zddv7i_38"></td></tr></tbody></table></div><p id="zddv7i_21">Schema for response <code class="code" id="zddv7i_39">200</code> (<code class="code" id="zddv7i_40">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/SystemSearchCacheClearResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="systemwidesearchpost.html" class="navigation-links__prev">System-wide search</a><a href="rebuildsystemsearchcache.html" class="navigation-links__next">Queue system search cache rebuild</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:27.438662166"><title>Clone role | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Clone role | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/clonerole.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Clone role | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/clonerole.html#webpage",
|
||||
"url": "writerside-documentation/clonerole.html",
|
||||
"name": "Clone role | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="cloneRole" data-main-title="Clone role" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Roles.topic|Roles///Tag_Roles_Page_1.topic|Roles - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="cloneRole" id="cloneRole.topic">Clone role</h1><p id="-w5ri97_2">This endpoint documentation is generated directly from <code class="code" id="-w5ri97_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /roles/clone</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-w5ri97_10">Operation ID: <code class="code" id="-w5ri97_12">cloneRole</code></p><p id="-w5ri97_11">Clone role</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-w5ri97_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-w5ri97_14"><thead><tr class="ijRowHead" id="-w5ri97_15"><th id="-w5ri97_17"><p>Scheme</p></th><th id="-w5ri97_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-w5ri97_16"><td id="-w5ri97_19"><p>BearerAuth</p></td><td id="-w5ri97_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-w5ri97_21">Required: yes.</p><p id="-w5ri97_22">Content type: <code class="code" id="-w5ri97_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"role_id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"role_id",
|
||||
"name"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-w5ri97_25"><thead><tr class="ijRowHead" id="-w5ri97_28"><th id="-w5ri97_30"><p>Status</p></th><th id="-w5ri97_31"><p>Description</p></th><th id="-w5ri97_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-w5ri97_29"><td id="-w5ri97_33"><p>200</p></td><td id="-w5ri97_34"><p>Success</p></td><td id="-w5ri97_35"><p>application/json</p></td></tr></tbody></table></div><p id="-w5ri97_26">Schema for response <code class="code" id="-w5ri97_36">200</code> (<code class="code" id="-w5ri97_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="editrole.html" class="navigation-links__prev">Edit role</a><a href="removerolepermission.html" class="navigation-links__next">Remove permission from role</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:43:46.657738149"><title>Close draft invoice | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Close draft invoice | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/closedraftinvoice.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Close draft invoice | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/closedraftinvoice.html#webpage",
|
||||
"url": "writerside-documentation/closedraftinvoice.html",
|
||||
"name": "Close draft invoice | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="closeDraftInvoice" data-main-title="Close draft invoice" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Invoices.topic|Invoices///Tag_Invoices_Page_1.topic|Invoices - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="closeDraftInvoice" id="closeDraftInvoice.topic">Close draft invoice</h1><p id="-ogm8ze_2">This endpoint documentation is generated directly from <code class="code" id="-ogm8ze_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /invoices/draft/close</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-ogm8ze_10">Operation ID: <code class="code" id="-ogm8ze_12">closeDraftInvoice</code></p><p id="-ogm8ze_11">Close a draft invoice</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-ogm8ze_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-ogm8ze_14"><thead><tr class="ijRowHead" id="-ogm8ze_15"><th id="-ogm8ze_17"><p>Scheme</p></th><th id="-ogm8ze_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-ogm8ze_16"><td id="-ogm8ze_19"><p>BearerAuth</p></td><td id="-ogm8ze_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-ogm8ze_21">Required: yes.</p><p id="-ogm8ze_22">Content type: <code class="code" id="-ogm8ze_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-ogm8ze_25"><thead><tr class="ijRowHead" id="-ogm8ze_28"><th id="-ogm8ze_30"><p>Status</p></th><th id="-ogm8ze_31"><p>Description</p></th><th id="-ogm8ze_32"><p>Content Types</p></th></tr></thead><tbody><tr id="-ogm8ze_29"><td id="-ogm8ze_33"><p>200</p></td><td id="-ogm8ze_34"><p>Draft invoice closed successfully</p></td><td id="-ogm8ze_35"><p>application/json</p></td></tr></tbody></table></div><p id="-ogm8ze_26">Schema for response <code class="code" id="-ogm8ze_36">200</code> (<code class="code" id="-ogm8ze_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listdraftinvoices.html" class="navigation-links__prev">List draft invoices</a><a href="getinvoicepdf.html" class="navigation-links__next">Get invoice PDF</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:35.418037854"><title>Compare collected invoice totals with E-conomic | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Compare collected invoice totals with E-conomic | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/comparecollectedinvoiceeconomic.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Compare collected invoice totals with E-conomic | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/comparecollectedinvoiceeconomic.html#webpage",
|
||||
"url": "writerside-documentation/comparecollectedinvoiceeconomic.html",
|
||||
"name": "Compare collected invoice totals with E-conomic | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="compareCollectedInvoiceEconomic" data-main-title="Compare collected invoice totals with E-conomic" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Invoices.topic|Invoices///Tag_Invoices_Page_1.topic|Invoices - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="compareCollectedInvoiceEconomic" id="compareCollectedInvoiceEconomic.topic">Compare collected invoice totals with E-conomic</h1><p id="z8n6lc_2">This endpoint documentation is generated directly from <code class="code" id="z8n6lc_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /collected-invoices/economic/compare</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z8n6lc_10">Operation ID: <code class="code" id="z8n6lc_12">compareCollectedInvoiceEconomic</code></p><p id="z8n6lc_11">Compares a collected invoice in the system with its corresponding invoice in E-conomic. Returns totals from both sources, their difference, and any warnings detected during comparison.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z8n6lc_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z8n6lc_14"><thead><tr class="ijRowHead" id="z8n6lc_15"><th id="z8n6lc_17"><p>Scheme</p></th><th id="z8n6lc_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z8n6lc_16"><td id="z8n6lc_19"><p>BearerAuth</p></td><td id="z8n6lc_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="z8n6lc_21"><thead><tr class="ijRowHead" id="z8n6lc_22"><th id="z8n6lc_24"><p>Name</p></th><th id="z8n6lc_25"><p>In</p></th><th id="z8n6lc_26"><p>Required</p></th><th id="z8n6lc_27"><p>Type</p></th><th id="z8n6lc_28"><p>Description</p></th></tr></thead><tbody><tr id="z8n6lc_23"><td id="z8n6lc_29"><p>collected_invoice_id</p></td><td id="z8n6lc_30"><p>query</p></td><td id="z8n6lc_31"><p>yes</p></td><td id="z8n6lc_32"><p>integer</p></td><td id="z8n6lc_33"><p>The internal collected invoice ID to compare</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z8n6lc_34"><thead><tr class="ijRowHead" id="z8n6lc_37"><th id="z8n6lc_44"><p>Status</p></th><th id="z8n6lc_45"><p>Description</p></th><th id="z8n6lc_46"><p>Content Types</p></th></tr></thead><tbody><tr id="z8n6lc_38"><td id="z8n6lc_47"><p>200</p></td><td id="z8n6lc_48"><p>Comparison completed successfully</p></td><td id="z8n6lc_49"><p>application/json</p></td></tr><tr id="z8n6lc_39"><td id="z8n6lc_50"><p>400</p></td><td id="z8n6lc_51"></td><td id="z8n6lc_52"></td></tr><tr id="z8n6lc_40"><td id="z8n6lc_53"><p>401</p></td><td id="z8n6lc_54"></td><td id="z8n6lc_55"></td></tr><tr id="z8n6lc_41"><td id="z8n6lc_56"><p>403</p></td><td id="z8n6lc_57"></td><td id="z8n6lc_58"></td></tr><tr id="z8n6lc_42"><td id="z8n6lc_59"><p>404</p></td><td id="z8n6lc_60"></td><td id="z8n6lc_61"></td></tr><tr id="z8n6lc_43"><td id="z8n6lc_62"><p>500</p></td><td id="z8n6lc_63"></td><td id="z8n6lc_64"></td></tr></tbody></table></div><p id="z8n6lc_35">Schema for response <code class="code" id="z8n6lc_65">200</code> (<code class="code" id="z8n6lc_66">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/CollectedInvoiceEconomicCompareResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="updatecollectedinvoice.html" class="navigation-links__prev">Update collected invoice</a><a href="comparecollectedinvoiceeconomicv2.html" class="navigation-links__next">Compare internal invoice with draft/booked (V2)</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:41:51.60352258"><title>Compare internal invoice with draft/booked (V2) | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"parameters","level":0,"title":"Parameters","anchor":"#parameters"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Compare internal invoice with draft/booked (V2) | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/comparecollectedinvoiceeconomicv2.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Compare internal invoice with draft/booked (V2) | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/comparecollectedinvoiceeconomicv2.html#webpage",
|
||||
"url": "writerside-documentation/comparecollectedinvoiceeconomicv2.html",
|
||||
"name": "Compare internal invoice with draft/booked (V2) | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="compareCollectedInvoiceEconomicV2" data-main-title="Compare internal invoice with draft/booked (V2)" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Invoices.topic|Invoices///Tag_Invoices_Page_1.topic|Invoices - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="compareCollectedInvoiceEconomicV2" id="compareCollectedInvoiceEconomicV2.topic">Compare internal invoice with draft/booked (V2)</h1><p id="-4kx62s_2">This endpoint documentation is generated directly from <code class="code" id="-4kx62s_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">GET /collected-invoices/economic/v2/compare</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-4kx62s_10">Operation ID: <code class="code" id="-4kx62s_12">compareCollectedInvoiceEconomicV2</code></p><p id="-4kx62s_11">Compare internal invoice with draft/booked (V2)</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-4kx62s_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="-4kx62s_14"><thead><tr class="ijRowHead" id="-4kx62s_15"><th id="-4kx62s_17"><p>Scheme</p></th><th id="-4kx62s_18"><p>Scopes</p></th></tr></thead><tbody><tr id="-4kx62s_16"><td id="-4kx62s_19"><p>BearerAuth</p></td><td id="-4kx62s_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="parameters" data-toc="parameters">Parameters</h2><div class="table-wrapper"><table class="wide" id="-4kx62s_21"><thead><tr class="ijRowHead" id="-4kx62s_22"><th id="-4kx62s_24"><p>Name</p></th><th id="-4kx62s_25"><p>In</p></th><th id="-4kx62s_26"><p>Required</p></th><th id="-4kx62s_27"><p>Type</p></th><th id="-4kx62s_28"><p>Description</p></th></tr></thead><tbody><tr id="-4kx62s_23"><td id="-4kx62s_29"><p>collected_invoice_id</p></td><td id="-4kx62s_30"><p>query</p></td><td id="-4kx62s_31"><p>yes</p></td><td id="-4kx62s_32"><p>integer</p></td><td id="-4kx62s_33"></td></tr></tbody></table></div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-4kx62s_34"><thead><tr class="ijRowHead" id="-4kx62s_37"><th id="-4kx62s_44"><p>Status</p></th><th id="-4kx62s_45"><p>Description</p></th><th id="-4kx62s_46"><p>Content Types</p></th></tr></thead><tbody><tr id="-4kx62s_38"><td id="-4kx62s_47"><p>200</p></td><td id="-4kx62s_48"><p>Comparison completed</p></td><td id="-4kx62s_49"><p>application/json</p></td></tr><tr id="-4kx62s_39"><td id="-4kx62s_50"><p>400</p></td><td id="-4kx62s_51"></td><td id="-4kx62s_52"></td></tr><tr id="-4kx62s_40"><td id="-4kx62s_53"><p>401</p></td><td id="-4kx62s_54"></td><td id="-4kx62s_55"></td></tr><tr id="-4kx62s_41"><td id="-4kx62s_56"><p>403</p></td><td id="-4kx62s_57"></td><td id="-4kx62s_58"></td></tr><tr id="-4kx62s_42"><td id="-4kx62s_59"><p>404</p></td><td id="-4kx62s_60"></td><td id="-4kx62s_61"></td></tr><tr id="-4kx62s_43"><td id="-4kx62s_62"><p>500</p></td><td id="-4kx62s_63"></td><td id="-4kx62s_64"></td></tr></tbody></table></div><p id="-4kx62s_35">Schema for response <code class="code" id="-4kx62s_65">200</code> (<code class="code" id="-4kx62s_66">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/CollectedInvoiceEconomicV2CompareResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="comparecollectedinvoiceeconomic.html" class="navigation-links__prev">Compare collected invoice totals with E-conomic</a><a href="comparecollectedinvoiceeconomicv2bulk.html" class="navigation-links__next">Bulk compare collected invoices against draft/booked (V2)</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:03.234108135"><title>Bulk compare collected invoices against draft/booked (V2) | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Bulk compare collected invoices against draft/booked (V2) | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/comparecollectedinvoiceeconomicv2bulk.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Bulk compare collected invoices against draft/booked (V2) | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/comparecollectedinvoiceeconomicv2bulk.html#webpage",
|
||||
"url": "writerside-documentation/comparecollectedinvoiceeconomicv2bulk.html",
|
||||
"name": "Bulk compare collected invoices against draft/booked (V2) | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="compareCollectedInvoiceEconomicV2Bulk" data-main-title="Bulk compare collected invoices against draft/booked (V2)" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Invoices.topic|Invoices///Tag_Invoices_Page_1.topic|Invoices - Page 1 of 2"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="compareCollectedInvoiceEconomicV2Bulk" id="compareCollectedInvoiceEconomicV2Bulk.topic">Bulk compare collected invoices against draft/booked (V2)</h1><p id="sjnoz2_2">This endpoint documentation is generated directly from <code class="code" id="sjnoz2_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /collected-invoices/economic/v2/compare/bulk</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="sjnoz2_10">Operation ID: <code class="code" id="sjnoz2_12">compareCollectedInvoiceEconomicV2Bulk</code></p><p id="sjnoz2_11">Bulk compare collected invoices against draft/booked (V2)</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="sjnoz2_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="sjnoz2_14"><thead><tr class="ijRowHead" id="sjnoz2_15"><th id="sjnoz2_17"><p>Scheme</p></th><th id="sjnoz2_18"><p>Scopes</p></th></tr></thead><tbody><tr id="sjnoz2_16"><td id="sjnoz2_19"><p>BearerAuth</p></td><td id="sjnoz2_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="sjnoz2_21">Required: yes.</p><p id="sjnoz2_22">Content type: <code class="code" id="sjnoz2_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"collected_invoice_ids": {
|
||||
"items": {
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
"maxItems": 200,
|
||||
"minItems": 1,
|
||||
"type": "array"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"collected_invoice_ids"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="sjnoz2_25"><thead><tr class="ijRowHead" id="sjnoz2_28"><th id="sjnoz2_34"><p>Status</p></th><th id="sjnoz2_35"><p>Description</p></th><th id="sjnoz2_36"><p>Content Types</p></th></tr></thead><tbody><tr id="sjnoz2_29"><td id="sjnoz2_37"><p>200</p></td><td id="sjnoz2_38"><p>Bulk comparison completed</p></td><td id="sjnoz2_39"><p>application/json</p></td></tr><tr id="sjnoz2_30"><td id="sjnoz2_40"><p>400</p></td><td id="sjnoz2_41"></td><td id="sjnoz2_42"></td></tr><tr id="sjnoz2_31"><td id="sjnoz2_43"><p>401</p></td><td id="sjnoz2_44"></td><td id="sjnoz2_45"></td></tr><tr id="sjnoz2_32"><td id="sjnoz2_46"><p>403</p></td><td id="sjnoz2_47"></td><td id="sjnoz2_48"></td></tr><tr id="sjnoz2_33"><td id="sjnoz2_49"><p>500</p></td><td id="sjnoz2_50"></td><td id="sjnoz2_51"></td></tr></tbody></table></div><p id="sjnoz2_26">Schema for response <code class="code" id="sjnoz2_52">200</code> (<code class="code" id="sjnoz2_53">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"$ref": "#/components/schemas/CollectedInvoiceEconomicV2CompareBulkResponse"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="comparecollectedinvoiceeconomicv2.html" class="navigation-links__prev">Compare internal invoice with draft/booked (V2)</a><a href="getcollectedinvoiceeconomicv2details.html" class="navigation-links__next">Get deep V2 e-conomic invoice details</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:05.74031022"><title>Complete order booking | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Complete order booking | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/completeorderbooking.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Complete order booking | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/completeorderbooking.html#webpage",
|
||||
"url": "writerside-documentation/completeorderbooking.html",
|
||||
"name": "Complete order booking | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="completeOrderBooking" data-main-title="Complete order booking" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bookings.topic|Bookings///Tag_Bookings_Page_1.topic|Bookings - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="completeOrderBooking" id="completeOrderBooking.topic">Complete order booking</h1><p id="z2cdn44_2">This endpoint documentation is generated directly from <code class="code" id="z2cdn44_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /order-bookings/complete</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="z2cdn44_10">Operation ID: <code class="code" id="z2cdn44_12">completeOrderBooking</code></p><p id="z2cdn44_11">Complete order booking</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="z2cdn44_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="z2cdn44_14"><thead><tr class="ijRowHead" id="z2cdn44_15"><th id="z2cdn44_17"><p>Scheme</p></th><th id="z2cdn44_18"><p>Scopes</p></th></tr></thead><tbody><tr id="z2cdn44_16"><td id="z2cdn44_19"><p>BearerAuth</p></td><td id="z2cdn44_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="z2cdn44_21">Required: yes.</p><p id="z2cdn44_22">Content type: <code class="code" id="z2cdn44_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
},
|
||||
"safety_seal": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="z2cdn44_25"><thead><tr class="ijRowHead" id="z2cdn44_28"><th id="z2cdn44_30"><p>Status</p></th><th id="z2cdn44_31"><p>Description</p></th><th id="z2cdn44_32"><p>Content Types</p></th></tr></thead><tbody><tr id="z2cdn44_29"><td id="z2cdn44_33"><p>200</p></td><td id="z2cdn44_34"><p>Success</p></td><td id="z2cdn44_35"><p>application/json</p></td></tr></tbody></table></div><p id="z2cdn44_26">Schema for response <code class="code" id="z2cdn44_36">200</code> (<code class="code" id="z2cdn44_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="listorderbookings.html" class="navigation-links__prev">List order bookings</a><a href="syncallbookings.html" class="navigation-links__next">Sync all bookings from external system</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,64 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:39:30.840083392"><title>Complete subuser setup | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Complete subuser setup | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/completesubusersetup.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Complete subuser setup | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/completesubusersetup.html#webpage",
|
||||
"url": "writerside-documentation/completesubusersetup.html",
|
||||
"name": "Complete subuser setup | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="completeSubuserSetup" data-main-title="Complete subuser setup" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Subusers.topic|Subusers///Tag_Subusers_Page_1.topic|Subusers - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="completeSubuserSetup" id="completeSubuserSetup.topic">Complete subuser setup</h1><p id="-wal9f9_2">This endpoint documentation is generated directly from <code class="code" id="-wal9f9_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /subusers/setup</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="-wal9f9_10">Operation ID: <code class="code" id="-wal9f9_12">completeSubuserSetup</code></p><p id="-wal9f9_11">Completes subuser setup by setting a password and basic profile fields. Accepts optional `username` and `email`.</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="-wal9f9_13">No authentication required.</p></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="-wal9f9_14">Required: yes.</p><p id="-wal9f9_15">Content type: <code class="code" id="-wal9f9_17">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"email": {
|
||||
"format": "email",
|
||||
"maxLength": 255,
|
||||
"minLength": 3,
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"maxLength": 255,
|
||||
"minLength": 3,
|
||||
"type": "string"
|
||||
},
|
||||
"password": {
|
||||
"description": "Must include at least one uppercase letter, one lowercase letter, and one number",
|
||||
"format": "password",
|
||||
"minLength": 8,
|
||||
"pattern": "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d).+$",
|
||||
"type": "string"
|
||||
},
|
||||
"token": {
|
||||
"description": "One-time setup token",
|
||||
"type": "string"
|
||||
},
|
||||
"username": {
|
||||
"maxLength": 255,
|
||||
"minLength": 3,
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"token",
|
||||
"password",
|
||||
"name"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="-wal9f9_18"><thead><tr class="ijRowHead" id="-wal9f9_21"><th id="-wal9f9_25"><p>Status</p></th><th id="-wal9f9_26"><p>Description</p></th><th id="-wal9f9_27"><p>Content Types</p></th></tr></thead><tbody><tr id="-wal9f9_22"><td id="-wal9f9_28"><p>200</p></td><td id="-wal9f9_29"><p>Setup completed</p></td><td id="-wal9f9_30"><p>application/json</p></td></tr><tr id="-wal9f9_23"><td id="-wal9f9_31"><p>400</p></td><td id="-wal9f9_32"></td><td id="-wal9f9_33"></td></tr><tr id="-wal9f9_24"><td id="-wal9f9_34"><p>500</p></td><td id="-wal9f9_35"></td><td id="-wal9f9_36"></td></tr></tbody></table></div><p id="-wal9f9_19">Schema for response <code class="code" id="-wal9f9_37">200</code> (<code class="code" id="-wal9f9_38">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"message": {
|
||||
"example": "Password set successfully",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="validatesubusersetuptoken.html" class="navigation-links__prev">Validate setup token</a><a href="getsubuser.html" class="navigation-links__next">Get a subuser by ID (visible by grant)</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:39:29.8232138"><title>Complete wash without wash certificate | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[{"id":"endpoint","level":0,"title":"Endpoint","anchor":"#endpoint"},{"id":"operation","level":0,"title":"Operation","anchor":"#operation"},{"id":"authentication","level":0,"title":"Authentication","anchor":"#authentication"},{"id":"request-body","level":0,"title":"Request Body","anchor":"#request-body"},{"id":"responses","level":0,"title":"Responses","anchor":"#responses"}]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Complete wash without wash certificate | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/completewashwithoutwashcertificate.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Complete wash without wash certificate | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/completewashwithoutwashcertificate.html#webpage",
|
||||
"url": "writerside-documentation/completewashwithoutwashcertificate.html",
|
||||
"name": "Complete wash without wash certificate | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="completeWashWithoutWashCertificate" data-main-title="Complete wash without wash certificate" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs="API-Reference.topic|API Reference///Tag_Bookings.topic|Bookings///Tag_Bookings_Page_1.topic|Bookings - Page 1 of 1"><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="completeWashWithoutWashCertificate" id="completeWashWithoutWashCertificate.topic">Complete wash without wash certificate</h1><p id="ct5f6w_2">This endpoint documentation is generated directly from <code class="code" id="ct5f6w_8">openapi.yaml</code>.</p><section class="chapter"><h2 id="endpoint" data-toc="endpoint">Endpoint</h2><div class="code-block" data-lang="http">POST /admin/bookings/completeWashWithoutWashCertificate</div></section><section class="chapter"><h2 id="operation" data-toc="operation">Operation</h2><p id="ct5f6w_10">Operation ID: <code class="code" id="ct5f6w_12">completeWashWithoutWashCertificate</code></p><p id="ct5f6w_11">Complete wash without wash certificate</p></section><section class="chapter"><h2 id="authentication" data-toc="authentication">Authentication</h2><p id="ct5f6w_13">Security requirements:</p><div class="table-wrapper"><table class="wide" id="ct5f6w_14"><thead><tr class="ijRowHead" id="ct5f6w_15"><th id="ct5f6w_17"><p>Scheme</p></th><th id="ct5f6w_18"><p>Scopes</p></th></tr></thead><tbody><tr id="ct5f6w_16"><td id="ct5f6w_19"><p>BearerAuth</p></td><td id="ct5f6w_20"><p>-</p></td></tr></tbody></table></div></section><section class="chapter"><h2 id="request-body" data-toc="request-body">Request Body</h2><p id="ct5f6w_21">Required: yes.</p><p id="ct5f6w_22">Content type: <code class="code" id="ct5f6w_24">application/json</code></p><div class="code-block" data-lang="json">
|
||||
{
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id"
|
||||
],
|
||||
"type": "object"
|
||||
}
|
||||
</div></section><section class="chapter"><h2 id="responses" data-toc="responses">Responses</h2><div class="table-wrapper"><table class="wide" id="ct5f6w_25"><thead><tr class="ijRowHead" id="ct5f6w_28"><th id="ct5f6w_30"><p>Status</p></th><th id="ct5f6w_31"><p>Description</p></th><th id="ct5f6w_32"><p>Content Types</p></th></tr></thead><tbody><tr id="ct5f6w_29"><td id="ct5f6w_33"><p>200</p></td><td id="ct5f6w_34"><p>Success</p></td><td id="ct5f6w_35"><p>application/json</p></td></tr></tbody></table></div><p id="ct5f6w_26">Schema for response <code class="code" id="ct5f6w_36">200</code> (<code class="code" id="ct5f6w_37">application/json</code>):</p><div class="code-block" data-lang="json">
|
||||
{}
|
||||
</div></section><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="tag-bookings-page-1.html" class="navigation-links__prev">Bookings - Page 1 of 1</a><a href="admindeletebooking.html" class="navigation-links__next">Delete booking (admin)</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:47.011784678"><title>Backups - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Backups - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-backups-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Backups - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-backups-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-backups-page-1.html",
|
||||
"name": "Backups - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_backups_page_1" data-main-title="Backups - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_backups_page_1" id="Config_Module_Backups_Page_1.topic">Backups - Page 1 of 1</h1><p id="z8q80g5_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-fxratesapi-page-1.html" class="navigation-links__prev">FXRatesAPI - Page 1 of 1</a><a href="modules-module-weatherapi.html" class="navigation-links__next">WeatherAPI</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:14.678178928"><title>Backups | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Backups | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-backups.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Backups | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-backups.html#webpage",
|
||||
"url": "writerside-documentation/config-module-backups.html",
|
||||
"name": "Backups | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_backups" data-main-title="Backups" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_backups" id="Config_Module_Backups.topic">Backups</h1><p id="-8qe45f_2">Backup configuration for backup module behavior.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-stripe-page-1.html" class="navigation-links__prev">Stripe - Page 1 of 1</a><a href="config-module-e-conomic.html" class="navigation-links__next">e-conomic</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:40:10.70963379"><title>Bird - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Bird - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-bird-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Bird - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-bird-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-bird-page-1.html",
|
||||
"name": "Bird - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_bird_page_1" data-main-title="Bird - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_bird_page_1" id="Config_Module_Bird_Page_1.topic">Bird - Page 1 of 1</h1><p id="-8hrte5_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-backup.html" class="navigation-links__prev">Backup</a><a href="modules-module-cvr.html" class="navigation-links__next">CVR</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:38:05.937163103"><title>Bird | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Bird | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-bird.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Bird | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-bird.html#webpage",
|
||||
"url": "writerside-documentation/config-module-bird.html",
|
||||
"name": "Bird | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_bird" data-main-title="Bird" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_bird" id="Config_Module_Bird.topic">Bird</h1><p id="z40nlsf_2">Bird communication integration configuration.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-self-serve.html" class="navigation-links__prev">Self-Serve</a><a href="config-module-limble-page-1.html" class="navigation-links__next">Limble - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:45.048393176"><title>e-conomic - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="e-conomic - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-e-conomic-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="e-conomic - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-e-conomic-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-e-conomic-page-1.html",
|
||||
"name": "e-conomic - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_e_conomic_page_1" data-main-title="e-conomic - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_e_conomic_page_1" id="Config_Module_e_conomic_Page_1.topic">e-conomic - Page 1 of 1</h1><p id="q6uyvq_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-virkdata-page-1.html" class="navigation-links__prev">VirkData - Page 1 of 1</a><a href="config-module-virkdata.html" class="navigation-links__next">VirkData</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:26.640595286"><title>e-conomic | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="e-conomic | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-e-conomic.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="e-conomic | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-e-conomic.html#webpage",
|
||||
"url": "writerside-documentation/config-module-e-conomic.html",
|
||||
"name": "e-conomic | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_e_conomic" data-main-title="e-conomic" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_e_conomic" id="Config_Module_e_conomic.topic">e-conomic</h1><p id="-17q2b8_2">e-conomic accounting integration configuration.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-backups.html" class="navigation-links__prev">Backups</a><a href="config-module-limble.html" class="navigation-links__next">Limble</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:23.581122823"><title>Email - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Email - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-email-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Email - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-email-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-email-page-1.html",
|
||||
"name": "Email - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_email_page_1" data-main-title="Email - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_email_page_1" id="Config_Module_Email_Page_1.topic">Email - Page 1 of 1</h1><p id="jylghm_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-motorapi-page-1.html" class="navigation-links__prev">MotorAPI - Page 1 of 1</a><a href="modules-module-virkdata-page-1.html" class="navigation-links__next">VirkData - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:14.939458395"><title>Email | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Email | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-email.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Email | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-email.html#webpage",
|
||||
"url": "writerside-documentation/config-module-email.html",
|
||||
"name": "Email | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_email" data-main-title="Email" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_email" id="Config_Module_Email.topic">Email</h1><p id="-b1iqfs_2">Email provider and SMTP/MailerSend configuration.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-virkdata-page-1.html" class="navigation-links__prev">VirkData - Page 1 of 1</a><a href="modules-module-fxratesapi-page-1.html" class="navigation-links__next">FXRatesAPI - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:22.768536841"><title>Entra - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Entra - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-entra-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Entra - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-entra-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-entra-page-1.html",
|
||||
"name": "Entra - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_entra_page_1" data-main-title="Entra - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_entra_page_1" id="Config_Module_Entra_Page_1.topic">Entra - Page 1 of 1</h1><p id="-et97ic_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-gatewayapi-page-1.html" class="navigation-links__prev">GatewayAPI - Page 1 of 1</a><a href="config-module-self-serve-page-1.html" class="navigation-links__next">Self-Serve - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:15.558703231"><title>Entra | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="Entra | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-entra.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="Entra | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-entra.html#webpage",
|
||||
"url": "writerside-documentation/config-module-entra.html",
|
||||
"name": "Entra | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_entra" data-main-title="Entra" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_entra" id="Config_Module_Entra.topic">Entra</h1><p id="cxeep2_2">Microsoft Entra identity integration configuration.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-self-serve-page-1.html" class="navigation-links__prev">Self-Serve - Page 1 of 1</a><a href="config-module-virkdata-page-1.html" class="navigation-links__next">VirkData - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:42:00.639012022"><title>FXRatesAPI - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="FXRatesAPI - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-fxratesapi-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="FXRatesAPI - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-fxratesapi-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-fxratesapi-page-1.html",
|
||||
"name": "FXRatesAPI - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_fxratesapi_page_1" data-main-title="FXRatesAPI - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_fxratesapi_page_1" id="Config_Module_FXRatesAPI_Page_1.topic">FXRatesAPI - Page 1 of 1</h1><p id="amqn4j_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-stripe.html" class="navigation-links__prev">Stripe</a><a href="config-module-stripe-page-1.html" class="navigation-links__next">Stripe - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:39:24.674837889"><title>FXRatesAPI | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="FXRatesAPI | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-fxratesapi.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="FXRatesAPI | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-fxratesapi.html#webpage",
|
||||
"url": "writerside-documentation/config-module-fxratesapi.html",
|
||||
"name": "FXRatesAPI | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_fxratesapi" data-main-title="FXRatesAPI" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_fxratesapi" id="Config_Module_FXRatesAPI.topic">FXRatesAPI</h1><p id="-19ysk1_2">FXRatesAPI exchange-rate integration configuration.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-weatherapi-page-1.html" class="navigation-links__prev">WeatherAPI - Page 1 of 1</a><a href="modules-module-entra.html" class="navigation-links__next">Entra</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:44:02.297603924"><title>GatewayAPI - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="GatewayAPI - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-gatewayapi-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="GatewayAPI - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-gatewayapi-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-gatewayapi-page-1.html",
|
||||
"name": "GatewayAPI - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_gatewayapi_page_1" data-main-title="GatewayAPI - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_gatewayapi_page_1" id="Config_Module_GatewayAPI_Page_1.topic">GatewayAPI - Page 1 of 1</h1><p id="-lzk7xm_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="config-module-xlvask.html" class="navigation-links__prev">XLVask</a><a href="config-module-entra-page-1.html" class="navigation-links__next">Entra - Page 1 of 1</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:45:37.279327559"><title>GatewayAPI | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="GatewayAPI | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-gatewayapi.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="GatewayAPI | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-gatewayapi.html#webpage",
|
||||
"url": "writerside-documentation/config-module-gatewayapi.html",
|
||||
"name": "GatewayAPI | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_gatewayapi" data-main-title="GatewayAPI" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_gatewayapi" id="Config_Module_GatewayAPI.topic">GatewayAPI</h1><p id="grgtn0_2">GatewayAPI integration configuration.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="birdendflashcall.html" class="navigation-links__prev">Complete/end a flash call by ID</a><a href="config-module-recaptcha.html" class="navigation-links__next">reCAPTCHA</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html SYSTEM "about:legacy-compat">
|
||||
<html lang="en-US" data-preset="contrast" data-primary-color="#307FFF"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="UTF-8"><meta name="robots" content="noindex"><meta name="built-on" content="2026-03-17T15:39:39.46633069"><title>LicensePlateRecognizer - Page 1 of 1 | Copenhagen Truck Wash API</title><script type="application/json" id="virtual-toc-data">[]</script><script type="application/json" id="topic-shortcuts"></script><link href="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.css" rel="stylesheet"><meta name="msapplication-TileColor" content="#000000"><link rel="apple-touch-icon" sizes="180x180" href="https://jetbrains.com/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="https://jetbrains.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="https://jetbrains.com/favicon-16x16.png"><meta name="msapplication-TileImage" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-144x144.png"><meta name="msapplication-square70x70logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-70x70.png"><meta name="msapplication-square150x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-150x150.png"><meta name="msapplication-wide310x150logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x150.png"><meta name="msapplication-square310x310logo" content="https://resources.jetbrains.com/storage/ui/favicons/mstile-310x310.png"><meta name="image" content=""><!-- Open Graph --><meta property="og:title" content="LicensePlateRecognizer - Page 1 of 1 | Copenhagen Truck Wash API"><meta property="og:description" content=""><meta property="og:image" content=""><meta property="og:site_name" content="Copenhagen Truck Wash API Help"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta property="og:url" content="writerside-documentation/config-module-licenseplaterecognizer-page-1.html"><!-- End Open Graph --><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content=""><meta name="twitter:title" content="LicensePlateRecognizer - Page 1 of 1 | Copenhagen Truck Wash API"><meta name="twitter:description" content=""><meta name="twitter:creator" content=""><meta name="twitter:image:src" content=""><!-- End Twitter Card --><!-- Schema.org WebPage --><script type="application/ld+json">{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "WebPage",
|
||||
"@id": "writerside-documentation/config-module-licenseplaterecognizer-page-1.html#webpage",
|
||||
"url": "writerside-documentation/config-module-licenseplaterecognizer-page-1.html",
|
||||
"name": "LicensePlateRecognizer - Page 1 of 1 | Copenhagen Truck Wash API",
|
||||
"description": "",
|
||||
"image": "",
|
||||
"inLanguage":"en-US"
|
||||
}</script><!-- End Schema.org --><!-- Schema.org WebSite --><script type="application/ld+json">{
|
||||
"@type": "WebSite",
|
||||
"@id": "writerside-documentation/#website",
|
||||
"url": "writerside-documentation/",
|
||||
"name": "Copenhagen Truck Wash API Help"
|
||||
}</script><!-- End Schema.org --></head><body data-id="config_module_licenseplaterecognizer_page_1" data-main-title="LicensePlateRecognizer - Page 1 of 1" data-article-props="{"seeAlsoStyle":"links"}" data-template="article" data-breadcrumbs=""><div class="wrapper"><main class="panel _main"><header class="panel__header"><div class="container"><h3>Copenhagen Truck Wash API Help</h3><div class="panel-trigger"></div></div></header><section class="panel__content"><div class="container"><article class="article" data-shortcut-switcher="inactive"><h1 data-toc="config_module_licenseplaterecognizer_page_1" id="Config_Module_LicensePlateRecognizer_Page_1.topic">LicensePlateRecognizer - Page 1 of 1</h1><p id="l2tl77_2">This page groups endpoint topics for this object type.</p><div class="last-modified">17 March 2026</div><div data-feedback-placeholder="true"></div><div class="navigation-links _bottom"><a href="modules-module-action-logs.html" class="navigation-links__prev">Action Logs</a><a href="modules-module-backup.html" class="navigation-links__next">Backup</a></div></article><div id="disqus_thread"></div></div></section></main></div><script src="https://resources.jetbrains.com/writerside/apidoc/6.26.0-b913/app.js"></script></body></html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user