Changes for page card-transaction

Last modified by David Persson on 2024/02/21 07:48
From empty
To version 11.1
edited by David Persson
on 2020/02/20 15:37
Change comment: There is no comment for this version

Summary

Details

Page properties
Title
... ... @@ -1,0 +1,1 @@
1 +../card-transaction
Parent
... ... @@ -1,0 +1,1 @@
1 +Main.credit-account.api.WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.XWikiGuest
1 +xwiki:XWiki.dap
Default language
... ... @@ -1,0 +1,1 @@
1 +en
Tags
... ... @@ -1,0 +1,1 @@
1 +px-custom-page-content
Content
... ... @@ -1,0 +1,463 @@
1 +(% class="jumbotron" %)
2 +(((
3 +(% class="container" %)
4 +(((
5 +Integrate to **PayEx Ledger Card transactions API **
6 +)))
7 +)))
8 +
9 +(% class="lead" %)
10 +The credit account acquiring api contains functions that are used in payment scenarios: online, in-store and offline. Before transactions can be created an account must exists.
11 +
12 +[[image:1582184597141-697.png||height="393" width="537"]]
13 +
14 +----
15 +
16 += Changelog =
17 +
18 +
19 +== Authorizations ==
20 +
21 +(% class="wikigeneratedid" %)
22 +An authorization is made to try to use an account for payment. A successful authorization leads to a reservation on the account, the account is identified through the **cardToken** or the **accountNo**. The authorization is not a financial transaction, to make the financial transaction a Purchase must posted on the authorization.
23 +
24 +==== Post authorizations ====
25 +
26 +{{code language="http" title="**Request**"}}
27 +POST /ledger/credit-account-acquiring/v1/XXX/authorizations HTTP/1.1
28 +Host: -
29 +Authorization: Bearer <Token>
30 +Content-Type: application/json
31 +
32 +{
33 + "sourceAuthorizationTransactionId": "789",
34 + "sellerNumber": "654",
35 + "cardToken": "5646735165",
36 + "type": "purchase|reversal|cash-withdrawal",
37 + "pointOfSale": "Testshop",
38 + "authorizationAmount": 300.0,
39 + "currency": "SEK"
40 +}
41 +{{/code}}
42 +
43 +(% class="box successmessage" %)
44 +(((
45 +
46 +)))
47 +
48 +{{code language="http" title="**Response**"}}
49 +HTTP/1.1 200 OK
50 +Content-Type: application/json
51 +
52 +{
53 + "@id": "/ledger/credit-account-acquiring/v1/XXX/authorization/YYY",
54 +}
55 +{{/code}}
56 +
57 +====
58 +Get authorizations ====
59 +
60 +{{code language="http" title="**Request**"}}
61 +GET /ledger/credit-account-acquiring/v1/XXX/authorizations/YYY HTTP/1.1
62 +Host: -
63 +Authorization: Bearer <Token>
64 +Content-Type: application/json
65 +{{/code}}
66 +
67 +==== ====
68 +
69 +{{code language="http" title="**Response**"}}
70 +HTTP/1.1 200 OK
71 +Content-Type: application/json
72 +
73 +{
74 + "sourceAuthorizationTransactionId": "789",
75 + "authorizationId": 123,
76 + "sellerNumber": "654",
77 + "cardToken": "546415646315",
78 + "accountNo": null,
79 + "pointOfSale": "Testshop",
80 + "validToDate": "2019-11-28",
81 + "authorizationAmount": 300.0,
82 + "remainingAmount" : 150.0,
83 + "currency": "SEK",
84 + "@id": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN",
85 + "purchases": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases",
86 + "cancellations": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/cancellations",
87 + "schemaUri": "/ledger/invoice-purchase/v1/PayEx.AR.InvoicePurchase.Api.Resources.Authorizations.Resource",
88 + "parentHREF": "/",
89 + "operations": [
90 + {
91 + "rel": "create-Purchase",
92 + "method": "post",
93 + "href": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases"
94 + },
95 + {
96 + "rel": "create-cancellation",
97 + "method": "post",
98 + "href": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/cancellations"
99 + }
100 + ]
101 +}
102 +{{/code}}
103 +
104 +
105 +==== Resource properties authorizations ====
106 +
107 +(% class="table-bordered table-striped" %)
108 +|=(% style="width: 215px;" %)Property|=(% style="width: 114px;" %)Data type|=(% style="width: 118px;" %)Format|=(% style="width: 586px;" %)Description
109 +|(% style="width:215px" %)@id |(% style="width:114px" %)string|(% style="width:118px" %)Uri |(% style="width:586px" %)
110 +|(% style="width:215px" %)sourceAuthorizationTransactionId|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 50|(% style="width:586px" %)Unique identifier of the specific authorization, generated by source (typically the integrating system)
111 +|(% style="width:215px" %)authorizationId|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 6|(% style="width:586px" %)Unique identifier of the authorization, generated by PayEx. Should be stored and must be used in Purchase
112 +|(% style="width:215px" %)sellerNumber|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 15|(% style="width:586px" %)Identifier of the current seller/merchant
113 +|(% style="width:215px" %)cardToken|(% style="width:114px" %)string|(% style="width:118px" %) |(% style="width:586px" %)identifier of the card. The aurhotization is made on the account that the card is linked to
114 +|(% style="width:215px" %)accountNo|(% style="width:114px" %)string|(% style="width:118px" %) |(% style="width:586px" %)identifier of the account
115 +|(% style="width:215px" %)pointOfSale|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 50|(% style="width:586px" %)Name of the location/point/shop of sale, will be returned in reservation resource
116 +|(% style="width:215px" %)validToDate|(% style="width:114px" %)date|(% style="width:118px" %)[[ISO 8601>>url:http://en.wikipedia.org/wiki/ISO_8601||rel="noreferrer" title="ISO8601 on Wikipedia"]]|(% style="width:586px" %)Purchase can not be executed after this date
117 +|(% style="width:215px" %)authorizeAmount|(% style="width:114px" %)decimal|(% style="width:118px" %)Amount|(% style="width:586px" %)Original authorized amount
118 +|(% style="width:215px" %)remainingAmount|(% style="width:114px" %)decimal|(% style="width:118px" %)Amount|(% style="width:586px" %)Amount left on the authorization that can be Purchased
119 +|(% style="width:215px" %)currency|(% style="width:114px" %)string|(% style="width:118px" %)[[ISO 4217>>url:https://sv.wikipedia.org/wiki/ISO_4217]]|(% style="width:586px" %)
120 +|(% style="width:215px" %)purchases|(% style="width:114px" %)string|(% style="width:118px" %)Uri|(% style="width:586px" %)
121 +|(% style="width:215px" %)cancellations|(% style="width:114px" %)string|(% style="width:118px" %)Uri|(% style="width:586px" %)
122 +
123 +----
124 +
125 +== Purchases ==
126 +
127 +==== Post purchases ====
128 +
129 +{{code language="http" title="**Request**"}}
130 +POST /ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases HTTP/1.1
131 +Host: -
132 +Authorization: Bearer <Token>
133 +Content-Type: application/json
134 +
135 +{
136 + "sourcePurchaseTransactionId" : "534313",
137 + "sellerReceiptId": "2019-11-28",
138 + "additionalReferences":{
139 + "acquirerBatchId": "fdsfsdfsd",
140 + "acquirerTransactionId" : "534313"
141 + },
142 + "amount": 200.0
143 +}
144 +{{/code}}
145 +
146 +==== Get purchases ====
147 +
148 +{{code language="http" title="**Request**"}}
149 +GET /ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY HTTP/1.1
150 +Host: -
151 +Authorization: Bearer <Token>
152 +Content-Type: application/json
153 +
154 +{{/code}}
155 +
156 +==== List purchases ====
157 +
158 +{{code language="http" title="**Request**"}}
159 +GET /ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases HTTP/1.1
160 +Host: -
161 +Authorization: Bearer <Token>
162 +Content-Type: application/json
163 +
164 +{{/code}}
165 +
166 +==== Resource purchases ====
167 +
168 +{{code language="http" title="**Response**"}}
169 +HTTP/1.1 201 CREATED
170 +Content-Type: application/json
171 +
172 +{
173 + "description": "stora butiken test, köpref. 12345689",
174 + "sourcePurchaseTransactionId" : "534313",
175 + "additionalReferences":{
176 + "acquirerBatchId": "fdsfsdfsd",
177 + "acquirerTransactionId" : "534313",
178 + },
179 + "sellerReceiptId": "12345689",
180 + "amount": 200.0,
181 + "corrections": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY/corrections",
182 + "@id": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/Purchase/YYY",
183 + "parentHREF": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN",
184 + "operations": [
185 + {
186 + "rel": "create-reversal",
187 + "method": "post",
188 + "href": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY/reversal"
189 + }
190 + ]
191 +}
192 +{{/code}}
193 +
194 +==== Resource properties purchases ====
195 +
196 +(% class="table-bordered table-striped" %)
197 +|=(% style="width: 337px;" %)Property|=(% style="width: 121px;" %)Data type|=(% style="width: 164px;" %)Format|=(% style="width: 1156px;" %)Description
198 +|(% style="width:337px" %)@id |(% style="width:121px" %)string|(% style="width:164px" %)Uri|(% style="width:1156px" %)
199 +|(% style="width:337px" %)description|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 200|(% style="width:1156px" %)Describes the current Purchase (derives from info sent in the authorization), may be printed on the bill, output only
200 +|(% style="width:337px" %)(((
201 +(% style="background-color:transparent" %)sourcePurchaseTransactionId
202 +)))|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Unique identifier of the Purchase transaction
203 +|(% style="width:337px" %)(((
204 +additionalReferences.acquirerBatchId
205 +)))|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Used for reconciling acquirer transactions. See [[RKHA21>>||anchor="HRKHA21format"]] section on this page for more information
206 +|(% style="width:337px" %)additionalReferences.acquirerTransactionId|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Unique acquirer identifier of the transaction
207 +|(% style="width:337px" %)sellerReceiptId|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)
208 +|(% style="width:337px" %)amount|(% style="width:121px" %)decimal|(% style="width:164px" %) |(% style="width:1156px" %)
209 +|(% style="width:337px" %)corrections|(% style="width:121px" %)string|(% style="width:164px" %)Uri|(% style="width:1156px" %)
210 +
211 +----
212 +
213 +=== Correction ===
214 +
215 +Used to reverse a Purchase transaction
216 +
217 +==== Create corrections ====
218 +
219 +{{code language="http" title="**Request**"}}
220 +POST /ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY/corrections HTTP/1.1
221 +Host: -
222 +Authorization: Bearer <Token>
223 +Content-Type: application/json
224 +
225 +{
226 + "additionalReferences":{
227 + "acquirerBatchId": "fdsfsdfsd",
228 + "acquirerTransactionId" : "534313",
229 + },
230 + "sellerReceiptId" : "534313",
231 + "sourceReversalTransactionId" : "534313",
232 + "amount": 200.0
233 +}
234 +{{/code}}
235 +
236 +==== Get corrections ====
237 +
238 +{{code language="http" title="**Request**"}}
239 +GET /ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY/corrections/NNN HTTP/1.1
240 +Host: -
241 +Authorization: Bearer <Token>
242 +Content-Type: application/json
243 +
244 +{{/code}}
245 +
246 +==== List corrections ====
247 +
248 +{{code language="http" title="**Request**"}}
249 +GET /ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY/corrections HTTP/1.1
250 +Host: -
251 +Authorization: Bearer <Token>
252 +Content-Type: application/json
253 +
254 +{{/code}}
255 +
256 +==== Resource corrections ====
257 +
258 +{{code language="http" title="**Response**"}}
259 +HTTP/1.1 200 OK
260 +Content-Type: application/json
261 +
262 +{
263 + "additionalReferences":{
264 + "acquirerBatchId": "fdsfsdfsd",
265 + "acquirerTransactionId" : "534313",
266 + },
267 + "sourceReversalTransactionId" : "534313",
268 + "amount": 200.00,
269 + "currency": "SEK",
270 + "@id" : "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY/credits/ZZZ",
271 + "parentHREF": "/ledger/credit-account-acquiring/v1/XXX/authorizations/NNN/purchases/YYY",
272 + "operations" : []
273 +}
274 +{{/code}}
275 +
276 +==== corrections resource properties ====
277 +
278 +(% class="table-bordered table-striped" %)
279 +|=(% style="width: 215px;" %)Property|=(% style="width: 114px;" %)Data type|=(% style="width: 118px;" %)Format|=(% style="width: 586px;" %)Description
280 +|(% style="width:215px" %)@id |(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: |(% style="width:586px" %)
281 +|(% style="width:337px" %)(((
282 +additionalReferences.acquirerBatchId
283 +)))|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Used for reconciling acquirer transactions. See [[RKHA21>>||anchor="HRKHA21format"]] section on this page for more information
284 +|(% style="width:337px" %)additionalReferences.acquirerTransactionId|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Unique acquirer identifier of the transaction
285 +|(% style="width:215px" %)sourceReversalTransactionId|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 50|(% style="width:586px" %)
286 +|(% style="width:215px" %)amount|(% style="width:114px" %)decimal|(% style="width:118px" %) |(% style="width:586px" %)
287 +|(% style="width:215px" %)currency|(% style="width:114px" %)string|(% style="width:118px" %)[[ISO 4217>>url:https://sv.wikipedia.org/wiki/ISO_4217]]|(% style="width:586px" %)
288 +
289 +== Reversals ==
290 +
291 +Used to refund a transaction without any reference to it.
292 +
293 +==== Create reversals ====
294 +
295 +Execute post towards this resource to place the amount on the specified account
296 +
297 +{{code language="http" title="**Request**"}}
298 +POST /ledger/credit-account-acquiring/v1/XXX/reversals HTTP/1.1
299 +Host: -
300 +Authorization: Bearer <Token>
301 +Content-Type: application/json
302 +
303 +{
304 + "pointOfSale": "stora butiken test, köpref. 12345689",
305 + "cardToken" : "1564316498964156",
306 + "sellerReceiptId": "12345689",
307 + "sellerNumber" : "654",
308 + "additionalReferences":{
309 + "acquirerBatchId": "fdsfsdfsd",
310 + "acquirerTransactionId" : "534313",
311 + },
312 + "sourceRefundTransactionId" : "534312",
313 + "amount": 200.0,
314 + "currency": "SEK"
315 +}
316 +{{/code}}
317 +
318 +==== Get reversals ====
319 +
320 +{{code language="http" title="**Request**"}}
321 +GET /ledger/credit-account-acquiring/v1/XXX/reversals HTTP/1.1
322 +Host: -
323 +Authorization: Bearer <Token>
324 +Content-Type: application/json
325 +
326 +{{/code}}
327 +
328 +==== List reversals ====
329 +
330 +{{code language="http" title="**Request**"}}
331 +GET /ledger/credit-account-acquiring/v1/XXX/reversals HTTP/1.1
332 +Host: -
333 +Authorization: Bearer <Token>
334 +Content-Type: application/json
335 +
336 +{{/code}}
337 +
338 +==== Resource reversals ====
339 +
340 +{{code language="http" title="**Response**"}}
341 +HTTP/1.1 200 OK
342 +Content-Type: application/json
343 +
344 +{
345 + "pointOfSale": "stora butiken test, köpref. 12345689",
346 + "cardToken" : "1564316498964156",
347 + "sellerReceiptId": "12345689",
348 + "sellerNumber" : "654",
349 + "additionalReferences":{
350 + "acquirerBatchId": "fdsfsdfsd",
351 + "acquirerTransactionId" : "534313",
352 + },
353 + "sourceRefundTransactionId" : "534313",
354 + "amount": 200.00,
355 + "currency": "SEK",
356 + "@id" : "/ledger/credit-account-acquiring/v1/XXX/corrections/YYY",
357 + "parentHREF": "",
358 + "operations" : []
359 +}
360 +{{/code}}
361 +
362 +==== reversals properties ====
363 +
364 +(% class="table-bordered table-striped" %)
365 +|=(% style="width: 215px;" %)Property|=(% style="width: 114px;" %)Data type|=(% style="width: 118px;" %)Format|=(% style="width: 586px;" %)Description
366 +|(% style="width:215px" %)@id |(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: |(% style="width:586px" %)
367 +|(% style="width:337px" %)(((
368 +additionalReferences.acquirerBatchId
369 +)))|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Used for reconciling acquirer transactions. See [[RKHA21>>||anchor="HRKHA21format"]] section on this page for more information
370 +|(% style="width:337px" %)additionalReferences.acquirerTransactionId|(% style="width:121px" %)string|(% style="width:164px" %)Maxlength: 50|(% style="width:1156px" %)Unique acquirer identifier of the transaction
371 +|(% style="width:215px" %)sourceRefundTransactionId|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 50|(% style="width:586px" %)
372 +|(% style="width:215px" %)amount|(% style="width:114px" %)decimal|(% style="width:118px" %) |(% style="width:586px" %)
373 +|(% style="width:215px" %)currency|(% style="width:114px" %)string|(% style="width:118px" %)[[ISO 4217>>url:https://sv.wikipedia.org/wiki/ISO_4217]]|(% style="width:586px" %)
374 +|(% style="width:215px" %)sellerNumber|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 15|(% style="width:586px" %)Identifier of the current seller/merchant
375 +|(% style="width:215px" %)cardToken|(% style="width:114px" %)string|(% style="width:118px" %) |(% style="width:586px" %)identifier of the card. The aurhotization is made on the account that the card is linked to
376 +|(% style="width:215px" %)pointOfSale|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 50|(% style="width:586px" %)Name of the location/point/shop of sale, will be returned in reservation resource
377 +|(% style="width:215px" %)sellerReceiptId|(% style="width:114px" %)string|(% style="width:118px" %)Maxlength: 50|(% style="width:586px" %)
378 +
379 +=== RKHA21 format ===
380 +
381 +If the original source for the transactions towards purchases/corrections/reversals/Offline-purchases is the RKHA21 file the below rules should be used to set the AcquirerBatchId.
382 +
383 +AcquirerBatchId = [Processing date][Sender][Cycle]
384 +
385 +For the example values in the table below the AcquirerBatchId will be "**200206885020**".
386 +
387 +**RKHA21 file header row description**
388 +
389 +(% class="table-bordered table-striped" %)
390 +|=(% style="width: 113px;" %)Position|=(% style="width: 226px;" %)Field|=(% style="width: 118px;" %)Format|=(% style="width: 586px;" %)Description|=(% style="width: 586px;" %)Example
391 +|(% style="width:113px" %)1|(% style="width:226px" %)Transaction code|(% style="width:118px" %)2 N|(% style="width:586px" %)01|(% style="width:586px" %)
392 +|(% style="width:113px" %)3|(% style="width:226px" %)Processing date|(% style="width:118px" %)6 N|(% style="width:586px" %)YYMMDD|(% style="width:586px" %)200206
393 +|(% style="width:113px" %)9|(% style="width:226px" %)Sender|(% style="width:118px" %)4 N|(% style="width:586px" %)"8850" (Babs)|(% style="width:586px" %)8850
394 +|(% style="width:113px" %)13|(% style="width:226px" %)Cycle|(% style="width:118px" %)2 AN|(% style="width:586px" %)10/20|(% style="width:586px" %)20
395 +|(% style="width:113px" %)15|(% style="width:226px" %)Filler|(% style="width:118px" %)26 AN|(% style="width:586px" %)Space characters|(% style="width:586px" %)
396 +|(% style="width:113px" %)41|(% style="width:226px" %)Vers.nr/serial number|(% style="width:118px" %)6 N|(% style="width:586px" %)File serial number|(% style="width:586px" %)
397 +|(% style="width:113px" %)47|(% style="width:226px" %)Transaction entry|(% style="width:118px" %)1 AN|(% style="width:586px" %) |(% style="width:586px" %)
398 +|(% style="width:113px" %)48|(% style="width:226px" %)Filler|(% style="width:118px" %)333 AN|(% style="width:586px" %)Space characters|(% style="width:586px" %)
399 +
400 +(% class="box successmessage" %)
401 +(((
402 +The rkha format actually has a 28 character filler at position 13 by default, but for "Babs" the first two positions in this filler are redefined to be "cycle" (position 13 and 14), which leaves the Filler to be 26 characters instead of 28.
403 +)))
404 +
405 +=== Problems ===
406 +
407 +If an error occur or any validation failed, a "problem" response will be returned.
408 +Below is a list of problems that can occur:
409 +
410 +**HttpStatus 401 Unauthorized**
411 +
412 +* Token expired
413 +* Token invalid
414 +* SellerNumber does not match token
415 +* CompanyNumber does not match token
416 +
417 +**HttpStatus 400 Error**
418 +
419 +* Validation: Argument required
420 +* Validation: Invalid value
421 +
422 +**HttpStatus 422 Unprocessable entity**
423 +
424 +* Authorization declined
425 +
426 +**HttpStatus 409 Conflict**
427 +
428 +* Invoice already authorized
429 +* Duplicate InvoiceNumber
430 +* Authorization is cancelled
431 +* Authorization already Purchased
432 +* Authorization has expired
433 +* Insufficient debited amount XXX
434 +
435 +**HttpStatus 501 NotImplemented**
436 +
437 +* CompanyNumber XXX not configured
438 +* SellerNumber XXX not configured at PayEx
439 +* CompanyNumber XXX missing configuration
440 +
441 +**HttpStatus 404 NotFound**
442 +
443 +* Authorization not found
444 +
445 +Below is an example of a problem that will be returned if buyer##.nationalConsumerIdentifier.value## is not valid in the authorization post request.
446 +
447 +{{code language="http" title="**Response**"}}
448 +HTTP/1.1 400 Error
449 +Content-Type: application/problem+json
450 +
451 +{
452 + "Type": "http://[DNS]/ledger/invoice-purchase/problems/validation",
453 + "Title": "A validation error occurred",
454 + "Status": 400,
455 + "Instance": null,
456 + "Detail": "A validation error occurred. Please fix the problems mentioned in the 'problems' property below.",
457 + "Problems": [
458 + {
459 + "buyer.nationalConsumerIdentifier.value": "Not a valid SE nationalConsumerIdentifier"
460 + }
461 + ]
462 +}
463 +{{/code}}
1582184597141-697.png
Author
... ... @@ -1,0 +1,1 @@
1 +xwiki:XWiki.dap
Size
... ... @@ -1,0 +1,1 @@
1 +0 bytes
Content