Comments (2)
I love the idea of injecting just a ContactApi etc.
As a potential solution that could satisfy both camps, could the API also generate an AccountingApi class that just had methods to return an instance of each of the apis?
Then you can choose to inject the individual apis, or inject the AccountingApi and call $accountingApi->contacts()->getContacts(....)
etc? With the contacts method simply returning an instance of the ContactApi created with the Guzzle client and Xero Configuration class passed to the AccountingApi constructor?
I don't think we should group by scope as it then becomes a bit confusing to work out what we need to inject to access what.
from xero-openapi.
Each endpoint can have multiple tags, so accounting
could group everything in the Accounting API, and then additional tags could group other collections of endpoints. I could imagine there would be some overlap. Being able to run a small client with a collection of related enpoints to perform a task that needs just those enpoints, I'm sure will be useful. Having a single client to span the full range of endpoints is also very useful for tasks that need it (e.g. we query bank accounts, transactions, invoices and clients all in one job - these things are all very closely related.
So I agree with @hailwood - a tag for everything, and tags for groups of related functions. When generating code, you can always choose one or the other (or both) by generating against chosen tags only.
The way the PHP clients are built, I think is very close to how the clients for other languages would be built, at least when they are generated through the https://github.com/OpenAPITools/openapi-generator tool. All the languages are given the same data structure to work from, and that colours the structure of the code that is generated.
The PHP code is quite long (an understatement) because of the way the templates build it "long-hand" with very few shared classes. Two points to note here: firstly PHP doesn't care much abut the length of these classes. Secondly it can be shortened somewhat with custom templates. The OpenAPI builder v5 makes it even easier to add your own custom support/utility classes in the generated code to reduce the size even more.
Just throwing my 2p into the ring.
from xero-openapi.
Related Issues (20)
- Missing POST BatchPayments
- Collect HOT 1
- Get Invoices paging with IDs HOT 6
- Couldn't create Credit Card account through XERO Accounting API HOT 1
- Github actions test issue HOT 1
- Another github action test with account outside of org HOT 1
- Actions test HOT 2
- more testing HOT 2
- test test test HOT 2
- test
- test HOT 2
- Create Invoice is missing eInvoicing Field HOT 2
- Country in Organisation Address HOT 1
- Unable to build Go SDK from OpenAPI (failures in accounting schema) HOT 4
- Asset Type definition inconsistent with Xero interface HOT 2
- Asset depreciationStartDate not setting HOT 2
- Empty array with status 200 is returned when calling /connections endpoints HOT 4
- AU Payroll API LeaveApplicationID changes when a request is in Scheduled status HOT 3
- LineItems: DiscountRate returned but DiscountAmount does not depending on invoice call query HOT 2
- Organisation Class enum values need updated HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from xero-openapi.