├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── TOMP-API.yaml
├── code_of_conduct.md
├── debug.log
├── documents
├── 191021 - Blueprint for a TO-MP API v1.1.pdf
├── 200301 - Blueprint for a TOMP API v1.2.pdf
├── 200715 - Blueprint for a TOMP-API version Dragonfly.pdf
├── 201005 - Blueprint for the TOMP-API–Version Dragonfly (1.0.0).pdf
├── CROW passenger characteristics V2.0.xlsx
├── CROW passenger characteristics.xlsx
├── CROW-traveler_characteristics_en.json
├── Connecting a MSP to the MaaS-NL-Router, version 1.0 (04102019).docx
├── Information document for testing parties within MaaS at Accept Institute V0.8.pdf
├── List of links and resources
├── MaaS functionalities and support of TOMP.xlsx
├── Report TOMP-API working group 80.pdf
├── Strategical committee.docx
├── TOMP-API Glossary V1.0.docx
├── TOMP-API_Payment Proposal_20191211.pdf
├── Woordenboek Reizigerskenmerken CROW.pdf
├── presentations
│ ├── 2024 06 26 Building the future of TOMP-API.pdf
│ ├── 20241107 - Feedback session III - OGC.pptx
│ ├── 230324 Technical and functional analusis of TOMP-API Duquesne.pptx
│ ├── 231025_TOMP_ Presentation_Data_Standardisation.pptx.pdf
│ ├── Architecture.png
│ ├── Authentication Questions.pptx
│ ├── CC-PR415-D015-1.1 CEN and EC RTD - intro presentation.pptx
│ ├── Presentation MaaS congress 2020 Ross, Pim, Bon.pptx
│ ├── Presentation Marktconsultation TOMP-API en.pptx
│ ├── Standardisation at work within CEN.pdf
│ ├── TOMP - Use case driven.pptx
│ ├── TOMP V2.0 proposal.pptx
│ ├── TOMP Working Team 2 Presentation v2.pptx
│ ├── TOMP governance 20230215 v2.4.pptx
│ ├── TOMP the big picture.pptx
│ ├── TOMP – WT6 20230426.pptx
│ └── TOMP-API - GBFS - availability.pptx
├── proposals
│ ├── Bluetooth opening lock process.pptx
│ ├── Support.pptx
│ ├── TOMP Intro.pptx
│ ├── Versioning.pptx
│ ├── authentication.pptx
│ ├── bluetooth.pptx
│ ├── payments.pptx
│ └── proposal tomp-api-1.1.1.pdf
└── working group reports
│ ├── 190529 Report TOMP-API working group 1.pdf
│ ├── 190612 Report TOMP-API working group 2.pdf
│ ├── 190626 Report TOMP-API working group 3.pdf
│ ├── 190710 Report TOMP-API working group 4.pdf
│ ├── 190724 Report TOMP-API working group 5.pdf
│ ├── 190801 Report TOMP-API results after 5 working group meetings.pdf
│ ├── 190807 Report TOMP-API working group 6.pdf
│ ├── 190821 Report TOMP-API working group 7.pdf
│ ├── 190904 Report TOMP-API working group 8.pdf
│ ├── 190918 Report TOMP-API working group 9.pdf
│ ├── 191002 Report TOMP-API working group 10.pdf
│ ├── 191016 Report TOMP-API results after 10 working group meetings.pdf
│ ├── 191016 Report TOMP-API working group 11.pdf
│ ├── 191030 Report TOMP-API working group 12.pdf
│ ├── 191113 Report TOMP-API working group 13.pdf
│ ├── 191127 Report TOMP-API working group 14.pdf
│ ├── 191211 Report TOMP-API working group 15.pdf
│ ├── 200108 Report TO-MP API working group 16.pdf
│ ├── 200122 Report TOMP-API working group 17.pdf
│ ├── 200205 Report TOMP-API working group 18.pdf
│ ├── 200219 Report TOMP-API working group 19.pdf
│ ├── 200304 Report TOMP-API results after 20 working group meetings.pdf
│ ├── 200304 Report TOMP-API working group 20.pdf
│ ├── 200318 Report TOMP-API working group 21.pdf
│ ├── 200401 Report TOMP-API working group 22.pdf
│ ├── 200415 Report TOMP-API working group 23.pdf
│ ├── 200429 Report TOMP-API working group 24.pdf
│ ├── 200513 Report TOMP-API working group 25.pdf
│ ├── 200527 Report TOMP-API working group 26.pdf
│ ├── 200610 Report TOMP-API working group 27.pdf
│ ├── 200624 Report TOMP-API working group 28.pdf
│ ├── 200708 Report TOMP-API working group 29.pdf
│ ├── 200805 Report TOMP-API working group 30.pdf
│ ├── 200819 Report TOMP-API results after 30 working group meetings.pdf
│ ├── 200819 Report TOMP-API working group 31.pdf
│ ├── 200902 Report TOMP-API working group 32.pdf
│ ├── 200916 Report TOMP-API working group 33.pdf
│ ├── 200930 Report TOMP-API working group 34.pdf
│ ├── 201014 Report TOMP-API working group 35.pdf
│ ├── 201028 Report TOMP-API working group 36.pdf
│ ├── 201111 Report TOMP-API working group 37.pdf
│ ├── 201125 Report TOMP-API working group 38.pdf
│ ├── 201209 Report TOMP-API working group 39.pdf
│ ├── 210120 Report TOMP-API working group 40.pdf
│ ├── 210203 Report TOMP-API working group 41.pdf
│ ├── 210217 Report TOMP-API working group 42.pdf
│ ├── 210303 Report TOMP-API working group 43.pdf
│ ├── 210324 Report TOMP-API working group 44.pdf
│ ├── 210414 Report TOMP-API working group 45.pdf
│ ├── 210428 Report TOMP-API working group 46.pdf
│ ├── 210512 Report TOMP-API working group 47.pdf
│ ├── 210526 Report TOMP-API working group 48.pdf
│ ├── 210609 Report TOMP-API working group 49.pdf
│ ├── 210623 Report TOMP-API working group 50.pdf
│ ├── 210707 Report TOMP-API working group 51.pdf
│ ├── 210901 Report TOMP-API working group 52.pdf
│ ├── 210915 Report TOMP-API working group 53.pdf
│ ├── 210929 Report TOMP-API working group 54.pdf
│ ├── 211013 Report TOMP-API working group 55.pdf
│ ├── 211027 Report TOMP-API working group 56.pdf
│ ├── 211110 Report TOMP-API working group 57.pdf
│ ├── 211124 Report TOMP-API working group 58.pdf
│ ├── 211208 Report TOMP-API working group 59.pdf
│ ├── 211222 Report TOMP-API working group 60.pdf
│ ├── 220119 Report TOMP-API working group 61.pdf
│ ├── 220202 Report TOMP-API working group 62.pdf
│ ├── 220323 Report TOMP-API working group 63.pdf
│ ├── 220420 Report TOMP-API working group 64.pdf
│ ├── 220525 Report TOMP-API working group 65.pdf
│ ├── 220622 Report TOMP-API working group 66.pdf
│ ├── 220727 Report TOMP-API working group 67.pdf
│ ├── 220824 Report TOMP-API working group 68.pdf
│ ├── 220928 Report TOMP-API working group 69.pdf
│ ├── 221026 Report TOMP-API working group 70.pdf
│ ├── 221123 Report TOMP-API working group 71.pdf
│ ├── README
│ ├── Report TOMP-API Working group 74.docx
│ ├── Report TOMP-API Working group 78.pdf
│ ├── Report TOMP-API Working group 88.pdf
│ ├── Report TOMP-API working group 72.pdf
│ ├── Report TOMP-API working group 73.pdf
│ ├── Report TOMP-API working group 75.pdf
│ ├── Report TOMP-API working group 76.docx
│ ├── Report TOMP-API working group 77.pdf
│ ├── Report TOMP-API working group 79.pdf
│ ├── Report TOMP-API working group 81.pdf
│ ├── Report TOMP-API working group 82.pdf
│ ├── Report TOMP-API working group 83.pdf
│ ├── Report TOMP-API working group 84.pdf
│ ├── Report TOMP-API working group 85.pdf
│ ├── Report TOMP-API working group 86.pdf
│ ├── Report TOMP-API working group 87.pdf
│ ├── Report of TOMP-API Working group 89.pdf
│ ├── Report of TOMP-API working group 90 .pdf
│ └── Report of TOMP-API working group 91 .pdf
├── example-output
└── bike-operator-free-floating
│ ├── explanation.md
│ ├── information.json
│ ├── meta.json
│ ├── pricing-plans.json
│ └── regions.json
├── plantuml
├── Booking
│ ├── default.plantuml
│ ├── postponed-commit.plantuml
│ └── to-booking-leg.plantuml
├── OperatorInformation
│ └── default.plantuml
├── Payment
│ └── default.plantuml
├── Planning
│ ├── book-and-go.plantuml
│ ├── book-from-map.plantuml
│ └── planned-trip.plantuml
├── Support
│ └── default.plantuml
├── TripExecution
│ ├── change-leg.plantuml
│ ├── finish-asset-by-TO.plantuml
│ ├── finish-asset-by-app.plantuml
│ ├── open-asset-by-TO.plantuml
│ ├── open-asset-by-app.plantuml
│ ├── pause-asset-by-TO.plantuml
│ ├── pause-asset-by-app.plantuml
│ ├── progress.plantuml
│ └── to-controlled.plantuml
├── booking-process-activity-diagram.plantuml
├── objectmodel-booking-commit.plantuml
├── objectmodel-booking-post.plantuml
├── objectmodel-planning.plantuml
├── objectmodel
│ ├── asset.plantuml
│ ├── assetType.plantuml
│ ├── booking.plantuml
│ ├── bookingOperation.plantuml
│ ├── bookingRequest.plantuml
│ ├── condition.plantuml
│ ├── customer.plantuml
│ ├── details
│ │ ├── assetType.plantuml
│ │ ├── booking.plantuml
│ │ ├── bookingOperation.plantuml
│ │ ├── bookingRequest.plantuml
│ │ ├── condition.plantuml
│ │ ├── customer.plantuml
│ │ ├── leg.plantuml
│ │ ├── meta.plantuml
│ │ ├── operator.plantuml
│ │ ├── payment.plantuml
│ │ ├── place.plantuml
│ │ ├── planning.plantuml
│ │ ├── planningRequest.plantuml
│ │ └── token.plantuml
│ ├── leg.plantuml
│ ├── meta.plantuml
│ ├── operations.plantuml
│ ├── operator.plantuml
│ ├── overview.plantuml
│ ├── payment.plantuml
│ ├── place.plantuml
│ ├── planning.plantuml
│ ├── planningRequest.plantuml
│ ├── support.plantuml
│ ├── token.plantuml
│ ├── traveler.plantuml
│ └── travelright.plantuml
├── planned-trip-activity-diagram.plantuml
├── postponed-booking-process-activity-diagram.plantuml
└── readme.md
└── styleguide.md
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report / change request
3 | about: Use this template to report a bug in the current API or is your want to see a small change. Do not use this template for new features or anything else.
4 | title: "[BUG] or [CHANGE REQUEST] "
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## API Version
11 |
12 |
13 | ## Summary
14 |
15 |
16 | ## Expected Behavior
17 |
18 |
19 | ## Current Behavior
20 |
21 |
22 | ## Possible Solution
23 |
24 |
25 | ## Steps to Reproduce
26 |
27 |
28 |
29 | 1.
30 | 2.
31 | 3.
32 | 4.
33 |
34 | ## Context (Environment)
35 |
36 |
37 |
38 | ## Detailed Description
39 |
40 |
41 | ## Possible Implementation
42 |
43 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest a new feature for the TOMP-API. Do not use this template for bug reports, only for new aspects! If you want to change existing functionality, please use a bug report / change request.
4 | title: "[FEATURE REQUEST] "
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ## Is your feature request related to a problem? Please describe.
11 |
12 |
13 | ## Urgency
14 |
15 |
16 |
17 |
18 |
19 | ## Additional context
20 |
21 |
22 | ## Describe the solution you'd like
23 |
24 |
25 | ## Describe alternatives you've considered
26 |
27 |
28 | ## Possible Implementation
29 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | ## How to contribute to the TOMP-API
2 |
3 | #### **Did you find a bug?** 👾
4 |
5 | * 🔍 **Ensure the bug was not already reported** by searching on GitHub under [Issues](https://github.com/TOMP-WG/TOMP-API/issues).
6 |
7 | * 😒 If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/TOMP-WG/TOMP-API/issues/new). Be sure to complete the template, include a **title and clear description**, as much relevant information as possible, and the expected behavior that is not occurring.
8 | Please, if it's possible, also include who is the MP and who is the TO (or TOs).
9 |
10 | * 📨 You'll be contacted soon (when we know your email address), or you will receive an email from github from Working Team 1 (WT1), possibly asking for more context or clarification.
11 |
12 | * 🗳️ Currently, there is no voting process, but there might be one later on.
13 |
14 | * 👉 The issue will be assigned to a version (might be a patch, when required). You'll be notified when the issue is picked up by WT1, they will create a solution in a pull request.
15 | **OR** you can create your own proposal and create a pull request, WT1 will assign a version later on and inform you.
16 |
17 | * ❗ WT1 will create a PR (or possibly modify the existing one) for the issue. Once it's a PR, it can already be used in peer-2-peer solutions.
18 |
19 | * 🤼 Please report the parties who have implemented it to test, so we can proof it's a confirmed working solution.
20 |
21 | * When releasing a new version (or patch), you'll be notified that your issue is merged in the new version.
22 |
23 | #### **Do you want to contribute?** 🦄
24 |
25 | * Send an email to tomp-secretary@maas-alliance.eu, with the expertise you have (operating certain modes, specifying APIs, selling the idea of a common language for all), and we'll come back to you.
26 |
27 | * Supporting the "House of TOMP" (the supporting AISBL, in formation)? Again, contact the tomp-secretary@maas-alliance.eu, until we'll have a registration page.
28 |
29 | Thanks! 💕
30 |
31 | __The TOMP Working groups__
32 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
TOMP-API development Github
2 | ===
3 |
4 | "TOMP" is an abbreviation of Transport Operator - MaaS Provider. It is a technical communication language, designed to facilitate the operational process between the Transport Operator (like bike, shared car, scooter, _and_ public transport operator) and the MaaS Providers (also known as resellers, mobility providers, etc).
5 |
6 | The TOMP working group aims to develop and sustain an internationally governed interoperable open standard for technical communication between Transport Operators and MaaS Providers, by means of definition, improvement, alignment and dissemination.
7 |
8 | I need help, where can I find it? / How do I start implementing TOMP?
9 | ---
10 |
11 | If you need help with your TOMP-integration as a Transport Operator or a MaaS-Provider, use the following channels:
12 |
13 | 1. First look at the [Wiki](https://github.com/TOMP-WG/TOMP-API/wiki), a lot of flows are described there. The wiki relates to the latest API-version.
14 | 2. If you have any questions regarding TOMP or how to implement it, please find us in Slack. There are a lot of developers there that can help you. Slack is a chat tool and very easy to use.
15 |
16 | Where can I find the API-documentation?
17 | ---
18 |
19 | OpenAPI 3.0 documentation is available at [Swaggerhub](https://app.swaggerhub.com/apis-docs/TOMP-API-WG/transport-operator_maas_provider_api/).
20 |
21 | The Blueprint for an Transport Operator to Mobility-as-a-service Provider API is available at the [documentation page](https://github.com/TOMP-WG/TOMP-API/tree/master/documents).
22 |
23 | How can I join the TOMP working group?
24 | ---
25 |
26 | Join our [Slack space](https://join.slack.com/t/tomp-wg/shared_invite/zt-2wlthgcar-kHnS4XzAvoWuqnznqcHl~g) or contact Jed (tomp-secretary@maas-alliance.eu) to be added to our mailing list and to receive invites for the working group meetings.
27 |
28 | The working group meetings take place every month with the goal to develop and specify a generic TOMP-API for use by Transport Operators and Mobility-as-a-service Providers. All reports can be found at the [documentation page](https://github.com/TOMP-WG/TOMP-API/tree/master/documents/working%20group%20reports).
29 |
30 | How can I contribute?
31 | ---
32 |
33 | Please read our [Contributing.md](https://github.com/TOMP-WG/TOMP-API/blob/master/CONTRIBUTING.md)
34 |
35 | Code of conduct
36 | ---
37 |
38 | Our [code of conduct](https://github.com/TOMP-WG/TOMP-API/blob/master/code_of_conduct.md) is here!
39 | [](code_of_conduct.md)
40 |
--------------------------------------------------------------------------------
/code_of_conduct.md:
--------------------------------------------------------------------------------
1 | Transport Operator Mobility-as-a-service Provider (TOMP) API development Github
2 | ===
3 |
4 | The TOMP working group aims to develop and sustain an internationally governed interoperable open standard for technical communication between Transport Operators and MaaS Providers, by means of definition, improvement, alignment and dissemination.
5 |
6 | I need help, where can I find it? / How do I start implementing TOMP?
7 | ---
8 |
9 | If you need help with your TOMP-integration as a Transport Operator or a MaaS-Provider, use the following channels:
10 |
11 | 1. First look at the [Wiki](https://github.com/TOMP-WG/TOMP-API/wiki), a lot of flows are described there. The wiki relates to the latest API-version.
12 | 2. If you have any questions regarding TOMP or how to implement it, please find us in Slack. There are a lot of developers there that can help you. Slack is a chat tool and very easy to use. Use this link to join our [Slack space](https://join.slack.com/t/tomp-wg/shared_invite/zt-e3fftun7-qCs8FyXZPPy9pt_opyFw0Q).
13 |
14 | Where can I find the API-documentation?
15 | ---
16 |
17 | OpenAPI 3.0 documentation is available at [Swaggerhub](https://app.swaggerhub.com/apis-docs/TOMP-API-WG/transport-operator_maas_provider_api/).
18 |
19 | The Blueprint for an Transport Operator to Mobility-as-a-service Provider API is available at the [documentation page](https://github.com/TOMP-WG/TOMP-API/tree/master/documents).
20 |
21 | How can I join the TOMP working group?
22 | ---
23 |
24 | Join our [Slack space](https://join.slack.com/t/tomp-wg/shared_invite/zt-e3fftun7-qCs8FyXZPPy9pt_opyFw0QPlease) or contact Ayse (aysehilal.ocal@ndw.nu) to be added to our mailing list and to receive invites for the working group meetings.
25 |
26 | The working group meetings take place every month with the goal to develop and specify a generic TOMP-API for use by Transport Operators and Mobility-as-a-service Providers. All reports can be found at the [documentation page](https://github.com/TOMP-WG/TOMP-API/tree/master/documents/working%20group%20reports).
27 |
28 | Code of conduct
29 | ---
30 |
31 | [Our code of conduct](https://github.com/TOMP-WG/TOMP-API/blob/master/code_of_conduct.md) [](code_of_conduct.md)
32 |
33 |
34 |
35 | =======
36 | # Contributor Covenant Code of Conduct
37 |
38 | ## Our Pledge
39 |
40 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
41 |
42 | ### Vision
43 |
44 | Effortless mobility for everyone
45 |
46 | ### Mission
47 |
48 | The TOMP working group aims to develop and sustain an internationally governed interoperable open standard for technical communication between Transport Operators and MaaS Providers, by means of definition, improvement, alignment and dissemination.
49 |
50 | ## Our behavior
51 |
52 | We welcome everyone who wants to get involved in developing the TOMP-API, the open standard for technical communication between Transport Operators and MaaS Service Providers, aka resellers. But we want you to respect other community members and their viewpoints, always look for the best solution for the traveler.
53 |
54 | Examples of behavior that contributes to creating a positive environment include:
55 |
56 | * Using welcoming and inclusive language.
57 | * Being respectful of differing viewpoints and experiences.
58 | * Gracefully accepting constructive criticism.
59 | * Focusing on what is best for the community.
60 | * Showing empathy towards other community members.
61 |
62 | So, we don't allow:
63 |
64 | * The use of sexualized language or imagery and unwelcome sexual attention or advances
65 | * Trolling, insulting/derogatory comments, and personal or political attacks
66 | * Public or private harassment
67 | * Publishing others' private information, such as a physical or electronic address, without explicit permission
68 | * Other conduct which could reasonably be considered inappropriate in a professional setting, although we're volunteers.
69 |
70 | ## Our Responsibilities
71 |
72 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
73 |
74 | Project maintainers have the right and responsibility to remove, edit, orreject comments, commits, code, wiki edits, issues, and other contributions
75 | that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate,
76 | threatening, offensive, or harmful.
77 |
78 | ## Scope
79 |
80 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of
81 | representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed
82 | representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
83 |
84 | ## Enforcement
85 |
86 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at aysehilal.ocal@ndw.nu. All
87 | complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is
88 | obligated to maintain confidentiality with regard to the reporter of an incident.
89 | Further details of specific enforcement policies may be posted separately.
90 |
91 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other
92 | members of the project's leadership.
93 |
94 | ## Attribution
95 |
96 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
97 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
98 |
99 | [homepage]: https://www.contributor-covenant.org
100 |
--------------------------------------------------------------------------------
/debug.log:
--------------------------------------------------------------------------------
1 | [0510/083834.283:ERROR:registration_protocol_win.cc(102)] CreateFile: The system cannot find the file specified. (0x2)
2 |
--------------------------------------------------------------------------------
/documents/191021 - Blueprint for a TO-MP API v1.1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/191021 - Blueprint for a TO-MP API v1.1.pdf
--------------------------------------------------------------------------------
/documents/200301 - Blueprint for a TOMP API v1.2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/200301 - Blueprint for a TOMP API v1.2.pdf
--------------------------------------------------------------------------------
/documents/200715 - Blueprint for a TOMP-API version Dragonfly.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/200715 - Blueprint for a TOMP-API version Dragonfly.pdf
--------------------------------------------------------------------------------
/documents/201005 - Blueprint for the TOMP-API–Version Dragonfly (1.0.0).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/201005 - Blueprint for the TOMP-API–Version Dragonfly (1.0.0).pdf
--------------------------------------------------------------------------------
/documents/CROW passenger characteristics V2.0.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/CROW passenger characteristics V2.0.xlsx
--------------------------------------------------------------------------------
/documents/CROW passenger characteristics.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/CROW passenger characteristics.xlsx
--------------------------------------------------------------------------------
/documents/CROW-traveler_characteristics_en.json:
--------------------------------------------------------------------------------
1 | {
2 | "categories": {
3 | "HR": {
4 | "code": "HR",
5 | "type": "Category",
6 | "categorie": "Passenger aids"
7 | },
8 | "HV": {
9 | "code": "HV",
10 | "type": "Category",
11 | "categorie": "Vehicle aids"
12 | },
13 | "AV": {
14 | "code": "AV",
15 | "type": "Category",
16 | "categorie": "Secondary demands – transportation"
17 | },
18 | "AB": {
19 | "code": "AB",
20 | "type": "Category",
21 | "categorie": "Secondary demands – supervision"
22 | },
23 | "AER": {
24 | "code": "AER",
25 | "type": "Category",
26 | "categorie": "Secondary demands – Extra passenger"
27 | },
28 | "K": {
29 | "code": "K",
30 | "type": "Category",
31 | "categorie": "Characteristics"
32 | },
33 | "ZR": {
34 | "code": "ZR",
35 | "type": "Category",
36 | "categorie": "(accompanied) Independant travel"
37 | },
38 | "RR": {
39 | "code": "RR",
40 | "type": "Category",
41 | "categorie": "Travel rights"
42 | }
43 | },
44 | "codes": {
45 | "HR-01": {
46 | "code": "HR-01",
47 | "name": "Wheelchair - standard",
48 | "feature": "Wheelchair in which the passenger remains seated during transport.\n– Type 'non-electrical' and 'responsibly lockable'.\n– Complies with VVR code.\n– Maximum width of 90 cm.",
49 | "explanation": "The carrier must transport the passenger safely and responsibly in the wheelchair. This means that this wheelchair complies with the new VVR code. There are hook symbols on the wheelchair. Note: If these are not included, the municipality must consult with the auxiliary supplier.",
50 | "remarks": "",
51 | "link": "http://www.r82.nl/media/660247/code_vvr.pdf"
52 | },
53 | "HR-02": {
54 | "code": "HR-02",
55 | "name": "Wheelchair - electric",
56 | "feature": "Wheelchair in which the passenger remains seated during transport.\n– Type 'electrical' and 'responsibly lockable'.\n– Complies with VVR code.\n– Maximum 90 cm wide.\n– Maximum weight requirement according to the vehicle.",
57 | "explanation": "For the carrier, this may mean excluding the use of ramps and specific vehicles.",
58 | "remarks": "",
59 | "link": "http://www.r82.nl/media/660247/code_vvr.pdf"
60 | },
61 | "HR-03": {
62 | "code": "HR-03",
63 | "name": "Wheelchair - foldable",
64 | "feature": "Wheelchair passenger that can transfer into the car him/herself.\n– Passenger can be transported by bus or passenger car; unless also the attribute AV-02 'must be in' (wheelchair) bus' is given.\n– Passenger can be transported in a vehicle without lowered access.",
65 | "explanation": "Passenger may not remain seated in the collapsible wheelchair during transportation.",
66 | "remarks": "",
67 | "link": ""
68 | },
69 | "HR-04": {
70 | "code": "HR-04",
71 | "name": "Wheelchair - not secure with person in it",
72 | "feature": "Wheelchair where the passenger him/herself makes a transfer to a car seat.\n– Passenger takes place in a car seat.\n– Wheelchair cannot be 'responsibly secured' and is often not foldable.",
73 | "explanation": "Carrier offers a seat and space for a loose wheelchair. In some cases it concerns a sports wheelchair (not collapsible). These wheelchairs are often light, or made for a specific sport. HR-04 also includes a Handbike: this is an extra addition to a (sports) wheelchair, often not suitable for transport and often not collapsible.",
74 | "remarks": "",
75 | "link": ""
76 | },
77 | "HR-05": {
78 | "code": "HR-05",
79 | "name": "Wheelchair - self balancing two-wheeler",
80 | "feature": "Wheelchair (two-wheeler) where the passenger him/herself makes a transfer to a car seat.\n– Type 'not responsible lockable'.\n– Applies as baggage.\n– In connection with weight (Arbo) not liftable.",
81 | "explanation": "Carrier provides a seat and space for a separate wheelchair. \nExamples: Segway wheelchair or Genny.",
82 | "remarks": "",
83 | "link": ""
84 | },
85 | "HR-06": {
86 | "code": "HR-06",
87 | "name": "Wheelchair - divergent",
88 | "feature": "Wheelchair where the passenger during the transport remains seated.\n– Type 'deviant'.\n– May not meet VVR code.\n– At least 91 cm wide and/or with excellent parts.\n– Memo field explanation needed for carrier, such as 'leg forward' or passenger will/will not remain in a wheelchair.\n– Maximum weight that is allowed for the ramp and vehicle; if this wheelchair exceeds the values, then the driver must refuse the passenger.",
89 | "explanation": "The memo field indicates what the deviation is so that the carrier knows beforehand. Carrier then knows which specific combinations or vehicles are not possible.",
90 | "remarks": "",
91 | "link": ""
92 | },
93 | "HR-07": {
94 | "code": "HR-07",
95 | "name": "Rollator - or walker",
96 | "feature": "passenger is dependent on rollator/walker.\n– the aid must be transported securely.",
97 | "explanation": "The carrier transports the rollator/walker as well. This is transported securely.",
98 | "remarks": "",
99 | "link": ""
100 | },
101 | "HR-08": {
102 | "code": "HR-08",
103 | "name": "Rollator - divergent",
104 | "feature": "Rollator with attachments that can influence the required means of transport.\n– Memo field explanation needed for carrier with description of the fittings.",
105 | "explanation": "The memo field indicates what the deviation is so that the carrier know beforehand.",
106 | "remarks": "",
107 | "link": ""
108 | },
109 | "HR-09": {
110 | "code": "HR-09",
111 | "name": "Scooter - standard",
112 | "feature": "Mobility scooter in which the passenger him/herself makes the transfer to a car seat.\n– Structural aid (note: if the scooter is occasionally taken, apply H11 'variable aid' characteristic).\n– Maximum 90 cm wide and 150 cm long.\n– Passenger seat and space for scooter required in vehicle.",
113 | "explanation": "The carrier must refuse the passenger if the transfer to a seat cannot be made (required by law).\n\nCan the passenger not make a transfer? Then the operator/planner refers the passenger to alternative transport:\n for example a scooter is allowed under certain conditions in the train.",
114 | "remarks": "",
115 | "link": ""
116 | },
117 | "HR-10": {
118 | "code": "HR-10",
119 | "name": "Scooter - divergent",
120 | "feature": "Mobility scooter in which the passenger him/herself makes the transfer to a car seat.\n– Structural aid (note: if the scooter is occasionally included, then H-11 'variable aid' attribute).\n– At least 90 cm wide and/or longer than 150 cm.\n– Passenger seat and space for scooter required in vehicle.\n– Memo field explanation needed for carrier.",
121 | "explanation": "In the memo field the deviation is indicated, so that the carrier knows this in advance. The carrier then knows which \r\nspecific combinations or vehicles are not possible. \n\nThe carrier must refuse the passenger if the transfer to a seat cannot be made (required by law).\n\nCan the passenger not make a transfer? Then the operator/planner refers the passenger to alternative transport:\n for example a scooter is allowed under certain conditions in the train.",
122 | "remarks": "",
123 | "link": "http://www.r82.nl/media/660247/code_vvr.pdf"
124 | },
125 | "HR-11": {
126 | "code": "HR-11",
127 | "name": "variable aid",
128 | "feature": "Passenger travels with an aid.\n– Assign attribute as not always the same tool is included.\n– The person who takes the ride order always asks which aid is included in that ride.",
129 | "explanation": "The memo field must indicate which aids can be transported. The planner indicates in the memo field for the driver which aid is included in that journey.\n\nHR-11 also includes an oxygen bottle. Please note: does the passenger use an oxygen bottle? This is not always permitted by law. Make additional agreements about this with the carrier.",
130 | "remarks": "",
131 | "link": ""
132 | },
133 | "HR-12": {
134 | "code": "HR-12",
135 | "name": "Support dog",
136 | "feature": "Passenger travels with a guide or assistance dog.\n– Passenger and dog seat required in vehicle.",
137 | "explanation": "",
138 | "remarks": "",
139 | "link": ""
140 |
141 | },
142 |
143 | "HV-01": {
144 | "code": "HV-01",
145 | "name": "Seatbelt - exemption",
146 | "feature": "Passenger is not required to wear a seat belt.\n– Required: exemption from CBR (see www.cbr.nl).",
147 | "explanation": "The passenger must include the exemption when applying for target group transport. The passenger must – if the driver requests this – show the exemption. If the passenger cannot show this, the driver will refuse the transport.",
148 | "remarks": "",
149 | "link": "www.cbr.nl"
150 | },
151 | "HV-02": {
152 | "code": "HV-02",
153 | "name": "Seatbelt - extension",
154 | "feature": "Due to his posture, the passenger needs a seat belt extension.\n– The passenger himself provides an extra long belt or 'extension'.",
155 | "explanation": "The passenger must bring an extension himself, unless other agreements have been made between the indication provider and the carrier (contract or appointment register). If this is the case, this must be indicated in a memo field.",
156 | "remarks": "",
157 | "link": ""
158 | },
159 | "HV-03": {
160 | "code": "HV-03",
161 | "name": "Seat - raised chair",
162 | "feature": "Passenger requires a booster seat.\n– The carrier provides the booster seat.",
163 | "explanation": "Carrier delivers the booster seat. Please note: contract agreements with the carrier indicate who pays this (the carrier or the indication provider).",
164 | "remarks": "",
165 | "link": ""
166 | },
167 | "HV-04": {
168 | "code": "HV-04",
169 | "name": "Seat - child seat category 1",
170 | "feature": "Passenger uses category 1 child seat (9 to 18 kg).\n– The child seat has a 5-point belt.\n– The carrier provides the child seat.",
171 | "explanation": "Carrier provides the child seat with 5-point belt. Please note: contract agreements with the carrier indicate who pays this (the carrier or the indication provider).",
172 | "remarks": "",
173 | "link": ""
174 | },
175 | "HV-05": {
176 | "code": "HV-05",
177 | "name": "Transfer wheelchair",
178 | "feature": "Passenger must use a transfer wheelchair. Passenger cannot make the transfer. A 'seated entry' will have to be used.\n– The carrier provides the transfer wheelchair.",
179 | "explanation": "Carrier provides the transfer wheelchair. Please note: contract agreements with the carrier indicate who pays for this (the carrier or the indication provider).",
180 | "remarks": "",
181 | "link": ""
182 | },
183 |
184 | "AV-01": {
185 | "code": "AV-01",
186 | "name": "Transportation - Individual",
187 | "feature": "Passenger is not capable of traveling with others.\n– Carrier may not combine the passenger with other passengers.",
188 | "explanation": "Passenger travels only with the driver.\nThis is a characteristic that is only assigned in special cases.",
189 | "remarks": "",
190 | "link": ""
191 | },
192 | "AV-02": {
193 | "code": "AV-02",
194 | "name": "Transportation - in (wheelchair) bus",
195 | "feature": "Passenger cannot be transported in a passenger car.\n– Must be transported in a (wheelchair) bus.",
196 | "explanation": "Passenger has limitations in the musculoskeletal system. It could be that passenger needs a transfer wheelchair has (HV-05). With a folding wheelchair, this feature may be necessary, in order to transfer to a seat.",
197 | "remarks": "",
198 | "link": ""
199 | },
200 | "AV-03": {
201 | "code": "AV-03",
202 | "name": "Transportation - last in / first out",
203 | "feature": "Passenger is 'limited taxable' in time. Or the passenger must be removed from care/supervision for as short a time as possible.",
204 | "explanation": "Note: Other passengers who share a means of transport may have to make additional detours as a result.\n\nThe operator/planner must inform passengers about extra detour times (don't give a reason for privacy reasons).",
205 | "remarks": "",
206 | "link": ""
207 | },
208 | "AV-04": {
209 | "code": "AV-04",
210 | "name": "Transportation - when private car, front seat",
211 | "feature": "Passenger can be transported in both a bus and a passenger car.\n– Is a passenger car used? Then this person should sit in the front.",
212 | "explanation": "Passenger has limitations in the musculoskeletal system or suffers from an extreme form of motion sickness (which cannot be solved with medication). \n\nIs the reason carsickness? Then a medical certificate is required. The indicator counter is advised to view the fleet. Current vehicles have more legroom in the rear, whereby the 'front' indication only needs to be used in special cases.",
213 | "remarks": "",
214 | "link": ""
215 | },
216 | "AV-05": {
217 | "code": "AV-05",
218 | "name": "Transportation - in private car",
219 | "feature": "Passenger cannot be transported in a (wheelchair) bus, but can be transported in a passenger car.",
220 | "explanation": "Passengers can take a seat in a (wheelchair) bus using a transfer wheelchair. This indication is\nusually not issued for a low entry.\n\nA medical certificate is required to issue this indication.",
221 | "remarks": "",
222 | "link": ""
223 | },
224 | "AV-06": {
225 | "code": "AV-06",
226 | "name": "Transportation - front seat and in private car",
227 | "feature": "Passenger must be in the front and cannot be transported in a bus.",
228 | "explanation": "Passenger has and/or:\n- Musculoskeletal limitations\n- Suffers from an extreme form of motion sickness (cannot be solved with medication). Is the reason carsickness? Then a medical certificate is required.\n- Other reasons that require passenger to sit in this place.",
229 | "remarks": "",
230 | "link": ""
231 | },
232 | "AV-07": {
233 | "code": "AV-07",
234 | "name": "Transportation - front seat, regardless of vehicle",
235 | "feature": "Passenger must be transported in the front.",
236 | "explanation": "Passenger has and/or:\n- Musculoskeletal limitations\n- Suffers from an extreme form of motion sickness (cannot be solved with medication). Is the reason carsickness? Then a medical certificate is required.\n- Other reasons that require passenger to sit in this place.",
237 | "remarks": "",
238 | "link": ""
239 | },
240 | "AV-08": {
241 | "code": "AV-08",
242 | "name": "Transportation - low access",
243 | "feature": "Passenger has a limitation that requires a low entry.\n– Please note: boarding via the lift (whether or not on the driver's arm) is not allowed.",
244 | "explanation": "Note: there is no definition of a 'low entry'. This depends on the carrier's fleet (contract agreements). In some cases a step is required.",
245 | "remarks": "",
246 | "link": ""
247 | },
248 | "AV-09": {
249 | "code": "AV-09",
250 | "name": "Transportation - combination with other, except...",
251 | "feature": "Passenger can be combined with others, but not with a number of specific persons.\n– Memo field explanation required for carrier (names with whom may not be combined).",
252 | "explanation": "Ex. pupils can travel together with others, but not with all children due to quarrels or other unrest.",
253 | "remarks": "",
254 | "link": ""
255 | },
256 | "AV-10": {
257 | "code": "AV-10",
258 | "name": "Transportation - cannot come with other Targetgroup",
259 | "feature": "Passenger cannot be combined with other transport flows. It can therefore be combined with other passengers within its own transport flow.\n– Memo field explanation required for carrier with transport flows that may not be combined.",
260 | "explanation": "Transport flows: example Social Support Act, student transport, gym transport - daytime activities.",
261 | "remarks": "",
262 | "link": ""
263 | },
264 | "AV-11": {
265 | "code": "AV-11",
266 | "name": "Transportation - short travel time",
267 | "feature": "Maximum travel time applies to passengers.\n– The maximum travel time is determined by the indication counter, on the advice of an advisor.\n– This travel time deviates from contract agreements.",
268 | "explanation": "In exceptional cases and only on the advice of an independent advisor, municipalities can assign this characteristic to travelers (eg students with serious behavioural problems). The maximum allowed travel time is shortened compared to the maximum travel time established in the contract with the carrier. The passenger can be combined, only not for the contractually determined travel time.",
269 | "remarks": "",
270 | "link": ""
271 | },
272 | "AV-12": {
273 | "code": "AV-12",
274 | "name": "separate seat",
275 | "feature": "Passenger may not sit directly next to other passenger; there must be space in between. If 2 chairs with a walkway space between them are next to each other, this is possible. Together on a bench or 2 chairs and shoulder to shoulder is not possible.",
276 | "explanation": "",
277 | "remarks": "",
278 | "link": ""
279 | },
280 | "AB-01": {
281 | "code": "AB-01",
282 | "name": "Supervision - room to room",
283 | "feature": "Passenger is collected by the driver from the front door of his/her room/apartment. And the driver accompanies him/her to the front door of the room/apartment. Unless transfer is possible and agreed upon.",
284 | "explanation": "Passenger needs to be taken from his/her room (often in an institution/hospital) to another room (often in an institution/hospital). Driver is responsible for escorting within a building to the correct interior door.",
285 | "remarks": "",
286 | "link": ""
287 | },
288 | "AB-02": {
289 | "code": "AB-02",
290 | "name": "Supervision - door to door",
291 | "feature": "Passenger is picked up by the driver at the front door of the building. And the driver escorts to the front door of destination. This can be the central hall.",
292 | "explanation": "Applicable in exceptional cases:\r\n- 'danger of falling' of the passenger.\r\n- The passenger cannot be found and/or the passenger cannot find the taxi or front door.",
293 | "remarks": "",
294 | "link": ""
295 | },
296 | "AB-03": {
297 | "code": "AB-03",
298 | "name": "Supervision - necessary / medical support",
299 | "feature": "The passenger cannot and may not travel independently in a taxi and needs an escort. Travelling without an attendant is not permitted with this feature!",
300 | "explanation": "The telephone operator/planner must inform the passenger that this characteristic only applies within the transport area for which the characteristic has been issued. \n\nIf there is no attendant, the driver may not take the passenger. The journey may not be started. The journey is reported as 'empty'. \n\nIt is contractually defined whether the client or carrier pays the companion's travel costs.",
301 | "remarks": "",
302 | "link": ""
303 | },
304 | "AB-04": {
305 | "code": "AB-04",
306 | "name": "Supervision - variable supporter",
307 | "feature": "Under certain circumstances, the passenger 'can and may' travel by him/herself in a taxi. Under certain circumstances, the passenger will need an escort. A memo field describes to the carrier when the passenger may or may not travel without an attendant.",
308 | "explanation": "In certain periods/situations the passenger cannot travel independently by taxi and needs an escort. With this characteristic, the person who orders the fare must ask whether an attendant will be accompanying him/her on that particular journey. The telephone operator/planner must inform the passenger that this ticket is only valid within the transport area for which the ticket has been issued.\n\nIf an attendant is not present when he should be, the driver may not take the passenger. The journey may not be started. The journey is reported as 'empty'.\nIt is contractually agreed whether the client or the carrier pays the attendant's travel expenses.",
309 | "remarks": "",
310 | "link": ""
311 | },
312 | "AER-01": {
313 | "code": "AER-01",
314 | "name": "Travelalong - free",
315 | "feature": "Passenger is allowed to be accompanied when traveling. This companion travels free of charge.",
316 | "explanation": "In memo field: pass number of fellow traveller's pass (or number) or leave blank.\n\nThis is not a standard policy for all municipalities.\n\nIt is contractually defined whether the client or carrier pays the travel expenses of the companion.",
317 | "remarks": "",
318 | "link": ""
319 | },
320 | "AER-02": {
321 | "code": "AER-02",
322 | "name": "Travelalong - discount",
323 | "feature": "Passenger is allowed to be accompanied when traveling. \n- This companion travels at a reduced rate (with or without own WMO-pass)",
324 | "explanation": "In some regions/municipalities, multiple Wmo pass holders travel together and receive a combined travel/group discount. \n\nThis is not a standard policy for all municipalities.\n\nIt is contractually defined whether or not the client pays a fee to the carrier.",
325 | "remarks": "",
326 | "link": ""
327 | },
328 | "AER-03": {
329 | "code": "AER-03",
330 | "name": "Household member",
331 | "feature": "Passenger is a household member of someone with an WMO-pass.\n- This passenger is not allowed to travel independently with the WMO-pass (of the other person).\n- The memo field contains the card number of the WMO-pass holder.",
332 | "explanation": "It is contractually defined whether or not the client pays a fee to the carrier.",
333 | "remarks": "",
334 | "link": ""
335 | },
336 | "K-01": {
337 | "code": "K-01",
338 | "name": "Characteristic - Blind / Partially sighted",
339 | "feature": "Passenger is blind/partially sighted.\nInformation for driver\n– The characteristic may be attributed with (documented) permisson from the passenger or his/her/... legal representative.",
340 | "explanation": "The driver has to take initiative to look for the passenger and make their arrival known.",
341 | "remarks": "",
342 | "link": ""
343 | },
344 | "K-02": {
345 | "code": "K-02",
346 | "name": "Characteristic - deaf / hearing impaired",
347 | "feature": "Passenger is deaf / hearing impaired.\nInformation for driver\n– The characteristic may be attributed with (documented) permisson from the passenger or his/her/... legal representative.",
348 | "explanation": "The driver has to take initiative to look for the passenger and make their arrival known.",
349 | "remarks": "",
350 | "link": ""
351 | },
352 | "K-03": {
353 | "code": "K-03",
354 | "name": "Characteristic - cognitively impaired",
355 | "feature": "Passenger is cognitively impaired.\nInformation for driver\n– The characteristic may be attributed with (documented) permisson from the passenger or his/her/... legal representative.",
356 | "explanation": "The driver has to take initiative to look for the passenger and make their arrival known.",
357 | "remarks": "",
358 | "link": ""
359 | },
360 | "K-04": {
361 | "code": "K-04",
362 | "name": "Characteristic - cannot talk",
363 | "feature": "Passenger can not talk.\nInformation for driver\n– The characteristic may be attributed with (documented) permisson from the passenger or his/her/... legal representative.",
364 | "explanation": "",
365 | "remarks": "",
366 | "link": ""
367 | },
368 | "K-05": {
369 | "code": "K-05",
370 | "name": "Characteristic - No (nose) mouth protection",
371 | "feature": "Passenger cannot wear (nose) mouth protection.",
372 | "explanation": "When this code is issued other travel directions apply for this passenger in times the wearing of nose/mouth protection is mandatory.\nThis could mean that in certain periods (f.e. during COVID regulations) the passenger will have to be seated a 1.5 meter distance from others.\n\nWarning : This is not necessarily related to the secondary transportation demand (AV-01). Depending on the local system charactaristics & vehicles it could be that this passenger has to travel solo. supplementary arrangements could be needed.",
373 | "remarks": "",
374 | "link": ""
375 | },
376 | "ZR-01": {
377 | "code": "ZR-01",
378 | "name": "PT - advice | mobilityadvice",
379 | "feature": "Telephone operator/planner is obliged to provide passenger with public transport alternatives.\r\n- If this characteristic is issued by the municipality, at least one other characteristic from the ZR series must be indicated.\r\n- If other modes of transport are offered besides public transport, mobility advice is used with ZR-01.",
380 | "explanation": "This feature is intended to provide passengers with alternatives. This is to stimulate the use of public transport and to promote (accompanied) independent travel. It is necessary to add additional features from the ZR series so that the operator/planner knows whether an alternative is really a good alternative for this traveller.\n\nThe operator/planner gives a recommendation. This depends on the characteristics (possibilities) of the passenger and also on the available transport network. The passenger decides whether or not to follow the advice, unless mandatory advice is given.",
381 | "remarks": "",
382 | "link": ""
383 | },
384 | "ZR-02": {
385 | "code": "ZR-02",
386 | "name": "PT-stop max 100 meter",
387 | "feature": "Passenger can independently move to and from an accessible public transport stop if the distance is maximum 100 metres.\r\n- Public transport stop: bus train metro.\r\n- Accessible stop: www.haltescan.nl.",
388 | "explanation": "Refers to distance by road/footpath (not as the crow flies).",
389 | "remarks": "",
390 | "link": "www.haltescan.nl"
391 | },
392 | "ZR-03": {
393 | "code": "ZR-03",
394 | "name": "PT-stop max 250 meter",
395 | "feature": "Passenger can independently move to and from an accessible public transport stop if the distance is maximum 250 metres.\n- Public transport stop: bus train metro.\n- Accessible stop: www.haltescan.nl .",
396 | "explanation": "Refers to distance by road/footpath (not as the crow flies).",
397 | "remarks": "",
398 | "link": "www.haltescan.nl"
399 | },
400 | "ZR-04": {
401 | "code": "ZR-04",
402 | "name": "PT-stop max 500 meter",
403 | "feature": "Passenger can independently move to and from an accessible public transport stop if the distance is maximum 500 metres.\n- Public transport stop: bus train metro.\n- Accessible stop: www.haltescan.nl.",
404 | "explanation": "Refers to distance by road/footpath (not as the crow flies).",
405 | "remarks": "",
406 | "link": "www.haltescan.nl"
407 | },
408 | "ZR-05": {
409 | "code": "ZR-05",
410 | "name": "PT-stop max 1000 meter",
411 | "feature": "Passenger can independently move to and from an accessible public transport stop if the distance is maximum 1000 metres.\n- Public transport stop: bus train metro.\n- Accessible stop: www.haltescan.nl.",
412 | "explanation": "Refers to distance by road/footpath (not as the crow flies).",
413 | "remarks": "",
414 | "link": "www.haltescan.nl"
415 | },
416 | "ZR-06": {
417 | "code": "ZR-06",
418 | "name": "PT-stop (variable) distance",
419 | "feature": "Passenger can go independently to and from an accessible PT stop, however, this depends on the condition at the time.\n- PT stop: bus train metro.\n- Accessible stop: www.haltescan.nl",
420 | "explanation": "The carrier will determine the possible distance & accessibility together with the passenger. \nCategory (accompanied) Independant travel (ZR) 15.",
421 | "remarks": "",
422 | "link": "www.haltescan.nl"
423 | },
424 | "ZR-07": {
425 | "code": "ZR-07",
426 | "name": "PT-stop: required - motorably accessible",
427 | "feature": "Passenger can independently move to and from an accessible PT stop that is also 'motorable'.\n- PT stop: bus train metro.\n- Accessible stop - motorized: www.haltescan.nl.",
428 | "explanation": "For example, the traveller has a bad leg or uses a wheelchair.",
429 | "remarks": "",
430 | "link": "www.haltescan.nl"
431 | },
432 | "ZR-08 ": {
433 | "code": "ZR-08",
434 | "name": "PT-stop: required - non visual",
435 | "feature": "Passenger can independently move to and from an accessible PT stop that is also non-visually accessible.\n- PT stop: bus train metro.\n- Accessible stop : www.haltescan.nl.",
436 | "explanation": "The bus stop is fitted with guidance tiles. Both the stop and its surroundings must be designed to be 'non-visually accessible'.",
437 | "remarks": "",
438 | "link": "www.haltescan.nl"
439 | },
440 | "ZR-09": {
441 | "code": "ZR-09",
442 | "name": "Changeover: max 0",
443 | "feature": "Public transport is a 'suitable alternative' if there is no need for transfers.",
444 | "explanation": "",
445 | "remarks": "",
446 | "link": ""
447 | },
448 | "ZR-10": {
449 | "code": "ZR-10",
450 | "name": "Changeover: max 1 time",
451 | "feature": "Public transport is a 'suitable alternative' if there is need for only one transfer.",
452 | "explanation": "Telephone operator/planner agrees with passenger on feasibility of transfer times.",
453 | "remarks": "",
454 | "link": ""
455 | },
456 | "ZR-11": {
457 | "code": "ZR-11",
458 | "name": "Changeover: max 2 times",
459 | "feature": "Public transport is a 'suitable alternative' if there is need for maximum two transfers.",
460 | "explanation": "Telephone operator/planner agrees with passenger on feasibility of transfer times.",
461 | "remarks": "",
462 | "link": ""
463 | },
464 | "ZR-12": {
465 | "code": "ZR-12",
466 | "name": "Changeover: max 3 times",
467 | "feature": "Public transport is a 'suitable alternative' if there is need for maximum three transfers.",
468 | "explanation": "Telephone operator/planner agrees with passenger on feasibility of transfer times.",
469 | "remarks": "",
470 | "link": ""
471 | },
472 | "ZR-13": {
473 | "code": "ZR-13",
474 | "name": "Multimodal",
475 | "feature": "Passenger is able to use multiple modalities : Taxi(bus), bus, train, tram & local carrier initiaves,....",
476 | "explanation": "",
477 | "remarks": "",
478 | "link": ""
479 | },
480 | "ZR-14": {
481 | "code": "ZR-14",
482 | "name": "Night blind",
483 | "feature": "Passenger can only travel with Public transportation during daylight.",
484 | "explanation": "",
485 | "remarks": "",
486 | "link": ""
487 | },
488 | "ZR-15": {
489 | "code": "ZR-15",
490 | "name": "Bicycle usage - partly",
491 | "feature": "Passenger uses bicycle as means of transport on some days (accompanied).\n- In case of pupils, indicate in memo field on which days the bicycle is used.",
492 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school by bicycle for some days/rides. Travels by Taxi(bus) for the other days/rides.",
493 | "remarks": "",
494 | "link": ""
495 | },
496 | "ZR-16": {
497 | "code": "ZR-16",
498 | "name": "Bicycle usage - full",
499 | "feature": "Passenger uses bicycle (accompanied) as a means of transport.\r\n- The municipality reimburses (part of) the bicycle / accompaniment or otherwise.",
500 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school by bicycle . Pupil does not use the taxi(bus).",
501 | "remarks": "",
502 | "link": ""
503 | },
504 | "ZR-17 ": {
505 | "code": "ZR-17",
506 | "name": "Train usage - partly",
507 | "feature": "Passenger uses (accompanied) train as a means of transport on some days.\r\n- In case of pupils, indicate in memo field on which days the train is used.",
508 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school by train for some days/rides. Travels by Taxi(bus) for the other days/rides.",
509 | "remarks": "",
510 | "link": ""
511 | },
512 | "ZR-18": {
513 | "code": "ZR-18",
514 | "name": "Train usage - fully",
515 | "feature": "Passenger uses (accompanied) train as a means of transport.\r\n- The municipality reimburses the train/accompaniment or otherwise.",
516 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school by train. Pupil does not use the taxi(bus).",
517 | "remarks": "",
518 | "link": ""
519 | },
520 | "ZR-19": {
521 | "code": "ZR-19",
522 | "name": "Bus usage - partly",
523 | "feature": "Passenger uses (accompanied) bus as means of transport on some days.\r\n- In case of pupils, indicate in memo field on which days the bus is used.",
524 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school by bus for some days/rides. Travels by Taxi(bus) for the other days/rides.",
525 | "remarks": "",
526 | "link": ""
527 | },
528 | "ZR-20": {
529 | "code": "ZR-20",
530 | "name": "Bus usage - fully",
531 | "feature": "Passenger uses (accompanied) the bus as a means of transport.\r\n- The municipality reimburses the bus/accompaniment or otherwise.",
532 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school by bus. Pupil does not use the taxi(bus).",
533 | "remarks": "",
534 | "link": ""
535 | },
536 | "ZR-21": {
537 | "code": "ZR-21",
538 | "name": "Own transportation - partly",
539 | "feature": "Passenger uses (accompanied) private transport on some days 'as a means of transport'.\r\n- In the case of pupils, indicate in the memo field on which days private transport is used.",
540 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school for some days/ride. Parents/carers use their own transport and may or may not receive compensation for this. Travels by Taxi(bus) for the other days/rides.",
541 | "remarks": "",
542 | "link": ""
543 | },
544 | "ZR-22": {
545 | "code": "ZR-22",
546 | "name": "Own transportation - fully",
547 | "feature": "Passenger uses 'own transport' as a means of transport.\n- The municipality reimburses (part of) own transport or otherwise.",
548 | "explanation": "Passenger often is a pupil. Pupil goes (accompanied) independently to school. Parents/carers use their own transport and may or may not receive compensation for this. Pupil does not use the taxi(bus).",
549 | "remarks": "",
550 | "link": ""
551 | },
552 | "ZR-23": {
553 | "code": "ZR-23",
554 | "name": "Pick-up point usage",
555 | "feature": "Passenger can use a pick-up point.",
556 | "explanation": "A pick-up point is a place where several travellers gather in order to continue their journey together in a taxibus. Pupils are brought here by their parents or cycle to the pick-up point. The taxibus can also drop them off here. They then travel on by themselves.",
557 | "remarks": "",
558 | "link": ""
559 | },
560 | "ZR-24": {
561 | "code": "ZR-24",
562 | "name": "Extra transfertime",
563 | "feature": "Passenger will require the double amount of time for a transfer (as supposed to the travelplanner).",
564 | "explanation": "The operator/planner will take into account the extra time needed. 'Twice the time' is based on the transfer time currently used in national apps. If a traveller needs more time to change trains, the operator can be notified. Together, we can then decide what time the WMO-taxi will pick up the traveller, so that the transfer can be properly made.",
565 | "remarks": "",
566 | "link": ""
567 | },
568 | "RR-01": {
569 | "code": "RR-01",
570 | "name": "Kilometre budget",
571 | "feature": "Passenger receives a kilometres quote from the municipality. Per traveled kilometre the passenger needs to pay the set WMO-tarif.\n– Yearly, or a part of the year.\n– Note the traveled distance in the memo-field",
572 | "explanation": "Carrier shall keep records of the number of kilometres travelled by the passenger. If a direct debit is used, the passenger will be informed of the number of kilometres used each month.",
573 | "remarks": "",
574 | "link": ""
575 | },
576 | "RR-02": {
577 | "code": "RR-02",
578 | "name": "Mobility budget",
579 | "feature": "Passenger receives a yearly mobility budget from the municipality.\n– Yearly, or a part of the year.\r\n– Note the used budget in the memo-field",
580 | "explanation": "The transport company records how much of the mobility budget the traveller has travelled via the transport company. In the case of direct debit, travellers are informed of the used budget on a monthly basis.",
581 | "remarks": "",
582 | "link": ""
583 | },
584 | "RR-03": {
585 | "code": "RR-03",
586 | "name": "Extraregional travel - Valys",
587 | "feature": "Passenger has a Valys-card.",
588 | "explanation": "The telephone operator/planner can take the Valys card of the passenger into account in the PT advice.",
589 | "remarks": "",
590 | "link": ""
591 | }
592 | },
593 | "credits": [{
594 | "version": "dutch version",
595 | "name": "Jeroen van Neer",
596 | "organisation": "Publiek Vervoer",
597 | "uri": ""
598 | },
599 | {
600 | "version": "dutch version",
601 | "name": "Martin Boerjan",
602 | "organisation": "Ieder(in)",
603 | "uri": ""
604 | },
605 | {
606 | "version": "dutch version",
607 | "name": "Patrick Schmidt",
608 | "organisation": "MEE IJsseloevers",
609 | "uri": ""
610 | },
611 | {
612 | "version": "dutch version",
613 | "name": "Ruud Mollema",
614 | "organisation": "ICTU",
615 | "uri": ""
616 | },
617 | {
618 | "version": "dutch version",
619 | "name": "Sjak Rijploeg",
620 | "organisation": "ROVER",
621 | "uri": ""
622 | },
623 | {
624 | "version": "dutch version",
625 | "name": "Conny Broeijer",
626 | "organisation": "ministerie I&W",
627 | "uri": ""
628 | },
629 | {
630 | "version": "dutch version",
631 | "name": "Eva de Ruiter",
632 | "organisation": "ministerie I&W",
633 | "uri": ""
634 | },
635 | {
636 | "version": "dutch version",
637 | "name": "Jantine Vochteloo",
638 | "organisation": "KNV",
639 | "uri": ""
640 | },
641 | {
642 | "version": "dutch version",
643 | "name": "Mark Renne",
644 | "organisation": "Omnibuzz",
645 | "uri": ""
646 | },
647 | {
648 | "version": "dutch version",
649 | "name": "Eugenia Pozo",
650 | "organisation": "ministerie VWS",
651 | "uri": ""
652 | },
653 | {
654 | "version": "dutch version",
655 | "name": "Ton van Weerdenburg",
656 | "organisation": "Oogvereniging",
657 | "uri": ""
658 | },
659 | {
660 | "version": "dutch version",
661 | "name": "Edwin de Bruin",
662 | "organisation": "Connexxion",
663 | "uri": ""
664 | },
665 | {
666 | "version": "english translation",
667 | "name": "Tjalle Groen",
668 | "organisation": "Mpact",
669 | "uri": "https://www.mpact.be"
670 | },
671 | {
672 | "version": "english translation",
673 | "name": "Ross Curzon-Butler",
674 | "organisation": "Cargoroo",
675 | "uri": ""
676 | },
677 | {
678 | "version": "Publisher",
679 | "name": "",
680 | "organisation": "CROW-KpVV Ede",
681 | "uri": "https://www.crow.nl/publicaties/woordenboek-reizigerskenmerken"
682 | },
683 | {
684 | "version": "Publisher English translation",
685 | "name": "",
686 | "organisation": "TOMP working group",
687 | "uri": "https://www.tomp-wg.org"
688 | }
689 |
690 | ]
691 | }
--------------------------------------------------------------------------------
/documents/Connecting a MSP to the MaaS-NL-Router, version 1.0 (04102019).docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/Connecting a MSP to the MaaS-NL-Router, version 1.0 (04102019).docx
--------------------------------------------------------------------------------
/documents/Information document for testing parties within MaaS at Accept Institute V0.8.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/Information document for testing parties within MaaS at Accept Institute V0.8.pdf
--------------------------------------------------------------------------------
/documents/List of links and resources:
--------------------------------------------------------------------------------
1 | List of links as provided in Issues and during Working Group meetings
2 | ---------------------------------------------------------------------
3 |
4 | MAAS-NL BASECODETABLES API (21/10/2019)
5 | https://maas-nl-hub.westeurope.cloudapp.azure.com/MBT/swagger/ui/index#!/Maas/
6 |
7 | CITYID FROM INSPIRE PUBLICATIONS (#47 by skinkie on 24/7/2019)
8 | https://zakelijk.kadaster.nl/-/inspire-adressen
9 | https://inspire.ec.europa.eu/Themes/79/2892
10 |
11 | LINKED CONNECTIONS (#44 by skinkie on 10/7/2019)
12 | https://linkedconnections.org/
13 |
14 | CEN-NeTEx WHITEPAPER ON FLEXIBLE TRANSPORT (#43 by skinkie on 10/7/2019)
15 | http://netex-cen.eu/wp-content/uploads/2015/12/07.NeTEx-Flexible-Network-and-Multimodality-WhitePaper_1.06.pdf
16 |
17 | TRANSPORT TYPES (#42 by skinkie on 10/7/2019)
18 | https://github.com/NeTEx-CEN/NeTEx/blob/master/xsd/netex_framework/netex_reusableComponents/netex_mode_support.xsd#L80
19 | https://github.com/VDVde/SIRI/blob/master/datex2/DATEXIISchema_1_0_1_0.xsd#L10042
20 | TPEG_PTS proposal in SIRI 2.0
21 |
22 | FRAUD PREVENTION (#31 by skinkie on 26/6/2019)
23 | https://www.gdpreu.org/the-regulation/key-concepts/legitimate-interest/
24 | http://www.privacy-regulation.eu/nl/grond-47-EU-AVG.htm
25 |
--------------------------------------------------------------------------------
/documents/MaaS functionalities and support of TOMP.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/MaaS functionalities and support of TOMP.xlsx
--------------------------------------------------------------------------------
/documents/Report TOMP-API working group 80.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/Report TOMP-API working group 80.pdf
--------------------------------------------------------------------------------
/documents/Strategical committee.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/Strategical committee.docx
--------------------------------------------------------------------------------
/documents/TOMP-API Glossary V1.0.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/TOMP-API Glossary V1.0.docx
--------------------------------------------------------------------------------
/documents/TOMP-API_Payment Proposal_20191211.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/TOMP-API_Payment Proposal_20191211.pdf
--------------------------------------------------------------------------------
/documents/Woordenboek Reizigerskenmerken CROW.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/Woordenboek Reizigerskenmerken CROW.pdf
--------------------------------------------------------------------------------
/documents/presentations/2024 06 26 Building the future of TOMP-API.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/2024 06 26 Building the future of TOMP-API.pdf
--------------------------------------------------------------------------------
/documents/presentations/20241107 - Feedback session III - OGC.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/20241107 - Feedback session III - OGC.pptx
--------------------------------------------------------------------------------
/documents/presentations/230324 Technical and functional analusis of TOMP-API Duquesne.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/230324 Technical and functional analusis of TOMP-API Duquesne.pptx
--------------------------------------------------------------------------------
/documents/presentations/231025_TOMP_ Presentation_Data_Standardisation.pptx.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/231025_TOMP_ Presentation_Data_Standardisation.pptx.pdf
--------------------------------------------------------------------------------
/documents/presentations/Architecture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/Architecture.png
--------------------------------------------------------------------------------
/documents/presentations/Authentication Questions.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/Authentication Questions.pptx
--------------------------------------------------------------------------------
/documents/presentations/CC-PR415-D015-1.1 CEN and EC RTD - intro presentation.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/CC-PR415-D015-1.1 CEN and EC RTD - intro presentation.pptx
--------------------------------------------------------------------------------
/documents/presentations/Presentation MaaS congress 2020 Ross, Pim, Bon.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/Presentation MaaS congress 2020 Ross, Pim, Bon.pptx
--------------------------------------------------------------------------------
/documents/presentations/Presentation Marktconsultation TOMP-API en.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/Presentation Marktconsultation TOMP-API en.pptx
--------------------------------------------------------------------------------
/documents/presentations/Standardisation at work within CEN.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/Standardisation at work within CEN.pdf
--------------------------------------------------------------------------------
/documents/presentations/TOMP - Use case driven.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP - Use case driven.pptx
--------------------------------------------------------------------------------
/documents/presentations/TOMP V2.0 proposal.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP V2.0 proposal.pptx
--------------------------------------------------------------------------------
/documents/presentations/TOMP Working Team 2 Presentation v2.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP Working Team 2 Presentation v2.pptx
--------------------------------------------------------------------------------
/documents/presentations/TOMP governance 20230215 v2.4.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP governance 20230215 v2.4.pptx
--------------------------------------------------------------------------------
/documents/presentations/TOMP the big picture.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP the big picture.pptx
--------------------------------------------------------------------------------
/documents/presentations/TOMP – WT6 20230426.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP – WT6 20230426.pptx
--------------------------------------------------------------------------------
/documents/presentations/TOMP-API - GBFS - availability.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/presentations/TOMP-API - GBFS - availability.pptx
--------------------------------------------------------------------------------
/documents/proposals/Bluetooth opening lock process.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/Bluetooth opening lock process.pptx
--------------------------------------------------------------------------------
/documents/proposals/Support.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/Support.pptx
--------------------------------------------------------------------------------
/documents/proposals/TOMP Intro.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/TOMP Intro.pptx
--------------------------------------------------------------------------------
/documents/proposals/Versioning.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/Versioning.pptx
--------------------------------------------------------------------------------
/documents/proposals/authentication.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/authentication.pptx
--------------------------------------------------------------------------------
/documents/proposals/bluetooth.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/bluetooth.pptx
--------------------------------------------------------------------------------
/documents/proposals/payments.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/payments.pptx
--------------------------------------------------------------------------------
/documents/proposals/proposal tomp-api-1.1.1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/proposals/proposal tomp-api-1.1.1.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190529 Report TOMP-API working group 1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190529 Report TOMP-API working group 1.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190612 Report TOMP-API working group 2.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190612 Report TOMP-API working group 2.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190626 Report TOMP-API working group 3.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190626 Report TOMP-API working group 3.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190710 Report TOMP-API working group 4.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190710 Report TOMP-API working group 4.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190724 Report TOMP-API working group 5.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190724 Report TOMP-API working group 5.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190801 Report TOMP-API results after 5 working group meetings.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190801 Report TOMP-API results after 5 working group meetings.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190807 Report TOMP-API working group 6.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190807 Report TOMP-API working group 6.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190821 Report TOMP-API working group 7.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190821 Report TOMP-API working group 7.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190904 Report TOMP-API working group 8.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190904 Report TOMP-API working group 8.pdf
--------------------------------------------------------------------------------
/documents/working group reports/190918 Report TOMP-API working group 9.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/190918 Report TOMP-API working group 9.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191002 Report TOMP-API working group 10.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191002 Report TOMP-API working group 10.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191016 Report TOMP-API results after 10 working group meetings.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191016 Report TOMP-API results after 10 working group meetings.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191016 Report TOMP-API working group 11.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191016 Report TOMP-API working group 11.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191030 Report TOMP-API working group 12.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191030 Report TOMP-API working group 12.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191113 Report TOMP-API working group 13.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191113 Report TOMP-API working group 13.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191127 Report TOMP-API working group 14.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191127 Report TOMP-API working group 14.pdf
--------------------------------------------------------------------------------
/documents/working group reports/191211 Report TOMP-API working group 15.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/191211 Report TOMP-API working group 15.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200108 Report TO-MP API working group 16.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200108 Report TO-MP API working group 16.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200122 Report TOMP-API working group 17.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200122 Report TOMP-API working group 17.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200205 Report TOMP-API working group 18.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200205 Report TOMP-API working group 18.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200219 Report TOMP-API working group 19.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200219 Report TOMP-API working group 19.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200304 Report TOMP-API results after 20 working group meetings.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200304 Report TOMP-API results after 20 working group meetings.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200304 Report TOMP-API working group 20.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200304 Report TOMP-API working group 20.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200318 Report TOMP-API working group 21.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200318 Report TOMP-API working group 21.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200401 Report TOMP-API working group 22.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200401 Report TOMP-API working group 22.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200415 Report TOMP-API working group 23.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200415 Report TOMP-API working group 23.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200429 Report TOMP-API working group 24.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200429 Report TOMP-API working group 24.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200513 Report TOMP-API working group 25.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200513 Report TOMP-API working group 25.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200527 Report TOMP-API working group 26.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200527 Report TOMP-API working group 26.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200610 Report TOMP-API working group 27.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200610 Report TOMP-API working group 27.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200624 Report TOMP-API working group 28.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200624 Report TOMP-API working group 28.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200708 Report TOMP-API working group 29.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200708 Report TOMP-API working group 29.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200805 Report TOMP-API working group 30.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200805 Report TOMP-API working group 30.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200819 Report TOMP-API results after 30 working group meetings.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200819 Report TOMP-API results after 30 working group meetings.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200819 Report TOMP-API working group 31.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200819 Report TOMP-API working group 31.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200902 Report TOMP-API working group 32.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200902 Report TOMP-API working group 32.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200916 Report TOMP-API working group 33.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200916 Report TOMP-API working group 33.pdf
--------------------------------------------------------------------------------
/documents/working group reports/200930 Report TOMP-API working group 34.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/200930 Report TOMP-API working group 34.pdf
--------------------------------------------------------------------------------
/documents/working group reports/201014 Report TOMP-API working group 35.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/201014 Report TOMP-API working group 35.pdf
--------------------------------------------------------------------------------
/documents/working group reports/201028 Report TOMP-API working group 36.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/201028 Report TOMP-API working group 36.pdf
--------------------------------------------------------------------------------
/documents/working group reports/201111 Report TOMP-API working group 37.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/201111 Report TOMP-API working group 37.pdf
--------------------------------------------------------------------------------
/documents/working group reports/201125 Report TOMP-API working group 38.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/201125 Report TOMP-API working group 38.pdf
--------------------------------------------------------------------------------
/documents/working group reports/201209 Report TOMP-API working group 39.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/201209 Report TOMP-API working group 39.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210120 Report TOMP-API working group 40.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210120 Report TOMP-API working group 40.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210203 Report TOMP-API working group 41.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210203 Report TOMP-API working group 41.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210217 Report TOMP-API working group 42.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210217 Report TOMP-API working group 42.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210303 Report TOMP-API working group 43.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210303 Report TOMP-API working group 43.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210324 Report TOMP-API working group 44.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210324 Report TOMP-API working group 44.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210414 Report TOMP-API working group 45.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210414 Report TOMP-API working group 45.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210428 Report TOMP-API working group 46.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210428 Report TOMP-API working group 46.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210512 Report TOMP-API working group 47.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210512 Report TOMP-API working group 47.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210526 Report TOMP-API working group 48.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210526 Report TOMP-API working group 48.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210609 Report TOMP-API working group 49.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210609 Report TOMP-API working group 49.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210623 Report TOMP-API working group 50.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210623 Report TOMP-API working group 50.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210707 Report TOMP-API working group 51.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210707 Report TOMP-API working group 51.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210901 Report TOMP-API working group 52.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210901 Report TOMP-API working group 52.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210915 Report TOMP-API working group 53.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210915 Report TOMP-API working group 53.pdf
--------------------------------------------------------------------------------
/documents/working group reports/210929 Report TOMP-API working group 54.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/210929 Report TOMP-API working group 54.pdf
--------------------------------------------------------------------------------
/documents/working group reports/211013 Report TOMP-API working group 55.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/211013 Report TOMP-API working group 55.pdf
--------------------------------------------------------------------------------
/documents/working group reports/211027 Report TOMP-API working group 56.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/211027 Report TOMP-API working group 56.pdf
--------------------------------------------------------------------------------
/documents/working group reports/211110 Report TOMP-API working group 57.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/211110 Report TOMP-API working group 57.pdf
--------------------------------------------------------------------------------
/documents/working group reports/211124 Report TOMP-API working group 58.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/211124 Report TOMP-API working group 58.pdf
--------------------------------------------------------------------------------
/documents/working group reports/211208 Report TOMP-API working group 59.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/211208 Report TOMP-API working group 59.pdf
--------------------------------------------------------------------------------
/documents/working group reports/211222 Report TOMP-API working group 60.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/211222 Report TOMP-API working group 60.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220119 Report TOMP-API working group 61.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220119 Report TOMP-API working group 61.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220202 Report TOMP-API working group 62.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220202 Report TOMP-API working group 62.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220323 Report TOMP-API working group 63.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220323 Report TOMP-API working group 63.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220420 Report TOMP-API working group 64.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220420 Report TOMP-API working group 64.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220525 Report TOMP-API working group 65.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220525 Report TOMP-API working group 65.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220622 Report TOMP-API working group 66.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220622 Report TOMP-API working group 66.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220727 Report TOMP-API working group 67.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220727 Report TOMP-API working group 67.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220824 Report TOMP-API working group 68.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220824 Report TOMP-API working group 68.pdf
--------------------------------------------------------------------------------
/documents/working group reports/220928 Report TOMP-API working group 69.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/220928 Report TOMP-API working group 69.pdf
--------------------------------------------------------------------------------
/documents/working group reports/221026 Report TOMP-API working group 70.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/221026 Report TOMP-API working group 70.pdf
--------------------------------------------------------------------------------
/documents/working group reports/221123 Report TOMP-API working group 71.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/221123 Report TOMP-API working group 71.pdf
--------------------------------------------------------------------------------
/documents/working group reports/README:
--------------------------------------------------------------------------------
1 | Repository for TOMP-API working group reports
2 | Reports will be added after they have been approved by the working group
3 |
4 | Please contact aysehilal.ocal@ndw.nu for more information
5 |
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API Working group 74.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API Working group 74.docx
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API Working group 78.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API Working group 78.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API Working group 88.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API Working group 88.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 72.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 72.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 73.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 73.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 75.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 75.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 76.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 76.docx
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 77.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 77.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 79.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 79.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 81.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 81.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 82.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 82.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 83.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 83.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 84.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 84.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 85.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 85.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 86.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 86.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report TOMP-API working group 87.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report TOMP-API working group 87.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report of TOMP-API Working group 89.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report of TOMP-API Working group 89.pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report of TOMP-API working group 90 .pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report of TOMP-API working group 90 .pdf
--------------------------------------------------------------------------------
/documents/working group reports/Report of TOMP-API working group 91 .pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TOMP-WG/TOMP-API/7bf83ed6a7f75a4c07daeee7e8bb2be14de2f9b4/documents/working group reports/Report of TOMP-API working group 91 .pdf
--------------------------------------------------------------------------------
/example-output/bike-operator-free-floating/explanation.md:
--------------------------------------------------------------------------------
1 | # Free floating bike operator
2 |
3 | ## Meta endpoint
4 |
5 | We're going to address the items that are specific for the free floating operators in the `meta-endpoint`:
6 |
7 | ##### Endpoints:
8 |
9 | ```json
10 | "endpoints": [
11 | { "method": "GET", "path": "/operator/meta/", "status": "IMPLEMENTED" },
12 | { "method": "GET", "path": "/operator/information/", "status": "IMPLEMENTED" },
13 | { "method": "GET", "path": "/operator/regions/", "status": "IMPLEMENTED" },
14 | { "method": "GET", "path": "/operator/operating-hours/", "status": "IMPLEMENTED" },
15 | { "method": "GET", "path": "/operator/pricing-plans/", "status": "IMPLEMENTED" },
16 | { "method": "GET", "path": "/operator/stations/", "status": "NOT_IMPLEMENTED" },
17 | { "method": "GET", "path": "/operator/available-assets/", "status": "IMPLEMENTED" },
18 | { "method": "GET", "path": "/operator/alerts/", "status": "NOT_IMPLEMENTED" },
19 | { "method": "POST", "path": "/plannings/", "status": "IMPLEMENTED" },
20 | { "method": "POST", "path": "/bookings/", "status": "IMPLEMENTED" },
21 | { "method": "POST", "path": "/bookings/{id}/events", "status": "IMPLEMENTED", "eventType": "COMMIT" },
22 | { "method": "POST", "path": "/bookings/{id}/events", "status": "IMPLEMENTED", "eventType": "DENY" },
23 | { "method": "POST", "path": "/legs/{id}/events", "status": "NOT_IMPLEMENTED", "eventType": "SET_IN_USE" },
24 | { "method": "POST", "path": "/legs/{id}/events", "status": "IMPLEMENTED", "eventType": "FINISH" },
25 | { "method": "POST", "path": "/payment/journal-entry?id={id}", "status": "IMPLEMENTED" }
26 | ],
27 |
28 | ```
29 |
30 | Note that 'stations' isn't implemented. 'set_in_use' isn't implemented eighter, because of the following part of the meta-endpoint, the process identifiers.
31 |
32 | ##### Process identifiers - remotely unlockable
33 |
34 | ```json
35 | "processIdentifiers": {
36 | "operatorInformation": ["DEFAULT"],
37 | "planning": ["ASSET_BASED", "QR_SCAN"],
38 | "booking": ["ATOMIC_BOOKING_UNLOCKING"],
39 | "tripExecution": ["LOCK_UNLOCK_REMOTELY", "OFF_BOARDING_REQUIRED"],
40 | "payment": []
41 | }
42 | ```
43 |
44 | One common thing for all these examples, is that the bike can be opened directly after the booking. If you want the end user to have control over the unlocking, don't provide the 'ATOMIC_BOOKING_UNLOCKING' process identifier.
45 |
46 | This booking-identifier 'ATOMIC_BOOKING_UNLOCKING' requires the next implementation: as soon the booking is committed, the bike should be 'set_in_use' (the leg must be started) and the lock should be opened remotely. In this example, the bike's ID can be found using a QR code scan.
47 |
48 | ##### Process identifiers - Bluetooth operated (SDK)
49 |
50 | ```json
51 | "processIdentifiers": {
52 | "operatorInformation": ["DEFAULT"],
53 | "planning": ["ASSET_BASED", "BLUETOOTH_SCAN"],
54 | "booking": ["ACCESS_CODE_IN_COMMIT_EVENT"],
55 | "tripExecution": ["OFF_BOARDING_REQUIRED"],
56 | "payment": []
57 | }
58 | ```
59 |
60 | This setup requires the MP app to have the Bluetooth process integrated (SDK). In the response of the commit event the information to open up the lock, should be provided. The bike's ID can be retrieved using a Bluetooth-scan.
61 |
62 | ##### Process identifiers - Bluetooth operated (Deeplink)
63 |
64 | ```json
65 | "processIdentifiers": {
66 | "operatorInformation": ["DEFAULT"],
67 | "planning": ["ASSET_BASED", "BARCODE_SCAN"],
68 | "booking": ["ACCESS_CODE_IN_COMMIT_EVENT", "ACCESS_CODE_DEEPLINK"],
69 | "tripExecution": ["OFF_BOARDING_REQUIRED"],
70 | "payment": []
71 | }
72 | ```
73 |
74 | Again, the booking can be done using the TOMP-API, but there is a deeplink into the bike operators app to control the opening and closing of the bike (Bluetooth).
75 |
76 | ##### Process identifiers - Map based (book by click on map)
77 |
78 | ```json
79 | "processIdentifiers": {
80 | "operatorInformation": ["DEFAULT"],
81 | "planning": ["ASSET_BASED", "EXACT_ID"],
82 | "booking": ["AUTO_COMMIT", "ATOMIC_BOOKING_UNLOCKING"],
83 | "tripExecution": ["LOCK_UNLOCK_REMOTELY"],
84 | "payment": []
85 | }
86 | ```
87 |
88 | In this example, users can look up assets on a map (provided by the available-assets), book it (when booked, it directly returns a committed booking) and opened directly.
89 |
90 | ## Information
91 |
92 | This endpoint gives high-level information about the operator:
93 |
94 | ```json
95 | {
96 | "systemId": "XXTO0001",
97 | "language": ["eng-GB"],
98 | "name": "FreeBike",
99 | "timezone": "CET",
100 | "typeOfSystem": "FREE_FLOATING"
101 | }
102 | ```
103 |
104 | The systemId should be provided by the scheme owner. In a blockchain solution, it could be a DID. All languages that are usable in the API, should be enlisted here, so in the requests one of these must be used in the header.
105 |
106 | ##### Regions
107 |
108 | The regions endpoint delivers different areas, and there should be at least one area of type 'OPERATING', to describe the boundaries where vehicles are allowed to operate.
109 |
110 | There are other regions that can be served, for instance for implementing dynamic policies. Regions like 'PARKING', 'NO_ACCESS' and 'NO_PARKING' must be communicated to the end user to avoid fines.
111 |
112 | ```json
113 | {
114 | "regionId": "PC_001",
115 | "name": "City Center",
116 | "type": "PARKING",
117 | "areaStartTime": "2022-11-16T10:00:00.840Z",
118 | "areaEndTime": "2022-11-16T18:00:00.840Z",
119 | "serviceArea": [ ... ]
120 | }
121 | ```
122 |
123 | This example describes a temporary PARKING area, where it is allowed to park the bike between 10 and 18, on the 16th of November 2022.
124 |
125 | In the area below, there is a permanent speed limit of 10 kilometers per hour.
126 |
127 | ```json
128 | {
129 | "regionId": "SL_34829",
130 | "name": "Speed limit around city mall",
131 | "type": "SPEED_LIMIT",
132 | "unitType": "KMPH",
133 | "unitValue": 10,
134 | "serviceArea": [ ... ]
135 | }
136 | ```
137 |
138 | ##### Pricing plans
139 |
140 | This is one of the most complex parts of the operator information. It can cope with start up prices, flexible prices per timespan or per kilometer, scales (for the first hour, 3th-5th kilometer) and max prices.
141 |
142 | ```json
143 | {
144 | "planId": "P0001",
145 | "name": "default price",
146 | "fare": {
147 | "estimated": false,
148 | "class": "FARE",
149 | "parts": [
150 | {
151 | "amount": 3.0,
152 | "currencyCode": "EUR",
153 | "type": "FIXED"
154 | },
155 | {
156 | "amount": 0.2,
157 | "currencyCode": "EUR",
158 | "type": "FLEX",
159 | "unitType": "KM",
160 | "units": 1
161 | }
162 | ]
163 | },
164 | "isTaxable": false,
165 | "description": "the default price for our bikes"
166 | }
167 | ```
168 |
169 | This simple example shows that you have to pay 3 Euro as a start-up price, and after that 20 cents per kilometer.
170 |
171 | We'll zoom in on the 'parts' field, to show a few other examples:
172 |
173 | ```json
174 | "parts": [
175 | {
176 | "amount": 3.0,
177 | "currencyCode": "EUR",
178 | "type": "FIXED"
179 | },
180 | {
181 | "amount": 0,
182 | "currencyCode": "EUR",
183 | "type": "FLEX",
184 | "unitType": "KM",
185 | "units": 1,
186 | "scaleFrom": 0,
187 | "scaleTo": 3,
188 | "scaleType": "KM"
189 | },
190 | {
191 | "amount": 0.2,
192 | "currencyCode": "EUR",
193 | "type": "FLEX",
194 | "unitType": "KM",
195 | "units": 1,
196 | "scaleFrom": 3,
197 | "scaleTo": 10,
198 | "scaleType": "KM"
199 | },
200 | {
201 | "amount": 0.15,
202 | "currencyCode": "EUR",
203 | "type": "FLEX",
204 | "unitType": "KM",
205 | "units": 1,
206 | "scaleFrom": 10,
207 | "scaleType": "KM"
208 | },
209 | {
210 | "amount": 30,
211 | "currencyCode": "EUR",
212 | "type": "MAX"
213 | }
214 | ]
215 | ```
216 |
217 | This example starts with 3 euros, and after that the first 3 kilometers are for free. The kilometers 3-10 are billed for 0.20 euro, and from the 10th kilometer, you have to pay 0.15 euro per kilometer, but you never have to pay more than 30 euros for a trip.
218 |
219 | You can also put helmets etc on the bill (and you have to pay 50 cents per 15 minutes):
220 |
221 | ```json
222 | "parts": [
223 | {
224 | "amount": 0.50,
225 | "currencyCode": "EUR",
226 | "type": "FLEX",
227 | "unitType": "HOUR",
228 | "units": 0.25
229 | },
230 | {
231 | "amount": 3.2,
232 | "currencyCode": "EUR",
233 | "type": "FIXED",
234 | "name": "Rental of helmet",
235 | "class": "ANCILLARY"
236 | }
237 | ]
238 | ```
239 |
240 | ##### Available assets
241 |
242 | In most cases, this endpoint returns only the available asset types. Not the specific assets. Unless you have a map-oriented solution, where the specific assets have to be displayed on a map.
243 |
244 | You can create your own 'asset types'. You can specify them per station, or by a physical asset type, like an e-bike.
245 |
246 | ```json
247 | [
248 | {
249 | "id": "e-bike-class-01",
250 | "nrAvailable": 10,
251 | "assetClass": "BICYCLE",
252 | "sharedProperties": {
253 | "name": "Standard e-bike, 15 km/h",
254 | "maxSpeed": 15,
255 | "regionId": "LU-01",
256 | "infantSeat": true,
257 | "helmetRequired": true,
258 | "ancillaries": [
259 | { "category": "BA", "number": "09" }
260 | { "category": "BA", "number": "11" }
261 | ]
262 | }
263 | ```
264 |
265 | This example shows 10 available e-bikes, with an infant seat on the back (see https://github.com/TOMP-WG/TOMP-API/blob/master/documents/CROW%20passenger%20characteristics%20V2.0.xlsx) and a phone holder, in the region LU-01.
266 |
--------------------------------------------------------------------------------
/example-output/bike-operator-free-floating/information.json:
--------------------------------------------------------------------------------
1 | {
2 | "systemId": "XXTO0001",
3 | "language": ["eng-GB"],
4 | "name": "FreeBike",
5 | "timezone": "CET",
6 | "typeOfSystem": "FREE_FLOATING"
7 | }
--------------------------------------------------------------------------------
/example-output/bike-operator-free-floating/meta.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "version": "1.3.0",
4 | "endpoints": [
5 | { "method": "GET", "path": "/operator/meta/", "status": "IMPLEMENTED" },
6 | { "method": "GET", "path": "/operator/information/", "status": "IMPLEMENTED" },
7 | { "method": "GET", "path": "/operator/regions/", "status": "IMPLEMENTED" },
8 | { "method": "GET", "path": "/operator/operating-hours/", "status": "IMPLEMENTED" },
9 | { "method": "GET", "path": "/operator/pricing-plans/", "status": "IMPLEMENTED" },
10 | { "method": "GET", "path": "/operator/stations/", "status": "NOT_IMPLEMENTED" },
11 | { "method": "GET", "path": "/operator/available-assets/", "status": "IMPLEMENTED" },
12 | { "method": "GET", "path": "/operator/alerts/", "status": "NOT_IMPLEMENTED" },
13 | { "method": "POST", "path": "/plannings/", "status": "IMPLEMENTED" },
14 | { "method": "POST", "path": "/bookings/", "status": "IMPLEMENTED" },
15 | { "method": "POST", "path": "/bookings/{id}/events", "status": "IMPLEMENTED", "eventType": "COMMIT" },
16 | { "method": "POST", "path": "/bookings/{id}/events", "status": "IMPLEMENTED", "eventType": "DENY" },
17 | { "method": "POST", "path": "/legs/{id}/events", "status": "NOT_IMPLEMENTED", "eventType": "SET_IN_USE" },
18 | { "method": "POST", "path": "/legs/{id}/events", "status": "IMPLEMENTED", "eventType": "FINISH" },
19 | { "method": "POST", "path": "/payment/journal-entry?id={id}", "status": "IMPLEMENTED" }
20 | ],
21 | "scenarios": ["REQUIRE_BOOKING_DATA"],
22 | "processIdentifiers": {
23 | "operatorInformation": ["DEFAULT"],
24 | "planning": ["ASSET_BASED", "EXACT_ID"],
25 | "booking": ["ATOMIC_BOOKING_UNLOCKING"],
26 | "tripExecution": ["LOCK_UNLOCK_REMOTELY", "OFF_BOARDING_REQUIRED"],
27 | "payment": []
28 | }
29 | }
30 | ]
31 |
--------------------------------------------------------------------------------
/example-output/bike-operator-free-floating/pricing-plans.json:
--------------------------------------------------------------------------------
1 | {
2 | "planId": "P0001",
3 | "name": "default price",
4 | "fare": {
5 | "estimated": false,
6 | "class": "FARE",
7 | "parts": [
8 | {
9 | "amount": 3.0,
10 | "currencyCode": "EUR",
11 | "type": "FIXED"
12 | },
13 | {
14 | "amount": 0,
15 | "currencyCode": "EUR",
16 | "type": "FLEX",
17 | "unitType": "KM",
18 | "units": 1,
19 | "scaleFrom": 0,
20 | "scaleTo": 3,
21 | "scaleType": "KM"
22 | },
23 | {
24 | "amount": 0.2,
25 | "currencyCode": "EUR",
26 | "type": "FLEX",
27 | "unitType": "KM",
28 | "units": 1,
29 | "scaleFrom": 3,
30 | "scaleTo": 10,
31 | "scaleType": "KM"
32 | },
33 | {
34 | "amount": 0.15,
35 | "currencyCode": "EUR",
36 | "type": "FLEX",
37 | "unitType": "KM",
38 | "units": 1,
39 | "scaleFrom": 10,
40 | "scaleType": "KM"
41 | },
42 | {
43 | "amount": 30,
44 | "currencyCode": "EUR",
45 | "type": "MAX"
46 | }
47 | ]
48 | },
49 | "isTaxable": false,
50 | "description": "the default price for our bikes"
51 | }
--------------------------------------------------------------------------------
/example-output/bike-operator-free-floating/regions.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "regionId": "PC_001",
4 | "name": "City Center",
5 | "type": "PARKING",
6 | "areaStartTime": "2022-11-16T10:00:00.840Z",
7 | "areaEndTime": "2022-11-16T18:00:00.840Z"
8 | },
9 | {
10 | "regionId": "SL_34829",
11 | "name": "Speed limit around city mall",
12 | "type": "SPEED_LIMIT",
13 | "unitType": "KMPH",
14 | "unitValue": 10
15 | }
16 | ]
--------------------------------------------------------------------------------
/plantuml/Booking/default.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Default booking
2 | title Planning Scenario 'default booking' - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | note over TO
9 | **ProcessIdentifiers**: DEFAULT and ACCESS_CODE_BY_TO.
10 | Add one of these to specify the moment of supplying the
11 | access code (if applicable):
12 | ACCESS_CODE_IN_BOOKING,
13 | ACCESS_CODE_IN_COMMIT_EVENT or
14 | ACCESS_CODE_IN_PREPARE_EVENT (trip exec module).
15 |
16 | One of these access code moments must be accompanied
17 | by ACCESS_CODE_QR, ACCESS_CODE_PDF, ACCESS_CODE_TOKEN,
18 | ACCESS_CODE_LINK, ACCESS_CODE_TICKETSTOCK.
19 |
20 | At last, to provide direct planning-booking-unlocking
21 | you must add ATOMIC_BOKKING_UNLOCKING.
22 | end note
23 |
24 | MP -> TO : POST /booking/ \nMUST be directly executed in\ncase of ATOMIC_PLANNING_AND_BOOKING
25 | note over TO
26 | The TO recalls the persisted leg in
27 | the offer by taking the ID from the body
28 | of this request. The TO reservates the
29 | asset from the planning __OR__ reserves and
30 | assignes an asset to the leg __OR__ postpones
31 | this assignment until the execution module.
32 | end note
33 | return booking in PENDING state\nIn case of ACCESS_CODE_IN_BOOKING\nit must contain access information
34 |
35 | note over MP
36 | The MP has to book all the legs of the trip.
37 | If all reply with a booking in PENDING state,
38 | he can continue COMMITting the bookings
39 | end note
40 |
41 | MP -> TO: POST /booking/{id}/events { "operation": "COMMIT" }
42 | return booking in CONFIRMED state\nIn case of ACCESS_CODE_IN_COMMIT_EVENT\nit must contain access information
43 |
44 | == trip execution ==
45 | @enduml
46 |
--------------------------------------------------------------------------------
/plantuml/Booking/postponed-commit.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Postponed commit
2 | title Planning Scenario 'postponed commit' - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | note over TO
9 | **ProcessIdentifiers**: POSTPONED_COMMIT and ACCESS_CODE_BY_TO.
10 | Add one of these to specify the moment of supplying the
11 | access code (if applicable):
12 | ACCESS_CODE_IN_PREPARE_EVENT (trip exec module).
13 |
14 | One of these access code moments must be accompanied
15 | by ACCESS_CODE_QR, ACCESS_CODE_PDF, ACCESS_CODE_TOKEN,
16 | ACCESS_CODE_LINK, ACCESS_CODE_TICKETSTOCK.
17 | end note
18 |
19 | MP -> TO : POST /booking/ \n**This scenario is only**\n**allowed with process identifier POSTPONED_COMMIT**\nAnd is not allowed to combine with \nATOMIC_PLANNING_AND_BOOKING or ATOMIC_BOOKING_UNLOCKING
20 | note over TO
21 | The TO recalls the persisted leg in
22 | the offer by taking the ID from the body
23 | of this request. The TO reservates the
24 | asset from the planning __OR__ reserves and
25 | assignes an asset to the leg __OR__ postpones
26 | this assignment until the execution module.
27 | end note
28 | return booking in PENDING state
29 |
30 | note over MP
31 | The MP has to book all the legs of the trip.
32 | If all reply with a booking in PENDING state,
33 | he can continue COMMITting the bookings
34 | end note
35 |
36 | MP -> TO: POST /booking/{id}/events { "operation": "COMMIT" }
37 | return booking in CONDITIONAL_CONFIRMED state
38 |
39 | ...
40 | alt accepting a leg
41 | TO -> MP: POST /booking/{id}/events { "operation": "COMMIT" }
42 | return ok
43 | note over MP
44 | process of booking is finished,
45 | just as the default process
46 | end note
47 | == trip execution ==
48 | else denying a leg
49 | TO -> MP: POST /booking/{id}/events { "operation": "DENY" }
50 | return ok
51 | note over MP
52 | process of booking an alternative
53 | for this leg should be started,
54 | the end user should be informed.
55 | end note
56 | end
57 | @enduml
58 |
--------------------------------------------------------------------------------
/plantuml/Booking/to-booking-leg.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | title TO is booking a leg
4 |
5 | TO->MP: /bookings, body containing already an id assigned by the TO
6 | MP->TO: 201
7 | alt status of booking is PENDING
8 | MP->TO: /bookings/{id}/events - COMMIT
9 | TO->MP: 200
10 | else
11 |
12 | end
13 |
14 | @enduml
15 |
--------------------------------------------------------------------------------
/plantuml/OperatorInformation/default.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Default operator information
2 | title Planning Scenario 'default operator information' - V1.0.0
3 | participant MP
4 | participant Lookup
5 | participant TO
6 |
7 | autoactivate on
8 |
9 | note over TO
10 | **ProcessIdentifiers**: DEFAULT
11 | end note
12 |
13 | note over MP
14 | Endpoints that could be used by the MP:
15 | /operator/meta
16 | /operator/available-assets
17 | /operator/stations
18 | /operator/regions
19 | /operator/operating-calendar
20 | /operator/operating-hours
21 | /operator/pricing-plans
22 | /operator/information
23 | end note
24 |
25 | MP -> TO : e.g. /operator/available-assets
26 | return available assettypes (optionally containing assets)
27 |
28 | note over Lookup
29 | Endpoints that could be used by the MP:
30 | /operator/meta
31 | /operator/information
32 | /operator/regions
33 | end note
34 |
35 | Lookup -> TO : e.g. /operator/meta
36 | return precise description of the implementation of the API
37 | @enduml
38 |
--------------------------------------------------------------------------------
/plantuml/Payment/default.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Default payment
2 | title Payment Scenario - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | note over MP
9 | to facilitate the clearance process, the MP can request the
10 | list of all legs he has to pay to the TO.
11 | end note
12 |
13 | MP -> TO : /payment/journal-entry
14 | return list of all journal entries matching the query
15 |
16 | note over MP
17 | to report extra costs (as well from TO to MP as vice versa)
18 | end note
19 |
20 | MP -> TO : /payment/{id}/claim-extra-costs
21 | return ok
22 |
23 | TO -> MP : /payment/{id}/claim-extra-costs
24 | return ok
25 |
26 | @enduml
27 |
--------------------------------------------------------------------------------
/plantuml/Planning/book-and-go.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Book-and-go
2 | title Planning Scenario 'book-and-go' - V1.0.0
3 | actor User
4 | participant App
5 |
6 | autoactivate on
7 |
8 | note over User
9 | I'm standing in front of asset x
10 | and I want to travel now
11 | end note
12 | note over MP, TO
13 | **ProcessIdentifiers**: ASSET_BASED, combined with
14 | BLUETOOTH_SCAN, QR_SCAN, MANUAL_ENTRY,
15 | NFC_SCAN or OTHER_ID.
16 |
17 | In case you want to plan, book & open an asset
18 | in one go, add ATOMIC_PLANNING_AND_BOOKING and
19 | (actually booking module) ATOMIC_BOOKING_UNLOCKING.
20 | If you don't, the offers should be returned to the
21 | end user.
22 | end note
23 |
24 | User -> App: find out available asset
25 | note over App
26 | first, find out the operators at the spot where
27 | the end user is.
28 | Do a bluetooth scan, scan a code,
29 | enter a code on a bike, (RFID?), anything
30 | that uniquely identifies an asset, take into account
31 | the requirements of the TOs
32 | end note
33 |
34 | App -> MP : request planning options with this asset
35 | note over MP
36 | It's time to contact the TOs with the found information
37 | in the planning request.
38 | end note
39 |
40 | MP -> TO : prebook (booking-intent=true & asset info)\n/plannings/?booking-intent=true\n{... ,"useAssets": [ e.g. scanned QR code ] ...}
41 | note over TO
42 | The TO should filter the results using the provided asset information
43 | and also prebook the assets (no reservation yet!).
44 | end note
45 | return offer
46 |
47 | == story continues in booking ==
48 | @enduml
49 |
--------------------------------------------------------------------------------
/plantuml/Planning/book-from-map.plantuml:
--------------------------------------------------------------------------------
1 | @startuml book-from-map
2 | title Planning Scenario 'book-from-map' - V1.0.0
3 | actor User
4 | participant App
5 |
6 | autoactivate on
7 |
8 | note over MP, TO
9 | **ProcessIdentifiers**: ASSET_BASED and EXACT_ID
10 |
11 | In case you want to plan, book & open an asset
12 | in one go, add ATOMIC_PLANNING_AND_BOOKING and
13 | (actually booking module) ATOMIC_BOOKING_UNLOCKING.
14 | If you don't, the offer should be returned to the
15 | end user.
16 | end note
17 |
18 | User -> App : show area map
19 | App -> MP : show assets on map
20 |
21 | MP -> TO : /operator/available-assets
22 | return available assets
23 | return available assets
24 | return shows map
25 |
26 | note over User
27 | Looks at map,
28 | selects an asset
29 | end note
30 |
31 | note over User, App
32 | shows information about the asset
33 | (optionally request extra data using the /operator/information)
34 | end note
35 |
36 | User -> App : request booking of asset
37 |
38 | App -> MP : request booking of this asset
39 |
40 | MP -> TO : prebook (booking-intent=true & assetId in planningRequest)
41 | return single offer of the asset
42 |
43 | == this story continues in booking ==
44 | @enduml
45 |
--------------------------------------------------------------------------------
/plantuml/Planning/planned-trip.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Planned trip
2 | title Planning Scenario 'planned trip' - V1.0.0
3 | actor User
4 | participant App
5 |
6 | autoactivate on
7 |
8 | note over MP, TO
9 | **ProcessIdentifiers** : PLANNING_BASED
10 | The TO is allowed to return AssetTypes without real
11 | assets, only telling the number of available assets of
12 | each type.
13 | end note
14 |
15 | User -> App : I want to travel from A to B\n leaving at C
16 |
17 | App -> MP : I've got a user who wants\nto travel from A to B, leaving at C
18 | note over MP
19 | the MP should doing some routing
20 | and find TOs in the area where the
21 | planned trip will take place.
22 | Time to contact the selected TOs
23 | end note
24 |
25 | MP -> TO : look for planning options (optional)
26 | note over TO
27 | planning options
28 | without booking intent. The results don't have
29 | to be precise, but it must be likely that you can
30 | provide an asset for this trip.
31 | end note
32 | return likely legs
33 |
34 | note over MP
35 | The MP gathers all results from the TOs.
36 | Constructs the best trips - using the knowledge
37 | of how his end user likes to travel.
38 | Time to ask the TOs to 'prebook'
39 | end note
40 |
41 | MP -> TO : prebook (booking-intent=true)
42 | note over TO
43 | the TO 'prebooks' the trips. It serves offers with a unique
44 | ID. This ID will remain the ID for the whole lifetime of
45 | the trip.
46 | The result should contain real offers;
47 | there must be a high guarantee that the legs can be done
48 | end note
49 | return offers
50 |
51 | note over MP
52 | The MP constructs the best suitable trips.
53 | end note
54 |
55 | return best trips
56 |
57 | return best trips
58 | @enduml
59 |
--------------------------------------------------------------------------------
/plantuml/Support/default.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Support
2 | title Support Scenario - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | note over MP
9 | to facilitate reporting support issues, the
10 | MP can call POST /support. To monitor the
11 | progress the /support/{id}/status can be used
12 | end note
13 |
14 | MP -> TO : /support/
15 | note over TO
16 | The message should contain information about
17 | the end user (=traveler) that is reporting the
18 | issue for contact purposes (phone number),
19 | the location and time and a priority.
20 | end note
21 | return issue
22 |
23 | note over MP
24 | After creating an issue, the MP can monitor
25 | the issue. The {id} is the id of the leg.
26 | end note
27 |
28 | MP -> TO : /issue/{id}/status
29 | return all statusses of the reported issue(s) on this leg
30 |
31 | @enduml
32 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/change-leg.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Support
2 | title Trip execution - changes - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | TO -> MP : PUT /legs/{id}
9 | note over TO
10 | The TO can make slight changes in the leg.
11 | The MP is allowed to reject the changes, but
12 | can accept them as long there are no financial
13 | consequenses. In that case the current booking
14 | should be cancelled and a new one should be
15 | added.
16 | end note
17 | return ok
18 |
19 | @enduml
20 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/finish-asset-by-TO.plantuml:
--------------------------------------------------------------------------------
1 | @startuml finish-asset-by-TO
2 | title Trip execution Scenario Part 'Close asset by TO' - V1.0.0
3 |
4 | participant App
5 | participant MP
6 | participant TO
7 | participant Asset
8 |
9 | App -> MP : stop
10 | MP -> TO : /executions/{id}/events { "operation" : "FINISH" }
11 | TO -> Asset: close
12 | return ok
13 | TO -> MP: ok
14 |
15 | @enduml
16 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/finish-asset-by-app.plantuml:
--------------------------------------------------------------------------------
1 | @startuml finish-asset-by-app
2 | title Trip execution Scenario Part 'close asset by app' - V1.0.0
3 |
4 | participant App
5 | participant MP
6 | participant TO
7 | participant Asset
8 |
9 | App -> MP : stop
10 | MP -> TO : /executions/{id}/events { "operation" : "START_FINISHING" }
11 | return execution, in case of 'LOCK_CODE_IN_FINISHING_EVENT'\nit must contain lock information
12 |
13 | MP -> App : lock instructions
14 | App -> Asset : close
15 | return ok
16 |
17 | App -> MP : bike closed
18 | MP -> TO : /executions/{id}/events { "operation" : "FINISH" }
19 | return ok
20 |
21 |
22 | @enduml
23 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/open-asset-by-TO.plantuml:
--------------------------------------------------------------------------------
1 | @startuml open-asset-by-TO
2 | title Trip execution Scenario Part 'Open asset by TO' - V1.0.0
3 |
4 | participant App
5 | participant MP
6 | participant TO
7 | participant Asset
8 |
9 | alt without processIdentifier 'ATOMIC_BOOKING_UNLOCKING'
10 | App -> MP : I want to start executing my booked leg
11 | end
12 |
13 | alt in case there is no asset assigned yet, but if it's needed
14 | MP -> TO : /executions/{id}/available-assets
15 | return available nearest assets
16 | MP -> App: show assets
17 | note right of App
18 | user must select one
19 | end note
20 | App -> MP : selected asset
21 | MP -> TO : /executions/{id}/events { "operation" : "ASSIGN_ASSET" }
22 | return ok
23 | end
24 |
25 | MP -> TO : /executions/{id}/events { "operation" : "SET_IN_USE" }
26 | TO -> Asset: unlock
27 | return ok
28 | TO -> MP: ok
29 |
30 | @enduml
31 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/open-asset-by-app.plantuml:
--------------------------------------------------------------------------------
1 | @startuml open-asset-by-app
2 | title Trip execution Scenario Part 'Open asset by app' - V1.0.0
3 |
4 | participant App
5 | participant MP
6 | participant TO
7 | participant Asset
8 |
9 | alt without processIdentifier 'ATOMIC_BOOKING_UNLOCKING'
10 | App -> MP : I want to start executing my booked leg
11 | end
12 |
13 | alt in case there is no asset assigned yet, but if it's needed
14 | MP -> TO : /executions/{id}/available-assets
15 | return available nearest assets
16 | MP -> App: show assets
17 | note right of App
18 | user must select one
19 | end note
20 | App -> MP : selected asset
21 | MP -> TO : /executions/{id}/events { "operation" : "ASSIGN_ASSET" }
22 | return ok
23 | end
24 |
25 | alt in case of 'ACCESS_CODE_IN_PREPARE_EVENT'
26 | MP -> TO : /executions/{id}/events { "operation" : "PREPARE" }
27 | return execution, in case of 'ACCESS_CODE_IN_PREPARE_EVENT'\nit must contain acces information
28 | MP -> App : open instructions
29 | else in case the access instructions have already been provided
30 | note over MP
31 | The MP has received open instructions before (access code) in the
32 | result of the BOOKING or COMMIT event. This is dependent of the supplied
33 | processIdentifiers.
34 | end note
35 | end
36 |
37 | App -> Asset : open
38 | note over App, MP
39 | we are aware of the fact that this a very hard part to cover
40 | and the only generic solution that works is for now the deep link.
41 | end note
42 | return ok
43 |
44 | App -> MP : bike opened
45 | MP -> TO : /executions/{id}/events { "operation" : "SET_IN_USE" }
46 | return ok
47 |
48 | @enduml
49 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/pause-asset-by-TO.plantuml:
--------------------------------------------------------------------------------
1 | @startuml pause-asset-by-TO
2 | title Trip execution Scenario Part 'pause asset by TO' - V1.0.0
3 |
4 | participant App
5 | participant MP
6 | participant TO
7 | participant Asset
8 |
9 | App -> MP : pause
10 | MP -> TO : /executions/{id}/events { "operation" : "PAUSE" }
11 | TO -> Asset : lock
12 | return ok
13 | TO -> MP: execution, in case of 'LOCK_CODE_IN_PAUSE_EVENT'\nit must contain acces information
14 |
15 | ...
16 |
17 | App -> MP : start again
18 | MP -> TO : /executions/{id}/events { "operation" : "SET_IN_USE" }
19 |
20 | TO -> Asset : unlock
21 | return ok
22 |
23 | TO -> MP : ok
24 |
25 | @enduml
26 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/pause-asset-by-app.plantuml:
--------------------------------------------------------------------------------
1 | @startuml pause-asset-by-app
2 | title Trip execution Scenario Part 'pause asset by app' - V1.0.0
3 |
4 | participant App
5 | participant MP
6 | participant TO
7 | participant Asset
8 |
9 | App -> MP : pause
10 | MP -> TO : /executions/{id}/events { "operation" : "PAUSE" }
11 | return execution, in case of 'LOCK_CODE_IN_PAUSE_EVENT'\nit must contain acces information
12 |
13 | MP -> App : lock instructions
14 | App -> Asset : pause
15 | return ok
16 |
17 | ...
18 |
19 | App -> MP : start again
20 | MP -> TO : /executions/{id}/events { "operation" : "PREPARE" }
21 | return execution, in case of 'ACCESS_CODE_IN_PREPARE_EVENT'\nit must contain acces information
22 |
23 | MP -> App : unlock instructions
24 | App -> Asset : unlock (bluetooth)
25 | return ok
26 |
27 | App -> MP : bike opened
28 | MP -> TO : /executions/{id}/events { "operation" : "SET_IN_USE" }
29 | return ok
30 |
31 | @enduml
32 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/progress.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Support
2 | title Trip execution - progress - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | MP -> TO : GET /legs/{id}/progress
9 | note over TO
10 | Report the last recorded location
11 | of the executing trip, including the
12 | distance and duration of the trip until the reported
13 | location.
14 | end note
15 | return location report
16 |
17 | note over MP
18 | In case of PROGRESS_NOTIFICATION the TO will
19 | send the progress to the MP.
20 | end note
21 |
22 | TO -> MP : POST /issue/{id}/status
23 | return ok
24 |
25 | @enduml
26 |
--------------------------------------------------------------------------------
/plantuml/TripExecution/to-controlled.plantuml:
--------------------------------------------------------------------------------
1 | @startuml Trip execution - TO controlled
2 | title Trip execution Scenario - to-controlled - V1.0.0
3 | participant MP
4 | participant TO
5 |
6 | autoactivate on
7 |
8 | alt USE_PREPARE_TO_INDICATE_START
9 |
10 | note over MP
11 | The taxi operator sends a PREPARE event
12 | whenever the taxi starts
13 | moving to the pickup point
14 | end note
15 |
16 | TO -> MP : /legs/{id}/events - PREPARE
17 | return ok
18 | end alt
19 |
20 | alt ETA_NOTIFICATION
21 | note over MP
22 | The taxi operator sends notifications about
23 | the ETA
24 | end note
25 |
26 | TO -> MP : /bookings/{id}/notifications - ETA - comment contains timestamp
27 | return ok
28 |
29 | TO -> MP : /bookings/{id}/notifications - ETA - comment="Arrived"
30 | return ok
31 | end alt
32 |
33 | TO -> MP : /legs/{id}/events - SET_IN_USE
34 | return ok
35 |
36 | TO -> MP : /legs/{id}/events - FINISH
37 | return ok
38 |
39 | @enduml
40 |
--------------------------------------------------------------------------------
/plantuml/booking-process-activity-diagram.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | title TOMP API workflow - booking process
4 |
5 | start
6 |
7 | while (foreach leg)
8 | #green:Book leg per TO;
9 | if (booking ok?) then (yes)
10 | else (no)
11 | while (foreach booked leg)
12 | #green:Cancel leg;
13 | end while (ready)
14 | stop;
15 | endif
16 | end while (ready)
17 |
18 | while (foreach leg)
19 | #green:Commit leg;
20 | end while (ready)
21 |
22 | stop
23 |
24 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel-booking-commit.plantuml:
--------------------------------------------------------------------------------
1 | @startuml booking module
2 |
3 | title booking: POST /bookings/{id}/events
4 |
5 | set namespaceSeparator ::
6 |
7 | class request::bookingOperation {
8 | operation
9 | }
10 |
11 | class result::booking {
12 | id
13 | state = CONFIRMED
14 | }
15 | class result::leg {
16 | id // first leg in legs should have same id as booking
17 | state = NOT_STARTED
18 | assetType // optionally contains assets
19 | asset // empty, unless unique asset booked
20 | pricing // empty, unless broker
21 | suboperator // empty, unless broker
22 | }
23 |
24 | class result::fare {}
25 | class result::condition {}
26 |
27 | result::booking -left-* result::leg : legs, normally 1
28 | result::booking -down-> result::fare : pricing
29 |
30 | result::leg -up-* result::condition
31 | result::leg --> result::fare: pricing // empty, unless broker
32 |
33 | request::bookingOperation ..> result::booking : POST /bookings/{id}/events
34 |
35 |
36 | @enduml
37 |
--------------------------------------------------------------------------------
/plantuml/objectmodel-booking-post.plantuml:
--------------------------------------------------------------------------------
1 | @startuml booking module
2 |
3 | title booking: POST /bookings/
4 |
5 | set namespaceSeparator ::
6 |
7 | class request::bookingRequest extends planningRequest {
8 | id // booking-id from planning module
9 | }
10 |
11 | class request::customer extends traveler {
12 | id // maas-id
13 | name parts
14 | phones
15 | email
16 | birthdate
17 | address
18 | cards
19 | licenses
20 | }
21 |
22 | class result::booking extends request::bookingRequest {
23 | id
24 | state = PENDING
25 | }
26 | class result::leg {
27 | id // first leg in legs should have same id as booking
28 | state = NOT_STARTED
29 | assetType // optionally contains assets
30 | asset // empty, unless unique asset booked
31 | pricing // empty, unless broker
32 | suboperator // empty, unless broker
33 | }
34 |
35 | class result::fare {}
36 | class result::condition {}
37 |
38 | request::bookingRequest -right-> request::customer
39 | result::booking -left-* result::leg : legs, normally 1
40 | result::booking -down-> result::fare : pricing
41 |
42 | result::leg -up-* result::condition
43 | result::leg --> result::fare: pricing // empty, unless broker
44 |
45 | request::bookingRequest ..> result::booking : POST /bookings/
46 |
47 | @enduml
48 |
--------------------------------------------------------------------------------
/plantuml/objectmodel-planning.plantuml:
--------------------------------------------------------------------------------
1 | @startuml planning module
2 |
3 | title Planning phase
4 |
5 | set namespaceSeparator ::
6 |
7 | request::planningRequest ..> result::planning : POST /plannings/
8 | request::planningRequest -right-> request::place : from
9 | request::planningRequest -right-> request::place : to
10 | request::planningRequest -right-* request::traveler : travelers
11 |
12 | request::planningRequest <|-- result::booking
13 | request::planningRequest <|-- result::leg
14 |
15 | result::planning -left-* result::booking : options
16 |
17 | result::booking -left-* result::leg : legs, normally 1
18 | result::booking -down-> result::fare : pricing
19 |
20 | result::leg -up-* result::condition
21 | result::leg --> result::fare: pricing // empty, unless broker
22 |
23 | class request::planningRequest {
24 | radius
25 | departureTime
26 | arrivalTime
27 | nrOfTravelers
28 | asset references
29 | }
30 | class result::planning {
31 | validuntil
32 | }
33 | class request::place {
34 | name
35 | coordinates
36 |
37 | }
38 | class request::traveler {
39 | age
40 | cardTypes eg payment, discount
41 | licenseTypes eg driver
42 | requirements eg disabilities
43 | }
44 | class result::booking {
45 | id : required when booking-intent=true
46 | customer // empty
47 | state = NEW
48 | }
49 | class result::leg {
50 | id // first leg in legs should have same id as booking
51 | state = NOT_STARTED
52 | assetType // optionally contains assets
53 | asset // empty, unless unique asset planned
54 | pricing // empty, unless broker
55 | suboperator // empty, unless broker
56 | }
57 | class result::condition {}
58 | class result::fare {}
59 |
60 |
61 | @enduml
62 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/asset.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | skinparam package {
3 | BorderStyle dotted
4 | }
5 |
6 | frame "Asset" {
7 | Asset }-up- AssetType
8 | }
9 |
10 | package "Travel right" {
11 | Asset .right.> Leg
12 | AssetType ..> Leg
13 | Leg -up-> Booking
14 | }
15 |
16 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel/assetType.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Asset {
3 | +String id
4 | Boolean isReserved
5 | String isReservedFrom
6 | String isReservedTo
7 | Boolean isDisabled
8 | String rentalUrl
9 | String rentalUrlAndroid
10 | String rentalUrlIOS
11 | Number mileage
12 | String licensePlate
13 | }
14 | Asset -- "1..1" AssetProperties : overriddenProperties >
15 | class AssetProperties {
16 | String name
17 | Place location
18 | String fuel
19 | String energyLabel
20 | Number co2PerKm
21 | String brand
22 | String model
23 | Integer buildingYear
24 | Boolean travelAbroad
25 | Boolean airConditioning
26 | Boolean cabrio
27 | String colour
28 | String cargo
29 | String easyAccessibility
30 | Integer gears
31 | String gearbox
32 | String image
33 | Boolean infantSeat
34 | Integer persons
35 | Boolean pets
36 | String propulsion
37 | Boolean smoking
38 | Integer stateOfCharge
39 | Boolean towingHook
40 | Boolean undergroundParking
41 | Boolean winterTires
42 | Integer maxSpeed
43 | Boolean helmetRequired
44 | String other
45 | Integer nrOfDoors
46 | Object meta
47 | AssetAccessMethods[] accessMethods
48 | }
49 | note right of AssetProperties::fuel
50 | NONE
51 | GASOLINE
52 | DIESEL
53 | ELECTRIC
54 | HYBRID_GASOLINE
55 | HYBRID_DIESEL
56 | HYBRID_GAS
57 | HYDROGEN
58 | GAS
59 | BIO_MASS
60 | KEROSINE
61 | OTHER
62 | end note
63 | note right of AssetProperties::energyLabel
64 | A B C D E
65 | end note
66 | note right of AssetProperties::easyAccessibility
67 | LIFT
68 | ESCALATOR
69 | GROUND_LEVEL
70 | SIGHTIMPAIRMENT
71 | HEARINGIMPAIRMENT
72 | WHEELCHAIR
73 | end note
74 | note right of AssetProperties::gearbox
75 | MANUAL
76 | AUTOMATIC
77 | SEMIAUTOMATIC
78 | end note
79 | note right of AssetProperties::propulsion
80 | MUSCLE
81 | ELECTRIC
82 | GASOLINE
83 | DIESEL
84 | HYBRID
85 | LPG
86 | HYDROGEN
87 | end note
88 | AssetProperties -left-{ Requirement : ancillaries >
89 | class Requirement {
90 | String source
91 | +String category
92 | +String number
93 | String type
94 | String memo
95 | Integer variable-number
96 | String applicable-days
97 | }
98 | class AssetType {
99 | +String id
100 | String stationId
101 | Integer nrAvailable
102 | AssetClass assetClass
103 | String assetSubClass
104 | Condition[] conditions
105 | SystemPricingPlan[] applicablePricings
106 | }
107 | AssetType -{ Asset : assets >
108 | AssetType -- "0..1" AssetProperties : sharedProperties >
109 | @enduml
110 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/booking.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class Booking <> {
3 | BookingState state
4 | Leg[] legs
5 | String departureTime
6 | String arrivalTime
7 | AssetType mainAssetType
8 | Object extraData
9 | Integer safeWaitTime
10 | Integer maxWaitTime
11 | Integer safeTravelTime
12 | Integer maxTravelTime
13 | }
14 | Booking -- "0..1" Fare : pricing >
15 | class Fare {
16 | +Boolean estimated
17 | String description
18 | String class
19 | }
20 | Fare -{ FarePart : parts >
21 | class FarePart {
22 | String type
23 | String kind
24 | String unitType
25 | Number units
26 | Number scaleFrom
27 | Number scaleTo
28 | String scaleType
29 | String name
30 | String class
31 | Number minimumAmount
32 | Number maximumAmount
33 | Object meta
34 | }
35 | FarePart -up-|> AmountOfMoney
36 | class AmountOfMoney {
37 | Number amount
38 | Number amountExVat
39 | String currencyCode
40 | Number vatRate
41 | Country vatCountryCode
42 | }
43 | @enduml
44 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/bookingOperation.plantuml:
--------------------------------------------------------------------------------
1 | @startuml g
2 | class BookingOperation {
3 | +String operation
4 | String origin
5 | }
6 | @enduml
7 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/bookingRequest.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class BookingRequest {
3 | String id
4 | String callbackUrl
5 | }
6 | BookingRequest -- "0..1" Place : from >
7 | BookingRequest -- "0..1" Place : to >
8 | BookingRequest -- "0..1" Customer : customer >
9 | class Place {
10 | String name
11 | StopReference[] stopReference
12 | String stationId
13 | +Coordinates coordinates
14 | Address physicalAddress
15 | Object extraInfo
16 | }
17 | class Customer <> {
18 | +String id
19 | String travelerReference
20 | String initials
21 | String firstName
22 | String lastName
23 | String middleName
24 | String prefix
25 | String postfix
26 | Phone[] phones
27 | String email
28 | String birthDate
29 | Address address
30 | String photo
31 | Card[] cards
32 | License[] licenses
33 | }
34 | @enduml
35 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/condition.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Condition {
3 | +String conditionType
4 | String id
5 | }
6 | class ConditionDeposit {
7 | }
8 | ConditionDeposit -up-|> Condition
9 | class ConditionPayWhenFinished {
10 | }
11 | ConditionPayWhenFinished -up-|> Condition
12 | class ConditionPostponedCommit {
13 | +String ultimateResponseTime
14 | }
15 | ConditionPostponedCommit -up-|> Condition
16 | class ConditionRequireBookingData {
17 | +String requiredFields
18 | String claims
19 | }
20 | ConditionRequireBookingData -up-|> Condition
21 | class ConditionReturnArea {
22 | String stationId
23 | Coordinates coordinates
24 | }
25 | ConditionReturnArea -up-|> Condition
26 | ConditionReturnArea -- "0..1" GeojsonPolygon : returnArea >
27 | ConditionReturnArea -down-{ SystemHours : returnHours >
28 | class GeojsonPolygon {
29 | }
30 | class SystemHours {
31 | String userType
32 | String stationId
33 | String regionId
34 | +String startTime
35 | +String endTime
36 | }
37 | SystemHours -down-{ Day : days >
38 | enum Day {
39 | }
40 | class ConditionUpfrontPayment {
41 | }
42 | ConditionUpfrontPayment -up-|> Condition
43 | @enduml
44 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/customer.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Customer {
3 | +String id
4 | String travelerReference
5 | String initials
6 | String firstName
7 | String lastName
8 | String middleName
9 | String prefix
10 | String postfix
11 | Phone[] phones
12 | String email
13 | String birthDate
14 | Address address
15 | String photo
16 | }
17 | Customer -up-|> Traveler
18 | Customer -{ Card : cards >
19 | Customer -left-{ License : licenses >
20 | class Traveler {
21 | Boolean isValidated
22 | Integer age
23 | String referenceNumber
24 | String knownIdentifier
25 | String knownIdentifierProvider
26 | }
27 | Traveler -{ CardType : cardTypes >
28 | Traveler -left-{ LicenseType : licenseTypes >
29 | Traveler -up- "0..1" Requirements : requirements >
30 | class CardType {
31 | +String type
32 | String subType
33 | AssetClass assetClass
34 | String acceptors
35 | }
36 | class LicenseType {
37 | +AssetClass assetClass
38 | Country issuingCountry
39 | }
40 | class Requirements {
41 | }
42 | Requirements -{ Requirement : abilities >
43 | Requirements -{ Requirement : bringAlong >
44 | class Requirement {
45 | String source
46 | +String category
47 | +String number
48 | String type
49 | String memo
50 | Integer variable-number
51 | String applicable-days
52 | }
53 | class Card {
54 | String cardDescription
55 | +String cardNumber
56 | String cardAdditionalNumber
57 | +String validUntil
58 | Country country
59 | }
60 | Card -up-|> CardType
61 | class License {
62 | String number
63 | String licenseCode
64 | String validUntil
65 | }
66 | License -up-|> LicenseType
67 | @enduml
68 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/assetType.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Asset {
3 | +String id
4 | Boolean isReserved
5 | String isReservedFrom
6 | String isReservedTo
7 | Boolean isDisabled
8 | String rentalUrl
9 | String rentalUrlAndroid
10 | String rentalUrlIOS
11 | Number mileage
12 | String licensePlate
13 | }
14 | Asset -- "1..1" AssetProperties : overriddenProperties >
15 | class AssetProperties {
16 | String name
17 | Place location
18 | String fuel
19 | String energyLabel
20 | Number co2PerKm
21 | String brand
22 | String model
23 | Integer buildingYear
24 | Boolean travelAbroad
25 | Boolean airConditioning
26 | Boolean cabrio
27 | String colour
28 | String cargo
29 | String easyAccessibility
30 | Integer gears
31 | String gearbox
32 | String image
33 | Boolean infantSeat
34 | Integer persons
35 | Boolean pets
36 | String propulsion
37 | Boolean smoking
38 | Integer stateOfCharge
39 | Boolean towingHook
40 | Boolean undergroundParking
41 | Boolean winterTires
42 | Integer maxSpeed
43 | Boolean helmetRequired
44 | String other
45 | Integer nrOfDoors
46 | Object meta
47 | AssetAccessMethods[] accessMethods
48 | }
49 | note right of AssetProperties::fuel
50 | NONE
51 | GASOLINE
52 | DIESEL
53 | ELECTRIC
54 | HYBRID_GASOLINE
55 | HYBRID_DIESEL
56 | HYBRID_GAS
57 | HYDROGEN
58 | GAS
59 | BIO_MASS
60 | KEROSINE
61 | OTHER
62 | end note
63 | note right of AssetProperties::energyLabel
64 | A B C D E
65 | end note
66 | note right of AssetProperties::easyAccessibility
67 | LIFT
68 | ESCALATOR
69 | GROUND_LEVEL
70 | SIGHTIMPAIRMENT
71 | HEARINGIMPAIRMENT
72 | WHEELCHAIR
73 | end note
74 | note right of AssetProperties::gearbox
75 | MANUAL
76 | AUTOMATIC
77 | SEMIAUTOMATIC
78 | end note
79 | note right of AssetProperties::propulsion
80 | MUSCLE
81 | ELECTRIC
82 | GASOLINE
83 | DIESEL
84 | HYBRID
85 | LPG
86 | HYDROGEN
87 | end note
88 | AssetProperties -left-{ Requirement : ancillaries >
89 | class Requirement {
90 | String source
91 | +String category
92 | +String number
93 | String type
94 | String memo
95 | Integer variable-number
96 | String applicable-days
97 | }
98 | class AssetType {
99 | +String id
100 | String stationId
101 | Integer nrAvailable
102 | AssetClass assetClass
103 | String assetSubClass
104 | Condition[] conditions
105 | SystemPricingPlan[] applicablePricings
106 | }
107 | AssetType -{ Asset : assets >
108 | AssetType -- "0..1" AssetProperties : sharedProperties >
109 | @enduml
110 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/booking.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class Booking <> {
3 | BookingState state
4 | Leg[] legs
5 | String departureTime
6 | String arrivalTime
7 | AssetType mainAssetType
8 | Object extraData
9 | Integer safeWaitTime
10 | Integer maxWaitTime
11 | Integer safeTravelTime
12 | Integer maxTravelTime
13 | }
14 | Booking -- "0..1" Fare : pricing >
15 | class Fare {
16 | +Boolean estimated
17 | String description
18 | String class
19 | }
20 | Fare -{ FarePart : parts >
21 | class FarePart {
22 | String type
23 | String kind
24 | String unitType
25 | Number units
26 | Number scaleFrom
27 | Number scaleTo
28 | String scaleType
29 | String name
30 | String class
31 | Number minimumAmount
32 | Number maximumAmount
33 | Object meta
34 | }
35 | FarePart -up-|> AmountOfMoney
36 | class AmountOfMoney {
37 | Number amount
38 | Number amountExVat
39 | String currencyCode
40 | Number vatRate
41 | Country vatCountryCode
42 | }
43 | @enduml
44 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/bookingOperation.plantuml:
--------------------------------------------------------------------------------
1 | @startuml g
2 | class BookingOperation {
3 | +String operation
4 | String origin
5 | }
6 | @enduml
7 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/bookingRequest.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class BookingRequest {
3 | String id
4 | String callbackUrl
5 | }
6 | BookingRequest -- "0..1" Place : from >
7 | BookingRequest -- "0..1" Place : to >
8 | BookingRequest -- "0..1" Customer : customer >
9 | class Place {
10 | String name
11 | StopReference[] stopReference
12 | String stationId
13 | +Coordinates coordinates
14 | Address physicalAddress
15 | Object extraInfo
16 | }
17 | class Customer <> {
18 | +String id
19 | String travelerReference
20 | String initials
21 | String firstName
22 | String lastName
23 | String middleName
24 | String prefix
25 | String postfix
26 | Phone[] phones
27 | String email
28 | String birthDate
29 | Address address
30 | String photo
31 | Card[] cards
32 | License[] licenses
33 | }
34 | @enduml
35 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/condition.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Condition {
3 | +String conditionType
4 | String id
5 | }
6 | class ConditionDeposit {
7 | }
8 | ConditionDeposit -up-|> Condition
9 | class ConditionPayWhenFinished {
10 | }
11 | ConditionPayWhenFinished -up-|> Condition
12 | class ConditionPostponedCommit {
13 | +String ultimateResponseTime
14 | }
15 | ConditionPostponedCommit -up-|> Condition
16 | class ConditionRequireBookingData {
17 | +String requiredFields
18 | String claims
19 | }
20 | ConditionRequireBookingData -up-|> Condition
21 | class ConditionReturnArea {
22 | String stationId
23 | Coordinates coordinates
24 | }
25 | ConditionReturnArea -up-|> Condition
26 | ConditionReturnArea -- "0..1" GeojsonPolygon : returnArea >
27 | ConditionReturnArea -down-{ SystemHours : returnHours >
28 | class GeojsonPolygon {
29 | }
30 | class SystemHours {
31 | String userType
32 | String stationId
33 | String regionId
34 | +String startTime
35 | +String endTime
36 | }
37 | SystemHours -down-{ Day : days >
38 | enum Day {
39 | }
40 | class ConditionUpfrontPayment {
41 | }
42 | ConditionUpfrontPayment -up-|> Condition
43 | @enduml
44 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/customer.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Customer {
3 | +String id
4 | String travelerReference
5 | String initials
6 | String firstName
7 | String lastName
8 | String middleName
9 | String prefix
10 | String postfix
11 | Phone[] phones
12 | String email
13 | String birthDate
14 | Address address
15 | String photo
16 | }
17 | Customer -up-|> Traveler
18 | Customer -{ Card : cards >
19 | Customer -left-{ License : licenses >
20 | class Traveler {
21 | Boolean isValidated
22 | Integer age
23 | String referenceNumber
24 | String knownIdentifier
25 | String knownIdentifierProvider
26 | }
27 | Traveler -{ CardType : cardTypes >
28 | Traveler -left-{ LicenseType : licenseTypes >
29 | Traveler -up- "0..1" Requirements : requirements >
30 | class CardType {
31 | +String type
32 | String subType
33 | AssetClass assetClass
34 | String acceptors
35 | }
36 | class LicenseType {
37 | +AssetClass assetClass
38 | Country issuingCountry
39 | }
40 | class Requirements {
41 | }
42 | Requirements -{ Requirement : abilities >
43 | Requirements -{ Requirement : bringAlong >
44 | class Requirement {
45 | String source
46 | +String category
47 | +String number
48 | String type
49 | String memo
50 | Integer variable-number
51 | String applicable-days
52 | }
53 | class Card {
54 | String cardDescription
55 | +String cardNumber
56 | String cardAdditionalNumber
57 | +String validUntil
58 | Country country
59 | }
60 | Card -up-|> CardType
61 | class License {
62 | String number
63 | String licenseCode
64 | String validUntil
65 | }
66 | License -up-|> LicenseType
67 | @enduml
68 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/leg.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Leg {
3 | String id
4 | +Place from
5 | Place to
6 | String departureTime
7 | String arrivalTime
8 | String travelerReferenceNumbers
9 | Integer legSequenceNumber
10 | Fare pricing
11 | Suboperator suboperator
12 | ConditionUpfrontPayment[] conditions
13 | LegState state
14 | Duration departureDelay
15 | Duration arrivalDelay
16 | Distance distance
17 | Token ticket
18 | Token assetAccessData
19 | TokenArray allAssetAccessData
20 | }
21 | Leg -- "1..1" AssetType : assetType >
22 | Leg -- "0..1" Asset : asset >
23 | Leg -- "0..1" GeojsonLine : progressGeometry >
24 | class AssetType {
25 | +String id
26 | String stationId
27 | Integer nrAvailable
28 | AssetClass assetClass
29 | String assetSubClass
30 | AssetProperties sharedProperties
31 | SystemPricingPlan[] applicablePricings
32 | ConditionUpfrontPayment[] conditions
33 | }
34 | class Asset {
35 | +String id
36 | Boolean isReserved
37 | String isReservedFrom
38 | String isReservedTo
39 | Boolean isDisabled
40 | String rentalUrl
41 | String rentalUrlAndroid
42 | String rentalUrlIOS
43 | Number mileage
44 | String licensePlate
45 | +AssetProperties overriddenProperties
46 | }
47 | class GeojsonLine {
48 | }
49 | @enduml
50 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/meta.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class EndpointImplementation {
3 | +String version
4 | +String baseUrl
5 | }
6 | EndpointImplementation -{ Endpoint : endpoints >
7 | EndpointImplementation -{ Scenario : scenarios >
8 | EndpointImplementation -- "1..1" ProcessIdentifiers : processIdentifiers >
9 | class Endpoint {
10 | +String method
11 | +String path
12 | String eventType
13 | +String status
14 | Boolean supportsPaging
15 | Integer maxPageSize
16 | withoutPaging
17 | withPaging
18 | }
19 | enum Scenario {
20 | }
21 | class ProcessIdentifiers {
22 | +String operatorInformation
23 | +String planning
24 | +String booking
25 | +String tripExecution
26 | +String support
27 | +String payment
28 | +String general
29 | }
30 | @enduml
31 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/operator.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class StationInformation {
3 | +String stationId
4 | +String name
5 | +Coordinates coordinates
6 | String crossStreet
7 | String regionId
8 | String rentalMethods
9 | String rentalUrl
10 | String rentalUrlAndroid
11 | String rentalUrlIOS
12 | // StopPlace
13 | }
14 | StationInformation -- "0..1" Address : physicalAddress >
15 | class Address {
16 | +String streetAddress
17 | String street
18 | Integer houseNumber
19 | String houseNumberAddition
20 | String addressAdditionalInfo
21 | +String areaReference
22 | String city
23 | String province
24 | String state
25 | String postalCode
26 | Country country
27 | }
28 | class SystemAlert {
29 | +String alertId
30 | +String alertType
31 | String startAndEndTimes
32 | String stationIds
33 | String regionId
34 | String url
35 | +String summary
36 | String description
37 | String lastUpdated
38 | // SIRI
39 | }
40 | class SystemCalendar {
41 | String stationId
42 | String regionId
43 | +Integer startMonth
44 | +Integer startDay
45 | Integer startYear
46 | +Integer endMonth
47 | +Integer endDay
48 | Integer endYear
49 | // ValidDayBits
50 | }
51 | class SystemHours {
52 | String userType
53 | String stationId
54 | String regionId
55 | +String startTime
56 | +String endTime
57 | // ValidDayBits
58 | }
59 | SystemHours -down-{ Day : days >
60 | enum Day {
61 | }
62 | class SystemInformation {
63 | +String systemId
64 | +String language
65 | +String name
66 | String shortName
67 | String operator
68 | String url
69 | String purchaseUrl
70 | String discoveryUriAndroid
71 | String discoveryUriIOS
72 | String storeUriAndroid
73 | String storeUriIOS
74 | String startDate
75 | String phoneNumber
76 | String email
77 | String feedContactEmail
78 | +String timezone
79 | String licenseUrl
80 | +String typeOfSystem
81 | ChamberOfCommerceInfo chamberOfCommerceInfo
82 | String conditions
83 | String productType
84 | AssetClass[] assetClasses
85 | // OrganisationUnit
86 | }
87 | class SystemPricingPlan {
88 | +String planId
89 | String url
90 | +String name
91 | String stationId
92 | String regionId
93 | +Fare fare
94 | +Boolean isTaxable
95 | +String description
96 | }
97 | class SystemRegion {
98 | +String regionId
99 | +String name
100 | String type
101 | String typeUnit
102 | Number typeValue
103 | String areaStartTime
104 | String areaEndTime
105 | GeojsonPolygon serviceArea
106 | // GeographicalZones
107 | }
108 | SystemInformation -down-{ SystemRegion
109 | SystemInformation -down-{ StationInformation
110 | SystemInformation -down-{ SystemPricingPlan
111 | SystemInformation -down-{ SystemAlert
112 | SystemInformation -down-{ SystemCalendar
113 | SystemInformation -down-{ SystemHours
114 | @enduml
115 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/payment.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class JournalEntry <> {
3 | JournalCategory category
4 | String journalId
5 | String journalSequenceId
6 | String invoiceId
7 | String invoiceDate
8 | String expirationDate
9 | String comment
10 | Number distance
11 | String distanceType
12 | Integer usedTime
13 | Number rentalStartMileage
14 | BankAccount bankAccount
15 | }
16 | JournalEntry -- "0..1" JournalState : state >
17 | JournalEntry -- "0..1" ExtraCosts : details >
18 | JournalEntry -- "0..1" Fare : details >
19 | enum JournalState {
20 | }
21 | class ExtraCosts <> {
22 | +JournalCategory category
23 | +String description
24 | Number number
25 | String numberType
26 | BankAccount account
27 | Object meta
28 | }
29 | class Fare {
30 | +Boolean estimated
31 | String description
32 | String class
33 | }
34 | Fare -{ FarePart : parts >
35 | class FarePart <> {
36 | String type
37 | String kind
38 | String unitType
39 | Number units
40 | Number scaleFrom
41 | Number scaleTo
42 | String scaleType
43 | String name
44 | String class
45 | Number minimumAmount
46 | Number maximumAmount
47 | Object meta
48 | }
49 | @enduml
50 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/place.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class Place {
3 | String name
4 | String stationId
5 | +Coordinates coordinates
6 | Object extraInfo
7 | }
8 | Place -{ StopReference : stopReference >
9 | Place -- "0..1" Address : physicalAddress >
10 | class StopReference {
11 | +String type
12 | +String id
13 | +Country country
14 | }
15 | class Address {
16 | +String streetAddress
17 | String street
18 | Integer houseNumber
19 | String houseNumberAddition
20 | String addressAdditionalInfo
21 | +String areaReference
22 | String city
23 | String province
24 | String state
25 | String postalCode
26 | Country country
27 | }
28 | @enduml
29 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/planning.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Planning {
3 | +String validUntil
4 | }
5 | Planning -{ Booking : options >
6 | class Booking <> {
7 | BookingState state
8 | Leg[] legs
9 | Fare pricing
10 | String departureTime
11 | String arrivalTime
12 | AssetType mainAssetType
13 | Object extraData
14 | Integer safeWaitTime
15 | Integer maxWaitTime
16 | Integer safeTravelTime
17 | Integer maxTravelTime
18 | }
19 | @enduml
20 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/planningRequest.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class PlanningRequest {
3 | Integer radius
4 | Integer estimatedDistance
5 | String departureTime
6 | String arrivalTime
7 | Integer nrOfTravelers
8 | String useAssets
9 | String userGroups
10 | String useAssetTypes
11 | }
12 | PlanningRequest -- "1..1" Place : from >
13 | PlanningRequest -- "0..1" Place : to >
14 | PlanningRequest -{ Traveler : travelers >
15 | class Place {
16 | String name
17 | StopReference[] stopReference
18 | String stationId
19 | +Coordinates coordinates
20 | Address physicalAddress
21 | Object extraInfo
22 | }
23 | class Traveler {
24 | Boolean isValidated
25 | Integer age
26 | String referenceNumber
27 | String knownIdentifier
28 | String knownIdentifierProvider
29 | }
30 | Traveler -up-{ CardType : cardTypes >
31 | Traveler -{ LicenseType : licenseTypes >
32 | Traveler -- "0..1" Requirements : requirements >
33 | class CardType {
34 | +String type
35 | String subType
36 | AssetClass assetClass
37 | String acceptors
38 | }
39 | class LicenseType {
40 | +AssetClass assetClass
41 | Country issuingCountry
42 | }
43 | class Requirements {
44 | }
45 | Requirements -{ Requirement : abilities >
46 | Requirements -{ Requirement : bringAlong >
47 | class Requirement {
48 | String source
49 | +String category
50 | +String number
51 | String type
52 | String memo
53 | Integer variable-number
54 | String applicable-days
55 | }
56 | @enduml
57 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/details/token.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Token {
3 | +String validFrom
4 | +String validUntil
5 | +String tokenType
6 | }
7 | Token -- "0..1" TokenData : tokenData >
8 | class TokenQR {
9 | +String base64
10 | String version
11 | }
12 | TokenQR -up-|> TokenData
13 | class TokenData {
14 | +String tokenType
15 | }
16 | class TokenArray {
17 | }
18 | class TokenDefault {
19 | String url
20 | }
21 | TokenDefault -up-|> TokenData
22 | class TokenDeeplink {
23 | String url
24 | String knownParameters
25 | }
26 | TokenDeeplink -up-|> TokenData
27 | class TokenEKey {
28 | +Object ekey
29 | String key
30 | Object passkey
31 | String bdAddress
32 | String deviceName
33 | }
34 | TokenEKey -up-|> TokenData
35 |
36 | TokenArray -{ Token
37 | @enduml
38 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/leg.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Leg {
3 | String id
4 | +Place from
5 | Place to
6 | String departureTime
7 | String arrivalTime
8 | String travelerReferenceNumbers
9 | Integer legSequenceNumber
10 | Fare pricing
11 | Suboperator suboperator
12 | ConditionUpfrontPayment[] conditions
13 | LegState state
14 | Duration departureDelay
15 | Duration arrivalDelay
16 | Distance distance
17 | Token ticket
18 | Token assetAccessData
19 | TokenArray allAssetAccessData
20 | }
21 | Leg -- "1..1" AssetType : assetType >
22 | Leg -- "0..1" Asset : asset >
23 | Leg -- "0..1" GeojsonLine : progressGeometry >
24 | class AssetType {
25 | +String id
26 | String stationId
27 | Integer nrAvailable
28 | AssetClass assetClass
29 | String assetSubClass
30 | AssetProperties sharedProperties
31 | SystemPricingPlan[] applicablePricings
32 | ConditionUpfrontPayment[] conditions
33 | }
34 | class Asset {
35 | +String id
36 | Boolean isReserved
37 | String isReservedFrom
38 | String isReservedTo
39 | Boolean isDisabled
40 | String rentalUrl
41 | String rentalUrlAndroid
42 | String rentalUrlIOS
43 | Number mileage
44 | String licensePlate
45 | +AssetProperties overriddenProperties
46 | }
47 | class GeojsonLine {
48 | }
49 | @enduml
50 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/meta.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class EndpointImplementation {
3 | +String version
4 | +String baseUrl
5 | }
6 | EndpointImplementation -{ Endpoint : endpoints >
7 | EndpointImplementation -{ Scenario : scenarios >
8 | EndpointImplementation -- "1..1" ProcessIdentifiers : processIdentifiers >
9 | class Endpoint {
10 | +String method
11 | +String path
12 | String eventType
13 | +String status
14 | Boolean supportsPaging
15 | Integer maxPageSize
16 | withoutPaging
17 | withPaging
18 | }
19 | enum Scenario {
20 | }
21 | class ProcessIdentifiers {
22 | +String operatorInformation
23 | +String planning
24 | +String booking
25 | +String tripExecution
26 | +String support
27 | +String payment
28 | +String general
29 | }
30 | @enduml
31 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/operations.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | skinparam package {
3 | BorderStyle dotted
4 | }
5 |
6 | frame "Operations" {
7 | Booking --{ BookingOperation
8 | }
9 |
10 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel/operator.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class StationInformation {
3 | +String stationId
4 | +String name
5 | +Coordinates coordinates
6 | String crossStreet
7 | String regionId
8 | String rentalMethods
9 | String rentalUrl
10 | String rentalUrlAndroid
11 | String rentalUrlIOS
12 | }
13 | StationInformation -- "0..1" Address : physicalAddress >
14 | class Address {
15 | +String streetAddress
16 | String street
17 | Integer houseNumber
18 | String houseNumberAddition
19 | String addressAdditionalInfo
20 | +String areaReference
21 | String city
22 | String province
23 | String state
24 | String postalCode
25 | Country country
26 | }
27 | class SystemAlert {
28 | +String alertId
29 | +String alertType
30 | String startAndEndTimes
31 | String stationIds
32 | String regionId
33 | String url
34 | +String summary
35 | String description
36 | String lastUpdated
37 | }
38 | class SystemCalendar {
39 | String stationId
40 | String regionId
41 | +Integer startMonth
42 | +Integer startDay
43 | Integer startYear
44 | +Integer endMonth
45 | +Integer endDay
46 | Integer endYear
47 | }
48 | class SystemHours {
49 | String userType
50 | String stationId
51 | String regionId
52 | +String startTime
53 | +String endTime
54 | }
55 | SystemHours -down-{ Day : days >
56 | enum Day {
57 | }
58 | class SystemInformation {
59 | +String systemId
60 | +String language
61 | +String name
62 | String shortName
63 | String operator
64 | String url
65 | String purchaseUrl
66 | String discoveryUriAndroid
67 | String discoveryUriIOS
68 | String storeUriAndroid
69 | String storeUriIOS
70 | String startDate
71 | String phoneNumber
72 | String email
73 | String feedContactEmail
74 | +String timezone
75 | String licenseUrl
76 | +String typeOfSystem
77 | ChamberOfCommerceInfo chamberOfCommerceInfo
78 | String conditions
79 | String productType
80 | AssetClass[] assetClasses
81 | }
82 | class SystemPricingPlan {
83 | +String planId
84 | String url
85 | +String name
86 | String stationId
87 | String regionId
88 | +Fare fare
89 | +Boolean isTaxable
90 | +String description
91 | }
92 | class SystemRegion {
93 | +String regionId
94 | +String name
95 | String type
96 | String typeUnit
97 | Number typeValue
98 | String areaStartTime
99 | String areaEndTime
100 | GeojsonPolygon serviceArea
101 | }
102 | SystemInformation -down-{ SystemRegion
103 | SystemInformation -down-{ StationInformation
104 | SystemInformation -down-{ SystemPricingPlan
105 | SystemInformation -down-{ SystemAlert
106 | SystemInformation -down-{ SystemCalendar
107 | SystemInformation -down-{ SystemHours
108 | @enduml
109 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/overview.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | package "Planning and booking" {
4 | [Traveler] -- [Travel right]
5 | [Travel right] -- [Asset]
6 | }
7 | package "Trip execution" {
8 | [Travel right] -right- [Operations]
9 | }
10 | package "Support" {
11 | [Travel right] -- [Support requests]
12 | }
13 | package "Payment" {
14 | [Travel right] -- [Journal entries]
15 | }
16 |
17 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel/payment.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | skinparam package {
3 | BorderStyle dotted
4 | }
5 |
6 | frame "Payment" {
7 | JournalEntry <-- Fare
8 | JournalEntry <-- ExtraCosts
9 | }
10 |
11 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel/place.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | class Place {
3 | String name
4 | String stationId
5 | +Coordinates coordinates
6 | Object extraInfo
7 | }
8 | Place -{ StopReference : stopReference >
9 | Place -- "0..1" Address : physicalAddress >
10 | class StopReference {
11 | +String type
12 | +String id
13 | +Country country
14 | }
15 | class Address {
16 | +String streetAddress
17 | String street
18 | Integer houseNumber
19 | String houseNumberAddition
20 | String addressAdditionalInfo
21 | +String areaReference
22 | String city
23 | String province
24 | String state
25 | String postalCode
26 | Country country
27 | }
28 | @enduml
29 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/planning.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Planning {
3 | +String validUntil
4 | }
5 | Planning -{ Booking : options >
6 | class Booking <> {
7 | BookingState state
8 | Leg[] legs
9 | Fare pricing
10 | String departureTime
11 | String arrivalTime
12 | AssetType mainAssetType
13 | Object extraData
14 | Integer safeWaitTime
15 | Integer maxWaitTime
16 | Integer safeTravelTime
17 | Integer maxTravelTime
18 | }
19 | @enduml
20 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/planningRequest.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class PlanningRequest {
3 | Integer radius
4 | Integer estimatedDistance
5 | String departureTime
6 | String arrivalTime
7 | Integer nrOfTravelers
8 | String useAssets
9 | String userGroups
10 | String useAssetTypes
11 | }
12 | PlanningRequest -- "1..1" Place : from >
13 | PlanningRequest -- "0..1" Place : to >
14 | PlanningRequest -{ Traveler : travelers >
15 | class Place {
16 | String name
17 | StopReference[] stopReference
18 | String stationId
19 | +Coordinates coordinates
20 | Address physicalAddress
21 | Object extraInfo
22 | }
23 | class Traveler {
24 | Boolean isValidated
25 | Integer age
26 | String referenceNumber
27 | String knownIdentifier
28 | String knownIdentifierProvider
29 | }
30 | Traveler -up-{ CardType : cardTypes >
31 | Traveler -{ LicenseType : licenseTypes >
32 | Traveler -- "0..1" Requirements : requirements >
33 | class CardType {
34 | +String type
35 | String subType
36 | AssetClass assetClass
37 | String acceptors
38 | }
39 | class LicenseType {
40 | +AssetClass assetClass
41 | Country issuingCountry
42 | }
43 | class Requirements {
44 | }
45 | Requirements -{ Requirement : abilities >
46 | Requirements -{ Requirement : bringAlong >
47 | class Requirement {
48 | String source
49 | +String category
50 | +String number
51 | String type
52 | String memo
53 | Integer variable-number
54 | String applicable-days
55 | }
56 | @enduml
57 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/support.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | skinparam package {
3 | BorderStyle dotted
4 | }
5 |
6 | frame "Support" {
7 | Booking --{ SupportRequest
8 | SupportRequest -- Place
9 | SupportRequest -- SupportStatus
10 | }
11 |
12 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel/token.plantuml:
--------------------------------------------------------------------------------
1 | @startuml generated
2 | class Token {
3 | +String validFrom
4 | +String validUntil
5 | +String tokenType
6 | }
7 | Token -- "0..1" TokenData : tokenData >
8 | class TokenQR {
9 | +String base64
10 | String version
11 | }
12 | TokenQR -up-|> TokenData
13 | class TokenData {
14 | +String tokenType
15 | }
16 | class TokenArray {
17 | }
18 | class TokenDefault {
19 | String url
20 | }
21 | TokenDefault -up-|> TokenData
22 | class TokenDeeplink {
23 | String url
24 | String knownParameters
25 | }
26 | TokenDeeplink -up-|> TokenData
27 | class TokenEKey {
28 | +Object ekey
29 | String key
30 | Object passkey
31 | String bdAddress
32 | String deviceName
33 | }
34 | TokenEKey -up-|> TokenData
35 |
36 | TokenArray -{ Token
37 | @enduml
38 |
--------------------------------------------------------------------------------
/plantuml/objectmodel/traveler.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 | skinparam package {
3 | BorderStyle dotted
4 | }
5 |
6 | frame "Traveler" {
7 | [Traveler] -up-> [Customer]
8 | }
9 |
10 | package "Travel right" {
11 | [Traveler] .right.> [PlanningRequest]
12 | [PlanningRequest] .down.> [Planning]
13 | [Planning] .down.> [BookingRequest]
14 | [BookingRequest] .down.> [Booking]
15 | }
16 |
17 | @enduml
--------------------------------------------------------------------------------
/plantuml/objectmodel/travelright.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | skinparam package {
4 | BorderStyle dotted
5 | }
6 |
7 | frame "Travel right"{
8 | Planning ..> BookingRequest
9 | Planning <.. PlanningRequest
10 | Booking <.. BookingRequest
11 | Booking =down={ Leg
12 | PlanningRequest -down-{ Place
13 | Leg --{ Condition
14 | }
15 |
16 | package "Asset" {
17 | Leg .right. AssetType
18 | Leg .right. Asset
19 | AssetType --{ Asset
20 | }
21 |
22 | @enduml
--------------------------------------------------------------------------------
/plantuml/planned-trip-activity-diagram.plantuml:
--------------------------------------------------------------------------------
1 | @startuml planned-trip
2 |
3 | title TOMP API workflow - planned trip
4 |
5 | start
6 |
7 | floating note right: Green nodes are \nimplemented by TOMP API
8 |
9 | partition "planning process" {
10 | :Create routes;
11 | #green:Search TOs for legs;
12 | repeat
13 | if (offer required) then (yes)
14 | #green:Find out availability TOs;
15 | note right
16 | /planning/inquiries
17 | end note
18 | #green:Prebook best routes;
19 | note right
20 | /planning/offers
21 | end note
22 | else (no)
23 | :fetch external information\nfrom TO;
24 | endif
25 | repeat while(last TO?) is (no)
26 | ->:yes;
27 | }
28 |
29 | :Propose best trips to end user;
30 |
31 | partition "booking process" {
32 | repeat
33 | if (offer required) then (yes)
34 | #green:Book leg;
35 | note right
36 | /bookings/
37 | end note
38 | else (no)
39 | #green:One stop booking leg;
40 | note right
41 | /bookings/one-stop
42 | end note
43 | endif
44 | repeat while(last TO?) is (no)
45 | ->:yes;
46 | #green:Commit legs;
47 | note right
48 | /bookings/{id}/events COMMIT
49 | end note
50 | }
51 |
52 | partition "trip execution" {
53 | repeat
54 | #green:Start leg;
55 | note right
56 | /legs/{id}/events SET_IN_USE
57 | end note
58 | :Travel;
59 | #green:Stop leg;
60 | note right
61 | /legs/{id}/events FINISH
62 | end note
63 | repeat while (last leg?) is (no)
64 | ->:yes;
65 | }
66 |
67 | #green:Payment overview;
68 | note right
69 | /payment/journal-entry
70 | end note
71 |
72 | stop
73 |
74 | @enduml
75 |
--------------------------------------------------------------------------------
/plantuml/postponed-booking-process-activity-diagram.plantuml:
--------------------------------------------------------------------------------
1 | @startuml
2 |
3 | title TOMP API workflow - postponed booking process
4 |
5 | start
6 |
7 | while (foreach leg)
8 | #green:Book leg per TO;
9 | if (booking ok?) then (yes)
10 | else (no)
11 | while (foreach booked leg)
12 | #green:Cancel leg;
13 | end while (ready)
14 | stop;
15 | endif
16 | end while (ready)
17 |
18 | while (foreach leg)
19 | #green:Commit leg;
20 | note right
21 | at least commit responds with a booking
22 | in CONDITIONAL_CONFIRMED state
23 | end note
24 | end while (ready)
25 |
26 | :wait for TO to respond;
27 |
28 | if (TO responds) then (COMMIT)
29 | else (DENY)
30 | :look for another solution, trip or TO;
31 | endif
32 |
33 | stop
34 |
35 | @enduml
--------------------------------------------------------------------------------
/plantuml/readme.md:
--------------------------------------------------------------------------------
1 | # Plant UML descriptions of known flows
2 | The flows are grouped per modality, so have a look at them before implementing them, which flow suits you best. But when you have a different flow, please contact us: support@tomp-wg.org.
3 |
4 | You can click on the scenario names to open a plantuml sequence diagram. You can use https://planttext.com or http://plantuml.com to view it. Visual Studio Code also provides plantuml preview extensions.
5 |
6 | Tip: if you use Chrome, you can add the extension https://chrome.google.com/webstore/detail/plantuml-viewer/legbfeljfbjgfifnkmpoajgpgejojooj. You can click on the plantuml file and view it in 'raw' modus.
7 |
8 | # Building blocks
9 | In the first part, we describe all the 'building blocks', per module. After this we zoom in on specific operator types and describe there flows per operator type.
10 | The names in _italics_ are [processIdentifiers](https://github.com/TOMP-WG/TOMP-API/wiki/ProcessIdentifiers). They describe the way the TO wants to be threated ('care labels').
11 |
12 | ## Operator information
13 | The operator information actually contains no flow. All endpoints here can be called to get data. If you want to operate with all kinds of MPs, you must implement at least these endpoints, /operator/alerts is the only one that can be marked as optional.
14 |
15 | This information can also be used by 'lookups'; central locations where MPs can look up information about the TOs.
16 |
17 | The sequence diagram can be found here: [operator information](Planning/default.plantuml).
18 |
19 | ## Planning
20 | We have a few types of planning:
21 | * [planned-trip](Planning/planned-trip.plantuml): person(s) who want to travel from A to B on a certain time (departure or arrival): _PLANNING_BASED_.
22 | * [book-and-go](Planning/book-and-go.plantuml): person(s) who want to book an asset really nearby and go instantly: _ASSET_BASED_ OR _SPECIFIC_LOCATION_BASED_.
23 | * [book-from-map](Planning/book-from-map.plantuml): person(s) who want to book an asset in the near future, go there and use it: _ASSET_BASED_ OR _SPECIFIC_LOCATION_BASED_.
24 |
25 | ## Booking
26 | The booking has only two scenarios:
27 | * [default](Booking/default.plantuml): the booking is done by the MP, the TO can directly guarantee that the leg can be made: _NORMAL_.
28 | * [postponed-commit](Booking/postponed-commit.plantuml): the TO **cannot** guarantee directly the leg. There have to be taken some (manual) actions or acknowledgments from third parties (e.g. drivers): _POSTPONED_COMMIT_.
29 |
30 | ## Trip execution
31 | In the trip execution there are quite a few endpoints. We've described here the flow for a few types of usage (the opening, closing and pausing assets by TO (internet controlled) or by app (bluetooth, etc)).
32 |
33 | ### Micro mobility - by app
34 | These flows are marked by _LOCK_UNLOCK_APP_, accompanied by any of the other _LOCK_UNLOCK_ process identifiers:
35 | * [opening](TripExecution/open-asset-by-app.plantuml)
36 | * [closing](TripExecution/finish-asset-by-app.plantuml)
37 | * [pausing](TripExecution/pause-asset-by-app.plantuml)
38 |
39 | In these scenarios there might be some extra information needed to open / close the lock. This information can be posted to the MP in the booking (_ACCESS_CODE_IN_BOOKING_), in the commit event (_ACCESS_CODE_IN_COMMIT_EVENT_) or in the prepare event (_ACCESS_CODE_IN_PREPARE_EVENT_).
40 |
41 | ### Micro mobility - internet controlled
42 | These flows are marked by _LOCK_UNLOCK_REMOTELY_:
43 | * [opening](TripExecution/open-asset-by-TO.plantuml)
44 | * [closing](TripExecution/finish-asset-by-TO.plantuml)
45 | * [pausing](TripExecution/pause-asset-by-TO.plantuml)
46 |
47 | There are also a few endpoint regarding the progess (reporting) and changing a leg: [progress](TripExecution/progress.plantuml) and [changes](TripExecution/change-leg.plantuml).
48 |
49 | ### TO controlled trip execution (e.g. taxi)
50 | The flow for taxis is a bit different: [TO controlled](TripExecution/to-controlled.plantuml).
51 |
52 | ## Support
53 | The support part is pretty straight forward: issues can be reported by the MP and monitored by the MP: [support](Support/default.plantuml).
54 |
55 | ## Payment
56 | The payment module facilitates in enlisting the costs of all the executed legs. This can be called by the MP. On the other hand, there are facilities to report extra costs on both sides: [payment](Payment/default.plantuml).
57 |
58 | # Operator type flow files
59 | The flow files per operator type can be constructed the scenario flow files as described above.
60 |
61 | ## Car rental
62 | * Planning: the Car rental operators might support all planning scenarios, but the book-from-map is not very likely.
63 | * Booking: implementing the NORMAL scenario where possible, but if you have to wait for (external) approval, implement the POSTPONED_COMMIT scenario. Therefore you have to return the postponed commit condition in the planning result.
64 | * Trip execution: if the car itself communicates with the TO directly using the internet about start/stop, the `TO controlled trip execution` must be used. If the car must be controlled by the app, have a look at the `Micro mobility - by app` scenario. Otherwise, look at the `Micro mobility - internet controlled`.
65 | * Support: normal
66 | * Payment: normal
67 |
68 | ## Bike operator
69 | * Planning: all 3 scenarios are applicable here. In addition the process identifier `ATOMIC_PLANNING_AND_BOOKING` can be used to plan and book in an atomic way: request a planning with useAssets filled with the found asset. If it's available, the booking should be made directly without user interaction.
70 | * Booking: If `ATOMIC_BOOKING_UNLOCKING` is used, the postponed commit scenario cannot be implemented. Right after booking, the bike must be opened.
71 | * Trip exection: dependent on the `LOCK_UNLOCK` process identifier that has been specified, the trip can be executed (internet controlled, by app). The access codes are already provided in the booking module or can be requested using the PREPARE event.
72 | * Support: normal
73 | * Payment: normal
74 |
75 | ## Train
76 | * Planning: normally the planned trip is the case, but the other 2 scenarios might be implemented as well.
77 | * Booking: normal, no postponed commit. Add the approrpiate process identifiers like `ACCESS_CODE_QR` or `ACCESS_CODE_PDF`.
78 | * Trip execution: validation of a token / ticket can be done, because it has been provided in the booking module or can be requested using the PREPARE event. In that case, you have to add the `ACCESS_CODE_IN_PREPARE_EVENT` in the booking. In case of opening gates, the `LOCK_UNLOCK_SHOW_ACCESS_CODE` can be used, in combination with e.g. `ACCESS_CODE_QR` (can be aztek) or `ACCESS_CODE_PDF`. The MP app should show the PDF or QR code on screen to open the gate.
79 | * Support: normal
80 | * Payment: normal
81 |
82 | ## Parking facilities
83 | * Planning: all three scenarios might be valid, but the booking-from-map is not very likely.
84 | * Booking: normal, no postponed commit
85 | * Trip execution: The prepare event can be used to get the access token. The SET_IN_USE must be used to open the entrance gate (open-asset-by-TO). The FINISH event must be used to open the exit gate (close-asset-by-TO).
86 | * Support: normal
87 | * Payment: normal
88 |
89 | ## Charging facilites
90 | * Planning: all three scenarios might be valid, but the booking-from-map is not very likely.
91 | * Booking: normal, no postponed commit
92 | * Trip execution: The prepare event can be used to get the access token. The SET_IN_USE must be used to start charging (open-asset-by-TO). The FINISH event must be used to stop charging (close-asset-by-TO).
93 | * Support: normal
94 | * Payment: normal
95 |
--------------------------------------------------------------------------------
/styleguide.md:
--------------------------------------------------------------------------------
1 | # Style guide #
2 | This document contains the style guide for the TOMP-API, in order to maintain the uniformity, comprehensibility and usability of the API.
3 |
4 | ## Common ##
5 | Every seperate file should be ended with 2 carriage returns, just to let it work with the tooling.
6 |
7 | ### Clear description ###
8 | What does a clear description say?
9 |
10 | * The meaning of the object/property
11 | * What purpose does it have
12 | * What it ISN'T (do)
13 | * The name of the object must match the description
14 |
15 | E.g.
16 |
17 | booking:
18 | type: object
19 | description: A booking formalizes the leg to take, by which user, to make or made by a transport operator. It's not a proposal booking, but an actual booked asset to be payed for.
20 |
21 | ## Objects ##
22 | Every seperate file contains 1 object. The object has a name, a type 'object' and a clear description of what it means. This information is followed by the required properties and the properties themselves.
23 |
24 | E.g.
25 |
26 | booking:
27 | type: object
28 | description: The booking information describing the state and details of the
29 | transaction
30 | required:
31 | - id
32 | - state
33 | - leg
34 | - customer
35 | - token
36 | properties:
37 | id:
38 | type: string
39 |
40 | ## Names ##
41 | Every name consists of one or more words, seperated by dashes. E.g. support-status. NO CAMEL CASING, NO UNDERSCORES!
42 |
43 | ## Properties ##
44 | The properties should always have a type and - if it's a flat type - a clear description. If it's an object, use ALWAYS a $ref, referencing to another object, **DON'T nest objects**.
45 |
46 | Other keywords for properties (example, format, etc) are not mandatory. But when it makes sence, please add them. For references to websites/uri's, DO use format: URL.
47 |
48 | Property names are with lowercase, optionally use dashes.
49 |
50 | E.g.
51 |
52 | (the proper way)
53 | properties:
54 | id:
55 | description: The identifier MaaS will be using to referring to the booking
56 | type: string
57 | state:
58 | $ref: '#/components/schemas/booking-state'
59 |
60 | (INVALID!)
61 | properties:
62 | asset:
63 | type: object
64 | properties:
65 | passengers:
66 | type: integer
67 |
68 | ## Enumerations ##
69 | Whenever it's possible, use enumerations to limitate the possibilities and interpretations.
70 |
71 | E.g.
72 |
73 | type-of-system:
74 | description: Describes the type of system
75 | type: string
76 | enum: [FREE_FLOATING, STATION_BASED, VIRTUAL_STATION_BASED]
77 | example: FREE_FLOATING
78 |
79 | The enumeration values are ALWAYS in capitals. The meaning of the values should be in the description of the property. Use underscores instead of dash.
80 |
81 | ## Arrays ##
82 | The arrays should be handled the same way as properties, but in the 'items' there should be flat types OR $ref's. **No embedded objects**.
83 |
--------------------------------------------------------------------------------