Vendor
The Vendor Aether manages supplier relationships — the vendors behind your hardware and services, the contracts that govern them, the service levels you’re owed, and the renewals coming up.
public/screenshots/vendor-contracts.pngHow it fits together
Section titled “How it fits together”- Vendors are the suppliers — distinct from the manufacturers catalogued in Infrastructure: a vendor is who you buy and contract with, a manufacturer is who builds the hardware.
- Contracts are agreements with a vendor; SLAs record the service levels a contract commits to; Renewals surface the contracts coming due.
Modules
Section titled “Modules”Vendors
Section titled “Vendors”Supplier records — the companies you hold commercial relationships with, together with their contact and account details. A vendor is who you buy from and contract with, which is deliberately separate from the manufacturer catalogue in Infrastructure.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | |
slug | string | Unique; auto-derived from name on create if omitted. |
accountManager | string | Your named contact at the vendor. |
email | string | |
phone | string | |
website | string | |
status | string | Free text; defaults to active. |
description | string |
API — GET/POST /api/vendors, GET/PATCH/DELETE /api/vendors/{id}.
Notes — search matches against name and description; sort accepts
name (default) or createdAt. The slug is unique across vendors and is
generated from the name when not supplied.
public/screenshots/vendor-vendors.pngContracts
Section titled “Contracts”Agreements with a vendor — the term, value, and the dates that bound them.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | |
vendorId | uuid → Vendor | Cascade-deletes with the vendor. |
contractNumber | string | The vendor’s reference for the agreement. |
startDate | date | |
endDate | date | |
value | numeric(12,2) | Contract value. |
status | string | Free text; defaults to active. |
description | string |
API — GET/POST /api/contracts, GET/PATCH/DELETE /api/contracts/{id}.
Notes — Deleting a vendor cascades to its contracts (onDelete: cascade).
search matches name and description; sort accepts name (default) or
createdAt. value is stored as a fixed-precision numeric, not a money type.
Service-level records — the response, uptime, and target commitments owed by a vendor.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | |
vendorId | uuid → Vendor | Set to null if the vendor is deleted. |
target | string | The level being committed to (free text). |
responseTime | string | Response-time commitment, e.g. 4h. |
uptime | string | Uptime commitment, e.g. 99.9%. |
description | string |
API — GET/POST /api/slas, GET/PATCH/DELETE /api/slas/{id}.
Notes — SLAs link to a Vendor, not directly to a contract — there is no
contractId on this table. The link is nullable: deleting a vendor sets
vendorId to null (onDelete: set null) rather than removing the SLA.
target, responseTime, and uptime are free-text strings, not parsed
durations. search matches name and description.
Renewals
Section titled “Renewals”Upcoming contract renewals, so nothing lapses unnoticed — each carries the date it falls due and the expected amount.
Fields
| Field | Type | Notes |
|---|---|---|
name | string · required | |
vendorId | uuid → Vendor | Set to null if the vendor is deleted. |
contractId | uuid → Contract | Set to null if the contract is deleted. |
renewalDate | date | When the renewal falls due. |
amount | numeric(12,2) | Expected renewal cost. |
status | string | Free text; defaults to pending. |
notes | string |
API — GET/POST /api/renewals, GET/PATCH/DELETE /api/renewals/{id}.
Notes — A renewal can reference both a Vendor and a Contract, and both
links are independent and nullable (onDelete: set null on each) — neither is
required, so a renewal can be logged before either is linked. search matches
name and notes; sort accepts name (default) or createdAt.
public/screenshots/vendor-renewals.pngResources are exposed under /api/vendors, /api/contracts, /api/slas, and
/api/renewals — see the API reference.