- The pair mints a token, and the token expires. The plugin posts the pair to
/api/tokenwithgrant_type=password, caches the token for the hour GageList allows, and mints a new one after a 401. A401from a protected route means the token was refused, not that the pair is wrong; a rejected pair comes back from the token endpoint asinvalid_client. - Field names are PascalCase and case-sensitive. The API binds
SerialNumber,CalibrationDueDateand so on, and one of them is misspelled in the API itself:DateAquired, notDateAcquired. Use the API’s spelling. - The lists are POST, not GET.
gages.list,calibrations.listandmanufacturers.listtake their paging in the request body asstartandrecord_number, and answertotalpluscount. The plugin returnsnext_start, which is null on the last page. - An update replaces the record.
gages.updateandcalibrations.updatetake the whole object with itsId, so a field left out is not “unchanged” in the way a PATCH would leave it. Read the record withgages.getorcalibrations.get, change the fields you mean to change, and send the whole record back. - Deletes are POSTs. GageList deletes with
POSTto aDelete/{id}path rather than an HTTP DELETE, and a gage is marked deleted rather than erased. - The custom-value route takes a bare array.
customFields.updateValuesposts[{ FieldId, RefID, RefType, FieldValue }], not the usual object wrapper.RefTypeis1for a gage and2for a calibration, and a wrong one writes to the other table, so it is constrained to those two values. - A certificate is a PDF, not JSON.
calibrations.certificatereturns the file’s bytes base64-encoded incertificate, withencoding,contentTypeandbyteLength; decode it before saving the file. - No webhooks. GageList does not push; a caller polls.
- 18 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
Store the GageList API key before the first call: More: API Key
pnpm corsair setup --plugin=gagelist --tenant=acme api_key=<your-key> (leave out --tenant without multiTenancy), or pass it as key in the plugin options. With Hub, each tenant enters their own key on the connect page. See API key auth.4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List the first page of gagesWhat’s next
API reference
Every
gagelist.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.