Versioning
What the v1 in every address promises, what can change without notice, and how to write code that keeps working.
On this page
Every address starts with /v1. That number is a promise about what stays the same, so code written today keeps working as Modulify grows.
What v1 keeps
Within v1:
- Methods are not removed or renamed. A method name that works today keeps working.
- Arguments are not removed, renamed or retyped. An argument that takes a string today takes a string tomorrow.
- Required arguments stay the same. A method never starts requiring an argument it did not require before.
- The envelope stays the same. Every answer keeps
success,message,data,codeandversion, pluscounton lists. - Status codes keep their meaning. A
401is always the token, a429always means slow down.
Anything that would break one of these comes as a new version beside v1, not as a change to it.
What can change at any time
These are additions, so they arrive without a new version:
- New methods. The catalog grows as Modulify does.
GET /v1/toolsand the OpenAPI description always list the current set. - New optional arguments. Leaving them out keeps the old behaviour.
- New fields in
data. An answer can carry more than it did. - New values in a list of choices that an answer reports, such as a new publish step or a new event type in
get_job. - Wording.
messageis written for people. Do not match on its exact text. Branch oncode, and on fields such asdata.reasonwhere a method provides them. - Limits. Numbers such as the per-minute budget and queue sizes can be raised or lowered by Modulify. Read them from the
X-RateLimitheaders and from the answers rather than hard-coding them.
Write code that lasts
- Ignore fields you do not recognise rather than failing on them.
- Treat an unknown value in a list of choices as "something else" rather than an error.
- Branch on status codes and named fields, never on message text.
- Read limits at run time.
How changes are announced
New methods, new arguments and anything else a developer should know about appear in the changelog. Each method's page always describes its current behaviour.
Next
- All methods for the current catalog.
- OpenAPI to generate a client.