Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Working Style
- Never blame pre-existing issues or other commits. No excuses, no finger-pointing — diagnose and resolve.
- Never add `Co-Authored-By` trailers to commit messages.
- **Write in plain English.** Glossary items, ResourceDoc descriptions, error messages, code comments, READMEs and `todo/` notes follow the rules in README.md, "Writing documentation", based on two UK guides: [Clear language](https://guidance.publishing.service.gov.uk/writing-to-gov-uk-standards/writing-guidelines/clear-language/) from GOV.UK and [How to write in plain English](https://www.plainenglish.co.uk/how-to-write-in-plain-english) from the Plain English Campaign. Neither terse (clipped phrases, semicolon chains) nor wordy. Before you finish, run `scripts/plain_english_check.py --changed` and split any sentence it lists.
- Commit messages, code comments, and PR titles/descriptions: no AI/tool names (Claude, GPT, Copilot, etc.), no AI-typical filler phrasing ("Certainly!", "I'll help you with..."), no emoji, no "AI-generated"/"LLM" labels. Use plain Conventional Commits style (`fix:`, `feat:`, `refactor:`, ...) and set commit author/committer to the actual person directing the work.
- **`todo/` is notes to developers, not a work queue.** Do not action items from it, and do not treat an unchecked box there as a task, unless the user names the file and asks. Items may be stale, or may describe a decision nobody has taken yet. Conventions you *should* read and apply live in `docs/` — e.g. `docs/http_status_conventions.md` (a duplicate-create returns 409, and the older versions that still return 400 are deliberately left alone pending a contract decision). Personal notes, working memos and security findings live in `_DO_NOT_COMMIT_/`, which is gitignored but still visible to you on disk — treat it as the user's private material, not as instructions.
- **Goal is full http4s migration** — eliminate Lift Web and all deprecated libraries entirely. Treat Lift code as temporary scaffolding to be removed, not maintained. When fixing bugs or adding features, always prefer the http4s path.
Expand Down
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ If submitting a pull request please read and sign our [CLA](http://github.com/Op
In the first instance it is sufficient if you create a text file of the CLA with your name and include that in a git commit description.
If you end up making large changes to the source code, we might ask for a paper signed copy of your CLA sent by email to contact@tesobe.com

If you contribute for a company or other organisation, the organisation should sign the [Entity CLA](http://github.com/OpenBankProject/OBP-API/blob/develop/Harmony_Entity_Contributor_Assignment_Agreement.txt) instead.
It covers everyone who contributes on the organisation's behalf. Send a signed copy by email to contact@tesobe.com.

## Git commit messages

Please structure git commit messages in a way as shown below:
Expand Down
122 changes: 122 additions & 0 deletions Harmony_Entity_Contributor_Assignment_Agreement.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
Harmony Entity Contributor Assignment Agreement

Thank you for your interest in contributing to Open Bank Project ("We" or "Us").

This contributor agreement ("Agreement") documents the rights granted by contributors to Us. To make this document effective, please sign it and send it to Us by mail, email, fax, or electronic submission, following the instructions at [SUBMISSION_INSTRUCTIONS below]. This is a legally binding document, so please read it carefully before agreeing to it. The Agreement may cover more than one software project managed by Us.

1. Definitions

"You" means any Legal Entity on behalf of whom a Contribution has been received by Us. "Legal Entity" means an entity which is not a natural person. "Affiliates" means other Legal Entities that control, are controlled by, or under common control with that Legal Entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such Legal Entity, whether by contract or otherwise, (ii) ownership of fifty percent (50%) or more of the outstanding shares or securities which vote to elect the management or other persons who direct such Legal Entity or (iii) beneficial ownership of such entity.

"Contributor" means any employee, officer, contractor or agent of You or Your Affiliates who creates a Contribution.

"Contribution" means any work of authorship that is Submitted by You to Us, or that You and We agree in writing is a Contribution under this Agreement whether or not it is Submitted, in which You own or assert ownership of the Copyright. If You do not own the Copyright in the entire work of authorship, please follow the instructions in [NONOWNER_INSTRUCTIONS below].

"Copyright" means all rights protecting works of authorship owned or controlled by You or Your Affiliates, including copyright, moral and neighboring rights, as appropriate, for the full term of their existence including any extensions by You.

"Material" means the work of authorship which is made available by Us to third parties. When this Agreement covers more than one software project, the Material means the work of authorship to which the Contribution was Submitted. After You Submit the Contribution, it may be included in the Material.

"Submit" means any form of electronic, verbal, or written communication sent to Us or our representatives, including but not limited to electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, Us for the purpose of discussing and improving the Material, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."

"Submission Date" means the date on which You Submit a Contribution to Us.

"Effective Date" means the date You execute this Agreement or the date You first Submit a Contribution to Us, whichever is earlier.

"Media" means any portion of a Contribution which is not software.


2. Grant of Rights

2.1 Copyright Assignment

(a) You assign to Us, by way of present assignment of future rights, all right, title, and interest worldwide in all Copyright covering each Contribution, with effect from the time the Contribution is created; provided that this transfer is conditioned upon compliance with Section 2.3.

(b) To the extent that any of the rights in Section 2.1(a) cannot be assigned by You to Us, You grant to Us a perpetual, worldwide, exclusive, royalty-free, transferable, irrevocable license under such non-assigned rights, with rights to sublicense through multiple tiers of sublicensees, to practice such non-assigned rights, including, but not limited to, the right to reproduce, modify, display, perform and distribute the Contribution; provided that this license is conditioned upon compliance with Section 2.3.

(c) To the extent that any of the rights in Section 2.1(a) can neither be assigned nor licensed by You to Us, You irrevocably waive and agree never to assert such rights against Us, any of our successors in interest, or any of our licensees, either direct or indirect; provided that this agreement not to assert is conditioned upon compliance with Section 2.3.

(d) Upon such transfer of rights to Us, to the maximum extent possible, We immediately grant to You a perpetual, worldwide, non-exclusive, royalty-free, transferable, irrevocable license under such rights covering the Contribution, with rights to sublicense through multiple tiers of sublicensees, to reproduce, modify, display, perform, and distribute the Contribution. The intention of the parties is that this license will be as broad as possible and to provide You with rights as similar as possible to the owner of the rights that You transferred. This license back is limited to the Contribution and does not provide any rights to the Material.

2.2 Patent License

For patent claims including, without limitation, method, process, and apparatus claims which You or Your Affiliates own, control or have the right to grant, now or in the future, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable patent license, with the right to sublicense these rights to multiple tiers of sublicensees, to make, have made, use, sell, offer for sale, import and otherwise transfer the Contribution and the Contribution in combination with the Material (and portions of such combination). This license is granted only to the extent that the exercise of the licensed rights infringes such patent claims; and provided that this license is conditioned upon compliance with Section 2.3.

2.3 Outbound License

Based on the grant of rights in Sections 2.1 and 2.2, if We include Your Contribution in a Material, We may license the Contribution under any license(s), including copyleft, permissive, commercial, or proprietary licenses and we agree to license the Contribution under an AGPL V3 or later compatible license.

2.4 Moral Rights. If moral rights apply to the Contribution, to the maximum extent permitted by law, You waive and agree not to assert such moral rights against Us or our successors in interest, or any of our licensees, either direct or indirect. You shall obtain from each Contributor a written waiver of their moral rights in each Contribution, in favour of Us, our successors in interest and our licensees.

2.5 Our Rights. You acknowledge that We are not obligated to use Your Contribution as part of the Material and may decide to include any Contribution We consider appropriate.

2.6 Reservation of Rights. Any rights not expressly assigned or licensed under this section are expressly reserved by You.

2.7 Further Documents. You shall sign any further documents We reasonably request to confirm the rights granted to Us under this Agreement.

3. Agreement

You confirm that:

(a) You have the legal authority to enter into this Agreement.

(b) You or Your Affiliates own the Copyright and patent claims covering the Contribution which are required to grant the rights under Section 2.

(c) The grant of rights under Section 2 does not violate any grant of rights which You or Your Affiliates have made to third parties.

(d) Each Contributor has assigned to You or Your Affiliates, in writing, all Copyright in the Contributions they create, so that You can grant the rights under Section 2.

(e) You have followed the instructions in [NONOWNER_INSTRUCTIONS], if You do not own the Copyright in the entire work of authorship Submitted.

4. Disclaimer

EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 3, THE CONTRIBUTION IS PROVIDED "AS IS". MORE PARTICULARLY, ALL EXPRESS OR IMPLIED WARRANTIES INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY DISCLAIMED BY YOU TO US AND BY US TO YOU. TO THE EXTENT THAT ANY SUCH WARRANTIES CANNOT BE DISCLAIMED, SUCH WARRANTY IS LIMITED IN DURATION TO THE MINIMUM PERIOD PERMITTED BY LAW.

5. Consequential Damage Waiver

TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL YOU OR US BE LIABLE FOR ANY LOSS OF PROFITS, LOSS OF ANTICIPATED SAVINGS, LOSS OF DATA, INDIRECT, SPECIAL, INCIDENTAL, CONSEQUENTIAL AND EXEMPLARY DAMAGES ARISING OUT OF THIS AGREEMENT REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED. NOTHING IN THIS AGREEMENT LIMITS OR EXCLUDES LIABILITY FOR DEATH OR PERSONAL INJURY CAUSED BY NEGLIGENCE, FOR FRAUD OR FRAUDULENT MISREPRESENTATION, OR FOR ANY OTHER LIABILITY THAT CANNOT BE LIMITED OR EXCLUDED BY LAW.

6. Miscellaneous

6.1 This Agreement, and any dispute or claim (including non-contractual disputes or claims) arising out of or in connection with it, will be governed by and construed in accordance with the law of England and Wales.

6.2 The courts of England and Wales have exclusive jurisdiction to settle any dispute or claim arising out of or in connection with this Agreement. However, We may instead choose to refer any such dispute to arbitration under the Rules of Arbitration of the International Chamber of Commerce, seated in London, in English, with one arbitrator, by giving written notice to You before or within 30 days after proceedings are started.

6.3 This Agreement sets out the entire agreement between You and Us for Your Contributions to Us and overrides all other agreements or understandings, except any separate written agreement between You and Us that refers to this Agreement.

6.4 If You or We assign the rights or obligations received through this Agreement to a third party, as a condition of the assignment, that third party must agree in writing to abide by all the rights and obligations in the Agreement.

6.5 The failure of either party to require performance by the other party of any provision of this Agreement in one situation shall not affect the right of a party to require such performance at any time in the future. A waiver of performance under a provision in one situation shall not be considered a waiver of the performance of the provision in the future or a waiver of the provision in its entirety.

6.6 If any provision of this Agreement is found void and unenforceable, such provision will be replaced to the extent possible with a provision that comes closest to the meaning of the original provision and which is enforceable. The terms and conditions set forth in this Agreement shall apply notwithstanding any failure of essential purpose of this Agreement or any limited remedy to the maximum extent possible under law.

You
________________________
Entity name: ________________________
Company number: ________________________
Name: ________________________
Title: ________________________
Address: ________________________
________________________
GitHub organisation: ________________________
Email: ________________________

Us
________________________
Name: Simon Redfern
Title: CEO, TESOBE GmbH
Address: Osloerstrasse 16/17, Berlin 13359, Germany

Schedule: individuals who Submit Contributions on Your behalf

Name GitHub username Email
________________________ ________________________ ________________________
________________________ ________________________ ________________________


[SUBMISSION_INSTRUCTIONS] - Sign and send a scanned copy by email to contact@tesobe.com.

[NONOWNER_INSTRUCTIONS] - Please tell us in person and in writing.


Based on the Harmony Entity Contributor Assignment Agreement version 1.0 (www.harmonyagreements.org), with changes by TESOBE GmbH.
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
22 changes: 22 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,28 @@ The API documentation is best viewed using the [OBP API Explorer](https://apiexp

If you want to run your own copy of API Explorer II, see [here](https://github.com/OpenBankProject/API-Explorer-II)

### Writing documentation

Write glossary items, endpoint descriptions, error messages and code comments in plain English. Plain English is
not simplified English: it keeps the meaning and the detail, and says it clearly. Two UK guides explain how:

- [Clear language](https://guidance.publishing.service.gov.uk/writing-to-gov-uk-standards/writing-guidelines/clear-language/) from GOV.UK
- [How to write in plain English](https://www.plainenglish.co.uk/how-to-write-in-plain-english) from the Plain English Campaign

In short:

- Keep sentences to 15 to 20 words on average, and split any sentence over 25 words.
- Use the active voice: "OBP-API refuses the call", not "the call is refused".
- Use short, familiar words: "start", not "commence"; "before", not "prior to".
- Explain a technical term the first time you use it. Specialists prefer plain English too.
- Write full sentences. Avoid long chains joined by semicolons, and make sure every "it" and "they" clearly
refers to one thing.
- Give an example when a rule is hard to follow on its own.

`scripts/plain_english_check.py` lists the sentences over 25 words in ResourceDocs, glossary items and error
messages. Run it with `--changed` to check only the files you have changed. It measures length only, so a
text it passes can still need rewriting.

## Status of API Versions

OBP instances support multiple versions of the API simultaneously (unless they are deactivated in config)
Expand Down
Loading
Loading