Search…
Baseline Proxy
⚠️This service and documentation is still under active development.

Overview

This proxy microservice is the infamous missing persistence package needed by the initial version of the Baseline Protocol. The proxy adds generalized baseline protocol support for a variety of popular enterprise systems of record.
We have included the proxy as part of the Provide Framework.

Architecture

The proxy microservice is built for baselining systems of record. It is purpose-built for supporting non-repudiation of claims use-cases, where each party deploys an instance of the proxy configured to use one or more systems of record.

Inbound Protocol Messages

Inbound protocol messages containing a baseline_id which have not yet been seen (i.e., mapped) on a proxy instance are synchronously or asynchronously mapped depending on the internal system of record implementation. A new record is created synchronously in the internal system of record if its API returns an identifier synchronously; otherwise, an API is exposed so the system of record can map the internal record id with the baseline_id.

Outbound Protocol Messages

Outbound protocol messages use the internal system of record id to map an external baseline_id when constructing protocol messages. If no baseline_id is resolved, one is generated and this outbound message can be considered the beginning of a new baseline workflow.

Systems of Record

System of Record
Resources
Microsoft Dynamics 365
Docs
Microsoft Excel
Docs
Salesforce
Docs
SAP
Docs
ServiceNow
Docs
The parameters and responses for creating and mapping business objects across supported systems of record varies slightly. Our architecture hides nuanced differences across two different systems of record, such as handling synchronous and asynchronous behavior to map an object's internal id to a baseline_id. It is recommended to understand what is happening under the hood in the context of your targeted system of record when handling inbound and outbound protocol messages.

API

Accept Workgroup Invitation

Documentation forthcoming.

Create Baselined Business Object

This API allows users of your system of record (i.e., SAP) to send outbound baseline protocol messages for new records originated in such system of record without changing behavior.

Request Parameters

Parameter
Description
Required
id
internal system of record id
yes
payload
the business object payload
yes
type
type of business object payload
yes
The following API call illustrates how to baseline a business object by sending an outbound protocol message:
curl
1
curl -v -XPOST \
2
-H 'authorization: bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwOjJlOmQ5OmUxOmI4OmEyOjM0OjM3Ojk5OjNhOjI0OmZjOmFhOmQxOmM4OjU5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJodHRwczovL3Byb3ZpZGUuc2VydmljZXMvYXBpL3YxIiwiZXhwIjoxNjA5NDEwNjQ2LCJpYXQiOjE2MDkzMjQyNDYsImlzcyI6Imh0dHBzOi8vaWRlbnQucHJvdmlkZS5zZXJ2aWNlcyIsImp0aSI6ImU2NDg5M2I1LTYxMGItNGU3OC1hYjlmLTIzMjllZDBlMmJiNyIsIm5hdHMiOnsicGVybWlzc2lvbnMiOnsicHVibGlzaCI6eyJhbGxvdyI6WyJiYXNlbGluZS5cdTAwM2UiXX0sInN1YnNjcmliZSI6eyJhbGxvdyI6WyJ1c2VyLjE5NzMwZmJmLWQxNzgtNGEyZC1iMTM5LTBkZmIxYzRkYTY2OSIsIm5ldHdvcmsuKi5jb25uZWN0b3IuKiIsIm5ldHdvcmsuKi5zdGF0dXMiLCJwbGF0Zm9ybS5cdTAwM2UiLCJiYXNlbGluZS5cdTAwM2UiXX19fSwicHJ2ZCI6eyJwZXJtaXNzaW9ucyI6NDE1LCJ1c2VyX2lkIjoiMTk3MzBmYmYtZDE3OC00YTJkLWIxMzktMGRmYjFjNGRhNjY5In0sInN1YiI6InVzZXI6MTk3MzBmYmYtZDE3OC00YTJkLWIxMzktMGRmYjFjNGRhNjY5In0.dJVRiWhovrkFvFZ-n4g6hybhEg-raf-dvYOD2eQ8ajI-mUC8kxtZb56ibS-03rh5r5glrFXRCpWbJ74Eu0jFlKH5BPwzDve9WnDQn8Lr_NiaxwRGa3jYSnXMJbn6zGhzqhmiDr7f-7WlELp5e2bKkhIsGReyetgj-UIu8sl3hB6hT5ARh39BMY6fjNDyAlvvTGpMXz_Rr0T5b1JzAJaOOyYqeTqmYmOvxOFKj5RCk7KjOSpxLS23tiY_73NpkdbvtVOzPcvenWpxD0d00OWTbmVL-7Cwpa_NqDGwETi8kiiYPMyK3qgfCEKe1iQrBqUzIij2s68XUAVhaCikPpFpeR_PZnKZB9-9zN53VlFoDZyxx7WkKFzGy1Mj5eWXAcE81MlT6hXHM06ZyMj_yv8-8mZ41nfUPbyU9PdUlQsoFNz1rz_mCsUy6DeqIg5TS5I39Rpd8_E8VdsYb4BNILTlWQa-PbtKBDUN9wqq-tqigahG9JK2J2w7fTNQfqIAd1plrlQYzDKt178Mqd8lkF0G-uicartUHRxetUXlX-6YpiNphHPyrwuz38uggGBqPLbq4OlejWK2-oDYJMGcTpTVJk9qEk6JAbm148_i04OEfNtFbS9PRkj1_H5DyaaGWW_3R0nDZdlNz1Xm-ExLyGTwdqrJBb9lf1UbdRC-wtpMlOk' \
3
-H 'content-type: application/json' \
4
https://proxy.provide.local/api/v1/business-objects --data-binary @- << EOF
5
{
6
"type":"purchase_order",
7
"id":"4500002427",
8
"payload":{
9
"control":{
10
"tabnam":"EDI_DC40",
11
"mandt":"100",
12
"docnum":"0000000000031299",
13
"docrel":"754",
14
"status":"03",
15
"direct":"1",
16
"outmod":"2",
17
"idoctyp":"ORDERS05",
18
"mestyp":"ORDERS",
19
"sndpor":"/UBC/IDOC",
20
"sndprt":"LS",
21
"sndprn":"/UBC/PROXY",
22
"rcvpor":"/UBC/IDOC",
23
"rcvprt":"LI",
24
"rcvpfc":"LF",
25
"rcvprn":"0010300081",
26
"credat":"2021-03-21",
27
"cretim":"19:29:02",
28
"serial":"20210321192858"
29
},
30
"data":{
31
"e1edk01":{
32
"curcy":"EUR",
33
"hwaer":"EUR",
34
"wkurs":"1.00000",
35
"zterm":"0004",
36
"bsart":"NB",
37
"belnr":"4500002427",
38
"recipnt_no":"0010300081"
39
},
40
"e1edk14":[
41
{
42
"qualf":"014",
43
"orgid":"1010"
44
},
45
{
46
"qualf":"009",
47
"orgid":"Z90"
48
},
49
{
50
"qualf":"013",
51
"orgid":"NB"
52
},
53
{
54
"qualf":"011",
55
"orgid":"1010"
56
}
57
],
58
"e1edk03":[
59
{
60
"iddat":"012",
61
"datum":"20210317"
62
},
63
{
64
"iddat":"011",
65
"datum":"20210321"
66
}
67
],
68
"e1edka1":[
69
{
70
"parvw":"AG",
71
"partn":"10100001",
72
"telf1":"770 840 9423",
73
"telfx":"770 840 9001",
74
"bname":"Purch. Grp for RM",
75
"paorg":"1010",
76
"orgtx":"Einkaufsorg. 1010",
77
"pagru":"Z90"
78
},
79
{
80
"parvw":"LF",
81
"partn":"0010300081",
82
"spras":"D",
83
"spras_iso":"DE"
84
},
85
{
86
"parvw":"WE",
87
"lifnr":"1010",
88
"name1":"concircle Werk 1",
89
"stras":"Wienerbergstraße 11",
90
"ort01":"Walldorf",
91
"pstlz":"69190",
92
"land1":"DE",
93
"spras":"D",
94
"spras_iso":"DE"
95
}
96
],
97
"e1edk02":[
98
{
99
"qualf":"001",
100
"belnr":"4500002427",
101
"datum":"20210317",
102
"uzeit":"192858"
103
}
104
],
105
"e1edp01":[
106
{
107
"posex":"00010",
108
"action":"001",
109
"pstyp":"0",
110
"menge":"1005.000",
111
"menee":"PCE",
112
"bmng2":"1005.000",
113
"pmene":"PCE",
114
"vprei":"0.1",
115
"peinh":"1",
116
"netwr":"100.5",
117
"matkl":"01",
118
"bpumn":"1",
119
"bpumz":"1",
120
"werks":"1010",
121
"lgort":"101B",
122
"e1edp20":[
123
{
124
"wmeng":"1005.000",
125
"ameng":"0.000",
126
"edatu":"20210317"
127
}
128
],
129
"e1edp19":[
130
{
131
"qualf":"002",
132
"idtnr":"CON_BOTTLE10300081",
133
"idtnr_long":"CON_BOTTLE10300081"
134
},
135
{
136
"qualf":"001",
137
"idtnr":"CON_BOTTLE",
138
"ktext":"Glassbottle 0,33 l",
139
"idtnr_long":"CON_BOTTLE"
140
}
141
],
142
"e1edpt1":[
143
{
144
"tdid":"BEST",
145
"tsspras":"D",
146
"tsspras_iso":"DE",
147
"e1edpt2":[
148
{
149
"tdline":"Glassbottle 0,33 l",
150
"tdformat":"*"
151
},
152
{
153
"tdformat":"/"
154
}
155
]
156
}
157
]
158
},
159
{
160
"posex":"00020",
161
"action":"001",
162
"pstyp":"0",
163
"menge":"10001.000",
164
"menee":"PCE",
165
"bmng2":"10001.000",
166
"pmene":"PCE",
167
"vprei":"0.01",
168
"peinh":"1",
169
"netwr":"100.01",
170
"matkl":"01",
171
"bpumn":"1",
172
"bpumz":"1",
173
"werks":"1010",
174
"lgort":"101B",
175
"e1edp20":[
176
{
177
"wmeng":"10001.000",
178
"ameng":"0.000",
179
"edatu":"20210317"
180
}
181
],
182
"e1edp19":[
183
{
184
"qualf":"002",
185
"idtnr":"CON_CAP10300081",
186
"idtnr_long":"CON_CAP10300081"
187
},
188
{
189
"qualf":"001",
190
"idtnr":"CON_CAP",
191
"ktext":"Cap",
192
"idtnr_long":"CON_CAP"
193
}
194
],
195
"e1edpt1":[
196
{
197
"tdid":"BEST",
198
"tsspras":"D",
199
"tsspras_iso":"DE",
200
"e1edpt2":[
201
{
202
"tdline":"Kronenkorken:",
203
"tdformat":"*"
204
},
205
{
206
"tdline":" in mm Toleranz in mm",
207
"tdformat":"/"
208
},
209
{
210
"tdline":"Innendurchmesser: 26,75 +0,15/−0,00",
211
"tdformat":"/"
212
},
213
{
214
"tdline":"Höhe: 6,00 ±0,15",
215
"tdformat":"/"
216
},
217
{
218
"tdline":"Außendurchmesser: 32,10 ±0,20",
219
"tdformat":"/"
220
},
221
{
222
"tdline":"Radius: 16,05 ±0,25",
223
"tdformat":"/"
224
},
225
{
226
"tdline":"Blechdicke: 0,20 ±0,02",
227
"tdformat":"/"
228
},
229
{
230
"tdformat":"/"
231
}
232
]
233
}
234
]
235
}
236
],
237
"e1eds01":[
238
{
239
"sumid":"002",
240
"summe":"200.51",
241
"sunit":"EUR"
242
}
243
]
244
}
245
}
246
}
247
EOF
248
249
> POST /api/v1/business_objects HTTP/1.1
250
> Host: proxy.provide.local
251
> User-Agent: curl/7.64.1
252
> Accept: */*
253
> authorization: bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwOjJlOmQ5OmUxOmI4OmEyOjM0OjM3Ojk5OjNhOjI0OmZjOmFhOmQxOmM4OjU5IiwidHlwIjoiSldUIn0.eyJhdWQiOiJodHRwczovL3Byb3ZpZGUuc2VydmljZXMvYXBpL3YxIiwiZXhwIjoxNjA5NDEwNjQ2LCJpYXQiOjE2MDkzMjQyNDYsImlzcyI6Imh0dHBzOi8vaWRlbnQucHJvdmlkZS5zZXJ2aWNlcyIsImp0aSI6ImU2NDg5M2I1LTYxMGItNGU3OC1hYjlmLTIzMjllZDBlMmJiNyIsIm5hdHMiOnsicGVybWlzc2lvbnMiOnsicHVibGlzaCI6eyJhbGxvdyI6WyJiYXNlbGluZS5cdTAwM2UiXX0sInN1YnNjcmliZSI6eyJhbGxvdyI6WyJ1c2VyLjE5NzMwZmJmLWQxNzgtNGEyZC1iMTM5LTBkZmIxYzRkYTY2OSIsIm5ldHdvcmsuKi5jb25uZWN0b3IuKiIsIm5ldHdvcmsuKi5zdGF0dXMiLCJwbGF0Zm9ybS5cdTAwM2UiLCJiYXNlbGluZS5cdTAwM2UiXX19fSwicHJ2ZCI6eyJwZXJtaXNzaW9ucyI6NDE1LCJ1c2VyX2lkIjoiMTk3MzBmYmYtZDE3OC00YTJkLWIxMzktMGRmYjFjNGRhNjY5In0sInN1YiI6InVzZXI6MTk3MzBmYmYtZDE3OC00YTJkLWIxMzktMGRmYjFjNGRhNjY5In0.dJVRiWhovrkFvFZ-n4g6hybhEg-raf-dvYOD2eQ8ajI-mUC8kxtZb56ibS-03rh5r5glrFXRCpWbJ74Eu0jFlKH5BPwzDve9WnDQn8Lr_NiaxwRGa3jYSnXMJbn6zGhzqhmiDr7f-7WlELp5e2bKkhIsGReyetgj-UIu8sl3hB6hT5ARh39BMY6fjNDyAlvvTGpMXz_Rr0T5b1JzAJaOOyYqeTqmYmOvxOFKj5RCk7KjOSpxLS23tiY_73NpkdbvtVOzPcvenWpxD0d00OWTbmVL-7Cwpa_NqDGwETi8kiiYPMyK3qgfCEKe1iQrBqUzIij2s68XUAVhaCikPpFpeR_PZnKZB9-9zN53VlFoDZyxx7WkKFzGy1Mj5eWXAcE81MlT6hXHM06ZyMj_yv8-8mZ41nfUPbyU9PdUlQsoFNz1rz_mCsUy6DeqIg5TS5I39Rpd8_E8VdsYb4BNILTlWQa-PbtKBDUN9wqq-tqigahG9JK2J2w7fTNQfqIAd1plrlQYzDKt178Mqd8lkF0G-uicartUHRxetUXlX-6YpiNphHPyrwuz38uggGBqPLbq4OlejWK2-oDYJMGcTpTVJk9qEk6JAbm148_i04OEfNtFbS9PRkj1_H5DyaaGWW_3R0nDZdlNz1Xm-ExLyGTwdqrJBb9lf1UbdRC-wtpMlOk
254
> content-type: application/json
255
> Content-Length: 5756
256
257
< HTTP/1.1 202 Accepted
258
< Access-Control-Allow-Credentials: true
259
< Access-Control-Allow-Headers: Accept, Accept-Encoding, Authorization, Cache-Control, Content-Length, Content-Type, Origin, User-Agent, X-CSRF-Token, X-Requested-With
260
< Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
261
< Access-Control-Allow-Origin: *
262
< Access-Control-Expose-Headers: X-Total-Results-Count
263
< Content-Type: application/json; charset=UTF-8
264
< Date: Sun, 21 Mar 2021 20:27:36 GMT
265
< Content-Length: 760
266
267
{
268
"baseline_id":"c5d21056-e57b-4b48-952a-7b4d7744b721",
269
"opcode":"BLINE",
270
"identifier":"b8538c97-3a58-4630-989c-8d6c8b952c14",
271
"type":"purchase_order",
272
"payload":{
273
"proof":"8342e73319b3c0dbd6cd935da978398b08a36c102cd5153f53798704e35ca48bd11ac301025920e8d671320dee51c3f249f7324ad454d04eaf9d3e78c1e2da1b0e3863d4c3bc565a6d5f2aa8939fa320d766ec4ead6faa0ea6fb60f2dec11673cf04b0fbb446ecb58d7daca25f5f5e01cb57739c0e51b46ad6407c82271bf2e7",
274
"witness":{
275
"hash":"8169236573172795384616430616538258193313854910896959691991736835318657720459",
276
"preimage":"2343895378470875963043295452477963095304343389810922809127692085811749511177"
277
}
278
}
279
}
Copied!

Response

Parameter
Description
baseline_id
the mapped external baseline identifier
identifier
the workflow identifier
opcode
baseline protocol opcode
type
type of the baselined record
payload
object containing the generated zero-knowledge proof and witness parameters
Note that the witness in the response payload will be different based on the workflow and workstep being executed.

Update Baselined Business Object

Documentation forthcoming.

Last modified 6mo ago