diff --git a/docs/api/routes-all.md b/docs/api/routes-all.md index 1d6e31f..89c85c9 100644 --- a/docs/api/routes-all.md +++ b/docs/api/routes-all.md @@ -9,17 +9,17 @@ Params: path values first, then `query:` and `body:` (`body?` = optional body). ### Reusable types -- `T1` = `{ id: int, number: str, type: str, entityId: int, date: str, lines: T20[], externalNumber?: str|null, createdAt?: str, shipping?: T23|null, shippings?: T23[], payment?: T32|null, payments?: T32[], paid?: bool, shipped?: bool, delivered?: bool, orderTotal?: num, paidTotal?: num, orderedQuantity?: num, shippedQuantity?: num, shipments?: T2[], files?: T10[] }` +- `T1` = `{ id: int, number: str, type: str, entityId: int, date: str, lines: T20[], externalNumber?: str|null, createdAt?: str, shipping?: T23|null, shippings?: T23[], payment?: T33|null, payments?: T33[], paid?: bool, shipped?: bool, delivered?: bool, orderTotal?: num, paidTotal?: num, orderedQuantity?: num, shippedQuantity?: num, shipments?: T2[], files?: T10[] }` - `T2` = `{ id: int, number: str, type: str, date: str, lines: T20[], shippings: T23[], entityId?: int|null, externalNumber?: str|null, createdAt?: str|null, lineCount?: int, packageCount?: int, files?: T10[], state?: str }` - `T3` = `{ id: int, number: str, type: str, date: str, lines: T20[], entityId?: int|null, externalNumber?: str|null, createdAt?: str, positions?: int, grossTotal?: num, totalQuantity?: num, customerName?: str|null, files?: T10[] }` -- `T4` = `{ id: int, number: str, type: str, supplierId: int, date: str, lines: T24[], files: T10[], externalNumber?: str|null, createdAt?: str, ledger?: T39 }` +- `T4` = `{ id: int, number: str, type: str, supplierId: int, date: str, lines: T24[], files: T10[], externalNumber?: str|null, createdAt?: str, ledger?: T40 }` - `T5` = `{ name: str, path: str, totalSizeBytes: int, timestamp: str|null, manifest?: T6|null }` - `T6` = `{ id: str, timestamp: str, dateKey: str, monthKey: str, dbProvider: str, files: T11, totalSizeBytes: int, durationMs: int }` - `T7` = `{ id: int, name: str, pairingpin?: str|null, token?: str|null, pairedAt?: str|null, clientserial?: str|null, rootCategoryId?: int|null, syncRootArticles?: bool, sort?: int, enabled?: bool, clientversion?: str|null, lastseenAt?: str|null, updatedAt?: str|null, categoryIds?: int[] }` -- `T8` = `{ id: int, articleId: int, entityId: int, pu: num, sort: int, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T41|null, incoming?: { date: str, amount: num }[] }` +- `T8` = `{ id: int, articleId: int, entityId: int, pu: num, sort: int, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T42|null, incoming?: { date: str, amount: num }[] }` - `T9` = `{ id: int, name: str, width: num, height: num, dpi: int, type: str, content: { objects: T25[] }, thumb?: str|null }` - `T10` = `{ id: int, manifestId: int, fileId: int, sort: int, hash: str, mimetype: str, name: str, size: int, created?: str, modified?: str, skeledash?: str|null, thumbx?: int|null, thumby?: int|null, meta?: { [k]: str }|null }` -- `T11` = `{ vfs: T40, storage: T40, database: T34 }` +- `T11` = `{ vfs: T41, storage: T41, database: T35 }` - `T12` = `{ id: int, name: str, companyId?: int, token?: str|null, pairingpin?: str|null, pairedAt?: str|null, agentversion?: str|null, lastseenAt?: str|null, updatedAt?: str, sort?: int, enabled?: bool }` - `T13` = `{ id: int, printeragentId: int, type: str, enabled: bool, sort: int, model?: str|null, serial?: str|null, open?: bool, pause?: bool, error?: bool, online?: bool, labelLength?: int|null }` - `T14` = `{ id: int, entityId: int, addressType: str, firstName?: str|null, name?: str|null, street?: str|null, streetNumber?: str|null, zip?: str|null, city?: str|null, county?: str|null }` @@ -39,17 +39,18 @@ Params: path values first, then `query:` and `body:` (`body?` = optional body). - `T28` = `{ name: str, id?: int|null, fullHash?: str|null, thumbW?: int|null, thumbH?: int|null, thumbHash?: str|null }` - `T29` = `{ si: str, basesi: str, basesifactor: num, symbol?: str|null, name?: str|null }` - `T30` = `{ id: int, attributeId: int, value: str, sort: int, articleCount?: int }` -- `T31` = `{ id: int, name: str, sort: int, exclusive: bool, articleCount?: int }` -- `T32` = `{ id: int, accountId: int, manifestId: int, type: str, amount: num }` -- `T33` = `{ id: int, name: str, sort: int, hasPackages: bool, isReverse: bool }` -- `T34` = `{ name: str|null, sizeBytes: int, backedUp: bool, reason?: str|null }` -- `T35` = `{ id: int, email: str, selectedCompanyId: int|null, picture?: str }` -- `T36` = `{ fullHash: str, thumbW: int, thumbH: int, thumbHash: str }` -- `T37` = `{ id: int, entityId: int, contactType: str, contact: str }` -- `T38` = `{ id: int, name: str, createdAt: str, updatedAt: str }` -- `T39` = `{ totalPositions: int, completelyOnLedgerPositions: int }` -- `T40` = `{ name: str, sizeBytes: int, sourceExists: bool }` -- `T41` = `{ net: num, taxId: int, taxRate?: num|null }` +- `T31` = `{ id: int, googleAuthId: int, email: str, role: str, picture?: str|null }` +- `T32` = `{ id: int, name: str, sort: int, exclusive: bool, articleCount?: int }` +- `T33` = `{ id: int, accountId: int, manifestId: int, type: str, amount: num }` +- `T34` = `{ id: int, name: str, sort: int, hasPackages: bool, isReverse: bool }` +- `T35` = `{ name: str|null, sizeBytes: int, backedUp: bool, reason?: str|null }` +- `T36` = `{ id: int, email: str, selectedCompanyId: int|null, picture?: str }` +- `T37` = `{ fullHash: str, thumbW: int, thumbH: int, thumbHash: str }` +- `T38` = `{ id: int, entityId: int, contactType: str, contact: str }` +- `T39` = `{ id: int, name: str, createdAt: str, updatedAt: str }` +- `T40` = `{ totalPositions: int, completelyOnLedgerPositions: int }` +- `T41` = `{ name: str, sizeBytes: int, sourceExists: bool }` +- `T42` = `{ net: num, taxId: int, taxRate?: num|null }` ### Routes @@ -256,25 +257,25 @@ _none_ - Returns: `200 { attributevalue: T30 }` #### Delete attribute value image — `DELETE /attributevalue/{id}/image` - Params: `id: int` -- Returns: `200 { attributevalue: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T36[] } }` +- Returns: `200 { attributevalue: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T37[] } }` #### Add or replace attribute value image — `POST /attributevalue/{id}/image` - Params: `id: int, image/avif` -- Returns: `201 { attributevalue: { id: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str, pics: T36[] } }` +- Returns: `201 { attributevalue: { id: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str, pics: T37[] } }` ### Section: /auth #### Login with Google ID token — `POST /auth/login` - Params: `body: { idToken: str }` -- Returns: `200 { message: str, user: T35 }` +- Returns: `200 { message: str, user: T36 }` #### Logout — `POST /auth/logout` _none_ - Returns: `200 { message: str }` #### Current user — `GET /auth/me` _none_ -- Returns: `200 { user: T35, googleClientId: str, schemaVersion: int, vhost: bool, vhostSettings: str }` +- Returns: `200 { user: T36, googleClientId: str, schemaVersion: int, vhost: bool, vhostSettings: str }` #### Set selected company — `PUT /auth/selected-company` - Params: `body: { companyId: int }` -- Returns: `200 { user: T35 }` +- Returns: `200 { user: T36 }` ### Section: /autoinvite @@ -307,7 +308,7 @@ _none_ - Returns: `200 { brands: { id: int, name: str, articleCount: int, pics: { fullHash: str, thumbW: int, thumbH: int, thumbHash: str, smallThumbW?: int|null, smallThumbH?: int|null, smallThumbBinary?: str|null }[], gsprpinfo?: str|null }[], total: int, offset: int, limit: int }` #### Create brand — `POST /brand` - Params: `body: { name: str, gsprpinfo?: str }` -- Returns: `201 { brand: { id: int, name: str, pics: T36[], gsprpinfo?: str|null } }` +- Returns: `201 { brand: { id: int, name: str, pics: T37[], gsprpinfo?: str|null } }` #### Delete brand — `DELETE /brand/{id}` - Params: `id: int` - Returns: `204 void` @@ -316,19 +317,19 @@ _none_ - Returns: `200 { brand: { id: int, name: str, touchedArticleCount: int, gsprpinfo?: str|null } }` #### Delete brand image — `DELETE /brand/{id}/image` - Params: `id: int` -- Returns: `200 { brand: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T36[] } }` +- Returns: `200 { brand: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T37[] } }` #### Add or replace brand image — `POST /brand/{id}/image` - Params: `id: int, image/avif` -- Returns: `201 { brand: { id: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str, pics: T36[] } }` +- Returns: `201 { brand: { id: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str, pics: T37[] } }` ### Section: /carrier #### List carriers — `GET /carrier` _none_ -- Returns: `200 { carriers: T33[] }` +- Returns: `200 { carriers: T34[] }` #### Create carrier — `POST /carrier` - Params: `body: { name: str, sort?: int, hasPackages?: bool, isReverse?: bool }` -- Returns: `201 { carrier: T33 }` +- Returns: `201 { carrier: T34 }` #### Reorder carriers — `PUT /carrier/order` - Params: `body: { carrierIds: int[] }` - Returns: `200 { carrierIds: int[] }` @@ -337,10 +338,10 @@ _none_ - Returns: `204 void` #### Get carrier by ID — `GET /carrier/{id}` - Params: `id: int` -- Returns: `200 { carrier: T33 }` +- Returns: `200 { carrier: T34 }` #### Update carrier — `PATCH /carrier/{id}` - Params: `id: int, body: { name?: str, sort?: int, hasPackages?: bool, isReverse?: bool }` -- Returns: `200 { carrier: T33 }` +- Returns: `200 { carrier: T34 }` ### Section: /category @@ -397,7 +398,7 @@ _none_ - Returns: `200 { companies: T19[] }` #### Create company — `POST /company` - Params: `body: { iso639: str, name: str, taxrate: num, reducedtaxrate: num }` -- Returns: `201 { company: T19, user: T35 }` +- Returns: `201 { company: T19, user: T36 }` #### Export company catalog as zip archive (SSE) — `GET /company/export` - Params: `query: stream?: str` - Returns: `200 SSE` @@ -433,16 +434,16 @@ _none_ #### List company users — `GET /companyuser` _none_ -- Returns: `200 { companyusers: { id: int, googleAuthId: int, email: str, role: str }[] }` +- Returns: `200 { companyusers: T31[] }` #### Add an existing user to the company — `POST /companyuser` - Params: `body: { email: str, role?: str }` -- Returns: `201 { companyuser: { id: int, googleAuthId: int, email: str, role: str } }` +- Returns: `201 { companyuser: T31 }` #### Remove a user from the company — `DELETE /companyuser/{id}` - Params: `id: int` - Returns: `204 void` #### Change a company user's role — `PATCH /companyuser/{id}` - Params: `id: int, body: { role: str }` -- Returns: `200 { companyuser: { id: int, googleAuthId: int, role: str } }` +- Returns: `200 { companyuser: T31 }` ### Section: /customergroup @@ -466,7 +467,7 @@ _none_ #### List deliveries — `GET /delivery` - Params: `query: offset?: int, limit?: int, search?: str, onlyUnbooked?: bool, supplierId?: int, seekMonths?: int` -- Returns: `200 { deliveries: { id: int, number: str, type: str, supplierId: int, date: str, externalNumber?: str|null, createdAt?: str, ledger?: T39 }[], total: int, unfilteredTotal: int, offset: int, limit: int }` +- Returns: `200 { deliveries: { id: int, number: str, type: str, supplierId: int, date: str, externalNumber?: str|null, createdAt?: str, ledger?: T40 }[], total: int, unfilteredTotal: int, offset: int, limit: int }` #### Create delivery — `POST /delivery` - Params: `body: { externalNumber: str, date: str, supplierId: int, lines: { amount: num, net: num, taxrate: num, sku?: str|null, name?: str|null, pu?: num, rebate?: num, comment?: str|null }[], files?: { mimetype: str, name: str, content: str, sort?: int, size?: int, hash?: str, created?: str, modified?: str, meta?: { [k]: str } }[] }` - Returns: `201 { delivery: T4 }` @@ -514,16 +515,16 @@ _none_ - Returns: `200 { address: T14 }` #### List entity contacts — `GET /entity/{entityId}/contact` - Params: `entityId: int` -- Returns: `200 { contacts: T37[] }` +- Returns: `200 { contacts: T38[] }` #### Create entity contact — `POST /entity/{entityId}/contact` - Params: `entityId: int, body: { contactType: str, contact: str }` -- Returns: `201 { contact: T37 }` +- Returns: `201 { contact: T38 }` #### Delete entity contact — `DELETE /entity/{entityId}/contact/{id}` - Params: `entityId: int, id: int` - Returns: `204 void` #### Update entity contact — `PATCH /entity/{entityId}/contact/{id}` - Params: `entityId: int, id: int, body: { contactType?: str, contact?: str }` -- Returns: `200 { contact: T37 }` +- Returns: `200 { contact: T38 }` #### Delete entity — `DELETE /entity/{id}` - Params: `id: int` - Returns: `204 void` @@ -715,10 +716,10 @@ _none_ - Returns: `200 str` #### List payments of an order — `GET /order/{id}/payment` - Params: `id: int` -- Returns: `200 { payments: T32[] }` +- Returns: `200 { payments: T33[] }` #### Add payment to an order — `POST /order/{id}/payment` - Params: `id: int, body: { accountId: int, type: str, amount: num }` -- Returns: `201 { payment: T32 }` +- Returns: `201 { payment: T33 }` #### Generate and attach order PDF — `POST /order/{id}/pdf` - Params: `id: int` - Returns: `201 { attachment: T10, fileUrl: str }` @@ -844,10 +845,10 @@ _none_ #### List property names — `GET /propertyname` _none_ -- Returns: `200 { propertynames: T31[] }` +- Returns: `200 { propertynames: T32[] }` #### Create property name — `POST /propertyname` - Params: `body: { name: str, sort?: int, exclusive?: bool }` -- Returns: `201 { propertyname: T31 }` +- Returns: `201 { propertyname: T32 }` #### Reorder property names — `PUT /propertyname/order` - Params: `body: { propertynameIds: int[] }` - Returns: `200 { ok: bool }` @@ -856,7 +857,7 @@ _none_ - Returns: `200 { ok: bool }` #### Update property name — `PATCH /propertyname/{id}` - Params: `id: int, body: { name?: str, sort?: int, exclusive?: bool }` -- Returns: `200 { propertyname: T31 }` +- Returns: `200 { propertyname: T32 }` ### Section: /public @@ -1051,22 +1052,22 @@ _none_ #### List suppliers — `GET /supplier` _none_ -- Returns: `200 { suppliers: T38[] }` +- Returns: `200 { suppliers: T39[] }` #### Create supplier — `POST /supplier` - Params: `body: { name: str }` -- Returns: `201 { supplier: T38 }` +- Returns: `201 { supplier: T39 }` #### Delete supplier — `DELETE /supplier/{id}` - Params: `id: int` - Returns: `204 void` #### Update supplier — `PATCH /supplier/{id}` - Params: `id: int, body: { name: str }` -- Returns: `200 { supplier: T38 }` +- Returns: `200 { supplier: T39 }` #### List supplier articles by SKUs — `GET /supplier/{id}/articles` - Params: `id: int, query: skus?: str` -- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T41|null, incoming?: { date: str, amount: num }[] }[] }` +- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T42|null, incoming?: { date: str, amount: num }[] }[] }` #### Query supplier articles by SKUs (bulk) — `POST /supplier/{id}/articles` - Params: `id: int, body?: { skus?: str[] }` -- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T41|null, incoming?: { date: str, amount: num }[] }[] }` +- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T42|null, incoming?: { date: str, amount: num }[] }[] }` ### Section: /thumb diff --git a/docs/api/routes.md b/docs/api/routes.md index 9caf05e..b1846b5 100644 --- a/docs/api/routes.md +++ b/docs/api/routes.md @@ -9,11 +9,11 @@ Params: path values first, then `query:` and `body:` (`body?` = optional body). ### Reusable types -- `T1` = `{ id: int, number: str, type: str, entityId: int, date: str, lines: T11[], externalNumber?: str|null, createdAt?: str, shipping?: T13|null, shippings?: T13[], payment?: T20|null, payments?: T20[], paid?: bool, shipped?: bool, delivered?: bool, orderTotal?: num, paidTotal?: num, orderedQuantity?: num, shippedQuantity?: num, shipments?: T2[], files?: T7[] }` +- `T1` = `{ id: int, number: str, type: str, entityId: int, date: str, lines: T11[], externalNumber?: str|null, createdAt?: str, shipping?: T13|null, shippings?: T13[], payment?: T21|null, payments?: T21[], paid?: bool, shipped?: bool, delivered?: bool, orderTotal?: num, paidTotal?: num, orderedQuantity?: num, shippedQuantity?: num, shipments?: T2[], files?: T7[] }` - `T2` = `{ id: int, number: str, type: str, date: str, lines: T11[], shippings: T13[], entityId?: int|null, externalNumber?: str|null, createdAt?: str|null, lineCount?: int, packageCount?: int, files?: T7[], state?: str }` - `T3` = `{ id: int, number: str, type: str, date: str, lines: T11[], entityId?: int|null, externalNumber?: str|null, createdAt?: str, positions?: int, grossTotal?: num, totalQuantity?: num, customerName?: str|null, files?: T7[] }` -- `T4` = `{ id: int, number: str, type: str, supplierId: int, date: str, lines: T14[], files: T7[], externalNumber?: str|null, createdAt?: str, ledger?: T25 }` -- `T5` = `{ id: int, articleId: int, entityId: int, pu: num, sort: int, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T26|null, incoming?: { date: str, amount: num }[] }` +- `T4` = `{ id: int, number: str, type: str, supplierId: int, date: str, lines: T14[], files: T7[], externalNumber?: str|null, createdAt?: str, ledger?: T26 }` +- `T5` = `{ id: int, articleId: int, entityId: int, pu: num, sort: int, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T27|null, incoming?: { date: str, amount: num }[] }` - `T6` = `{ id: int, name: str, width: num, height: num, dpi: int, type: str, content: { objects: T15[] }, thumb?: str|null }` - `T7` = `{ id: int, manifestId: int, fileId: int, sort: int, hash: str, mimetype: str, name: str, size: int, created?: str, modified?: str, skeledash?: str|null, thumbx?: int|null, thumby?: int|null, meta?: { [k]: str }|null }` - `T8` = `{ id: int, entityId: int, addressType: str, firstName?: str|null, name?: str|null, street?: str|null, streetNumber?: str|null, zip?: str|null, city?: str|null, county?: str|null }` @@ -27,14 +27,15 @@ Params: path values first, then `query:` and `body:` (`body?` = optional body). - `T16` = `{ id: int, customergroupId: int, firstName: str|null, name: str, number: str|null, createdAt: str, updatedAt: str }` - `T17` = `{ si: str, basesi: str, basesifactor: num, symbol?: str|null, name?: str|null }` - `T18` = `{ id: int, attributeId: int, value: str, sort: int, articleCount?: int }` -- `T19` = `{ id: int, name: str, sort: int, exclusive: bool, articleCount?: int }` -- `T20` = `{ id: int, accountId: int, manifestId: int, type: str, amount: num }` -- `T21` = `{ id: int, name: str, sort: int, hasPackages: bool, isReverse: bool }` -- `T22` = `{ fullHash: str, thumbW: int, thumbH: int, thumbHash: str }` -- `T23` = `{ id: int, entityId: int, contactType: str, contact: str }` -- `T24` = `{ id: int, name: str, createdAt: str, updatedAt: str }` -- `T25` = `{ totalPositions: int, completelyOnLedgerPositions: int }` -- `T26` = `{ net: num, taxId: int, taxRate?: num|null }` +- `T19` = `{ id: int, googleAuthId: int, email: str, role: str, picture?: str|null }` +- `T20` = `{ id: int, name: str, sort: int, exclusive: bool, articleCount?: int }` +- `T21` = `{ id: int, accountId: int, manifestId: int, type: str, amount: num }` +- `T22` = `{ id: int, name: str, sort: int, hasPackages: bool, isReverse: bool }` +- `T23` = `{ fullHash: str, thumbW: int, thumbH: int, thumbHash: str }` +- `T24` = `{ id: int, entityId: int, contactType: str, contact: str }` +- `T25` = `{ id: int, name: str, createdAt: str, updatedAt: str }` +- `T26` = `{ totalPositions: int, completelyOnLedgerPositions: int }` +- `T27` = `{ net: num, taxId: int, taxRate?: num|null }` ### Routes @@ -181,7 +182,7 @@ _none_ - Returns: `200 { attributevalue: T18 }` #### Delete attribute value image — `DELETE /attributevalue/{id}/image` - Params: `id: int` -- Returns: `200 { attributevalue: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T22[] } }` +- Returns: `200 { attributevalue: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T23[] } }` ### Section: /autoinvite @@ -202,7 +203,7 @@ _none_ - Returns: `200 { brands: { id: int, name: str, articleCount: int, pics: { fullHash: str, thumbW: int, thumbH: int, thumbHash: str, smallThumbW?: int|null, smallThumbH?: int|null, smallThumbBinary?: str|null }[], gsprpinfo?: str|null }[], total: int, offset: int, limit: int }` #### Create brand — `POST /brand` - Params: `body: { name: str, gsprpinfo?: str }` -- Returns: `201 { brand: { id: int, name: str, pics: T22[], gsprpinfo?: str|null } }` +- Returns: `201 { brand: { id: int, name: str, pics: T23[], gsprpinfo?: str|null } }` #### Delete brand — `DELETE /brand/{id}` - Params: `id: int` - Returns: `204 void` @@ -211,16 +212,16 @@ _none_ - Returns: `200 { brand: { id: int, name: str, touchedArticleCount: int, gsprpinfo?: str|null } }` #### Delete brand image — `DELETE /brand/{id}/image` - Params: `id: int` -- Returns: `200 { brand: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T22[] } }` +- Returns: `200 { brand: { id: int, thumbW: int|null, thumbH: int|null, thumbHash: str|null, pics: T23[] } }` ### Section: /carrier #### List carriers — `GET /carrier` _none_ -- Returns: `200 { carriers: T21[] }` +- Returns: `200 { carriers: T22[] }` #### Create carrier — `POST /carrier` - Params: `body: { name: str, sort?: int, hasPackages?: bool, isReverse?: bool }` -- Returns: `201 { carrier: T21 }` +- Returns: `201 { carrier: T22 }` #### Reorder carriers — `PUT /carrier/order` - Params: `body: { carrierIds: int[] }` - Returns: `200 { carrierIds: int[] }` @@ -229,10 +230,10 @@ _none_ - Returns: `204 void` #### Get carrier by ID — `GET /carrier/{id}` - Params: `id: int` -- Returns: `200 { carrier: T21 }` +- Returns: `200 { carrier: T22 }` #### Update carrier — `PATCH /carrier/{id}` - Params: `id: int, body: { name?: str, sort?: int, hasPackages?: bool, isReverse?: bool }` -- Returns: `200 { carrier: T21 }` +- Returns: `200 { carrier: T22 }` ### Section: /category @@ -307,16 +308,16 @@ _none_ #### List company users — `GET /companyuser` _none_ -- Returns: `200 { companyusers: { id: int, googleAuthId: int, email: str, role: str }[] }` +- Returns: `200 { companyusers: T19[] }` #### Add an existing user to the company — `POST /companyuser` - Params: `body: { email: str, role?: str }` -- Returns: `201 { companyuser: { id: int, googleAuthId: int, email: str, role: str } }` +- Returns: `201 { companyuser: T19 }` #### Remove a user from the company — `DELETE /companyuser/{id}` - Params: `id: int` - Returns: `204 void` #### Change a company user's role — `PATCH /companyuser/{id}` - Params: `id: int, body: { role: str }` -- Returns: `200 { companyuser: { id: int, googleAuthId: int, role: str } }` +- Returns: `200 { companyuser: T19 }` ### Section: /customergroup @@ -340,7 +341,7 @@ _none_ #### List deliveries — `GET /delivery` - Params: `query: offset?: int, limit?: int, search?: str, onlyUnbooked?: bool, supplierId?: int, seekMonths?: int` -- Returns: `200 { deliveries: { id: int, number: str, type: str, supplierId: int, date: str, externalNumber?: str|null, createdAt?: str, ledger?: T25 }[], total: int, unfilteredTotal: int, offset: int, limit: int }` +- Returns: `200 { deliveries: { id: int, number: str, type: str, supplierId: int, date: str, externalNumber?: str|null, createdAt?: str, ledger?: T26 }[], total: int, unfilteredTotal: int, offset: int, limit: int }` #### Create delivery — `POST /delivery` - Params: `body: { externalNumber: str, date: str, supplierId: int, lines: { amount: num, net: num, taxrate: num, sku?: str|null, name?: str|null, pu?: num, rebate?: num, comment?: str|null }[], files?: { mimetype: str, name: str, content: str, sort?: int, size?: int, hash?: str, created?: str, modified?: str, meta?: { [k]: str } }[] }` - Returns: `201 { delivery: T4 }` @@ -385,16 +386,16 @@ _none_ - Returns: `200 { address: T8 }` #### List entity contacts — `GET /entity/{entityId}/contact` - Params: `entityId: int` -- Returns: `200 { contacts: T23[] }` +- Returns: `200 { contacts: T24[] }` #### Create entity contact — `POST /entity/{entityId}/contact` - Params: `entityId: int, body: { contactType: str, contact: str }` -- Returns: `201 { contact: T23 }` +- Returns: `201 { contact: T24 }` #### Delete entity contact — `DELETE /entity/{entityId}/contact/{id}` - Params: `entityId: int, id: int` - Returns: `204 void` #### Update entity contact — `PATCH /entity/{entityId}/contact/{id}` - Params: `entityId: int, id: int, body: { contactType?: str, contact?: str }` -- Returns: `200 { contact: T23 }` +- Returns: `200 { contact: T24 }` #### Delete entity — `DELETE /entity/{id}` - Params: `id: int` - Returns: `204 void` @@ -475,10 +476,10 @@ _none_ - Returns: `204 void` #### List payments of an order — `GET /order/{id}/payment` - Params: `id: int` -- Returns: `200 { payments: T20[] }` +- Returns: `200 { payments: T21[] }` #### Add payment to an order — `POST /order/{id}/payment` - Params: `id: int, body: { accountId: int, type: str, amount: num }` -- Returns: `201 { payment: T20 }` +- Returns: `201 { payment: T21 }` #### Generate and attach order PDF — `POST /order/{id}/pdf` - Params: `id: int` - Returns: `201 { attachment: T7, fileUrl: str }` @@ -511,10 +512,10 @@ _none_ #### List property names — `GET /propertyname` _none_ -- Returns: `200 { propertynames: T19[] }` +- Returns: `200 { propertynames: T20[] }` #### Create property name — `POST /propertyname` - Params: `body: { name: str, sort?: int, exclusive?: bool }` -- Returns: `201 { propertyname: T19 }` +- Returns: `201 { propertyname: T20 }` #### Reorder property names — `PUT /propertyname/order` - Params: `body: { propertynameIds: int[] }` - Returns: `200 { ok: bool }` @@ -523,7 +524,7 @@ _none_ - Returns: `200 { ok: bool }` #### Update property name — `PATCH /propertyname/{id}` - Params: `id: int, body: { name?: str, sort?: int, exclusive?: bool }` -- Returns: `200 { propertyname: T19 }` +- Returns: `200 { propertyname: T20 }` ### Section: /quote @@ -658,22 +659,22 @@ _none_ #### List suppliers — `GET /supplier` _none_ -- Returns: `200 { suppliers: T24[] }` +- Returns: `200 { suppliers: T25[] }` #### Create supplier — `POST /supplier` - Params: `body: { name: str }` -- Returns: `201 { supplier: T24 }` +- Returns: `201 { supplier: T25 }` #### Delete supplier — `DELETE /supplier/{id}` - Params: `id: int` - Returns: `204 void` #### Update supplier — `PATCH /supplier/{id}` - Params: `id: int, body: { name: str }` -- Returns: `200 { supplier: T24 }` +- Returns: `200 { supplier: T25 }` #### List supplier articles by SKUs — `GET /supplier/{id}/articles` - Params: `id: int, query: skus?: str` -- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T26|null, incoming?: { date: str, amount: num }[] }[] }` +- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T27|null, incoming?: { date: str, amount: num }[] }[] }` #### Query supplier articles by SKUs (bulk) — `POST /supplier/{id}/articles` - Params: `id: int, body?: { skus?: str[] }` -- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T26|null, incoming?: { date: str, amount: num }[] }[] }` +- Returns: `200 { articles: { id: int, articleId: int, entityId: int, pu: num, sort: int, article: { id: int, sku: str, name?: str|null, slug?: str|null, photos?: { sort: int, fullHash: str, thumbW: int, thumbH: int, thumbHash: str }[], eans?: str[] }, supplierName?: str|null, sku?: str|null, stock?: num|null, priceId?: int|null, price?: T27|null, incoming?: { date: str, amount: num }[] }[] }` ### Section: /unit diff --git a/docs/api/routes/companyuser/create.md b/docs/api/routes/companyuser/create.md index 9da1113..a7cb44e 100644 --- a/docs/api/routes/companyuser/create.md +++ b/docs/api/routes/companyuser/create.md @@ -37,6 +37,7 @@ Created company user "id": 1, "googleAuthId": 1, "email": "…", + "picture": "…", "role": "admin" } } diff --git a/docs/api/routes/companyuser/list.md b/docs/api/routes/companyuser/list.md index 769590a..3339317 100644 --- a/docs/api/routes/companyuser/list.md +++ b/docs/api/routes/companyuser/list.md @@ -17,6 +17,7 @@ Company members "id": 1, "googleAuthId": 1, "email": "…", + "picture": "…", "role": "admin" } ] diff --git a/docs/api/routes/companyuser/update.md b/docs/api/routes/companyuser/update.md index 055c41b..f802786 100644 --- a/docs/api/routes/companyuser/update.md +++ b/docs/api/routes/companyuser/update.md @@ -37,6 +37,8 @@ Updated company user "companyuser": { "id": 1, "googleAuthId": 1, + "email": "…", + "picture": "…", "role": "admin" } } diff --git a/src/api/openapi.js b/src/api/openapi.js index 049d9e9..752bd61 100644 --- a/src/api/openapi.js +++ b/src/api/openapi.js @@ -73,6 +73,9 @@ * type: integer * email: * type: string + * picture: + * type: string + * nullable: true * role: * type: string * enum: [admin, user] diff --git a/src/api/routes/companyuser.js b/src/api/routes/companyuser.js index dd6f0cd..39eb670 100644 --- a/src/api/routes/companyuser.js +++ b/src/api/routes/companyuser.js @@ -237,15 +237,7 @@ export function register(app, basePath = '') { * type: object * properties: * companyuser: - * type: object - * properties: - * id: - * type: integer - * googleAuthId: - * type: integer - * role: - * type: string - * enum: [admin, user] + * $ref: '#/components/schemas/CompanyUser' * 400: * description: Invalid id, role or no company selected * content: