├── .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 | [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](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) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](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 | --------------------------------------------------------------------------------