Built the missing piece between the test datasheet pipeline and Dataforth's new product API. End-to-end: - Pulled DFWDS (Dataforth Web Datasheet System) VB6 source from AD1\Engineering\ENGR\ATE\Test Datasheets\DFWDS to local for analysis - Decoded its filename validation: A-J prefix decodes (A=10..J=19), all- numeric WO# valid (no leading 0), anything else bad - Ported the validation + move logic to Node (dfwds-process.js) - Built bulk uploader (upload-delta.js) for Hoffman's Swagger API (POST /api/v1/TestReportDataFiles/bulk with OAuth client_credentials) Sanitized 3 prior reference scripts (fetch-server-inventory, test-scenarios, test-upload-two) to read CF_* env vars instead of hardcoded creds. Live drain results: - 897 files moved Test_Datasheets -> For_Web (all valid, no renames, no bad), DFWDS port summary in 1.1s - Pushed entire For_Web (7,061 files) to Hoffman API in 49.7s @ 142/s: Created=803 Updated=114 Unchanged=6,144 Errors=0 - Server count: 489,579 -> 490,382 (+803 net new) Also: - Added clients/dataforth/.gitignore to exclude plaintext Oauth.txt note - Added clients/instrumental-music-center/docs/2026-04-13-ticket-notes.md (ticket write-up of 2026-04-11/12/13 IMC1 RDS removal/SQL migration work) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1789 lines
43 KiB
JSON
1789 lines
43 KiB
JSON
{
|
|
"openapi": "3.0.1",
|
|
"info": {
|
|
"title": "Dataforth Product API",
|
|
"description": "API for accessing Dataforth product catalog data",
|
|
"version": "v1"
|
|
},
|
|
"paths": {
|
|
"/api/v1/Admin/refresh-cache": {
|
|
"post": {
|
|
"tags": [
|
|
"Admin"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/RefreshCacheResponseDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Server Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Admin/cache-status": {
|
|
"get": {
|
|
"tags": [
|
|
"Admin"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "appName",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "dataforth.web"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CacheStatusResponseDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Unauthorized",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"403": {
|
|
"description": "Forbidden",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Categories": {
|
|
"get": {
|
|
"tags": [
|
|
"Categories"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CategoryListItemDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Categories/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Categories"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CategoryDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Categories/by-catalog-node/{catalogNodeId}": {
|
|
"get": {
|
|
"tags": [
|
|
"Categories"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "catalogNodeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CategoryDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/OrderableProducts/{orderableProductId}/Attributes": {
|
|
"post": {
|
|
"tags": [
|
|
"OrderableProducts"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "orderableProductId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateProductAttributeRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateProductAttributeRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateProductAttributeRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProductAttributeResponseDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Server Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/OrderableProducts/{orderableProductId}/Attributes/{attributeId}": {
|
|
"put": {
|
|
"tags": [
|
|
"OrderableProducts"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "orderableProductId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "attributeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateProductAttributeRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateProductAttributeRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/UpdateProductAttributeRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProductAttributeResponseDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Server Error"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"OrderableProducts"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "orderableProductId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "attributeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"500": {
|
|
"description": "Server Error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Products": {
|
|
"get": {
|
|
"tags": [
|
|
"Products"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "productSeriesId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "categoryId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProductListItemDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Products/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Products"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProductDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/Products/by-part-number/{partNumber}": {
|
|
"get": {
|
|
"tags": [
|
|
"Products"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "partNumber",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProductDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/product-series": {
|
|
"get": {
|
|
"tags": [
|
|
"ProductSeries"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "categoryId",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesListItemDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/product-series/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"ProductSeries"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/product-series/by-designation/{designation}": {
|
|
"get": {
|
|
"tags": [
|
|
"ProductSeries"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "designation",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/product-series/by-catalog-node/{catalogNodeId}": {
|
|
"get": {
|
|
"tags": [
|
|
"ProductSeries"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "catalogNodeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/SeriesDetailDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/ProductType": {
|
|
"get": {
|
|
"tags": [
|
|
"ProductType"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProductTypeListItemDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/ProductType/{productTypeId}/products": {
|
|
"get": {
|
|
"tags": [
|
|
"ProductType"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "productTypeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/OrderableProductDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProblemDetails"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/TestReportDataFiles": {
|
|
"post": {
|
|
"tags": [
|
|
"TestReportDataFiles"
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTestReportRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTestReportRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTestReportRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Created",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTestReportResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateTestReportResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"get": {
|
|
"tags": [
|
|
"TestReportDataFiles"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "page",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 1
|
|
}
|
|
},
|
|
{
|
|
"name": "pageSize",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"default": 50
|
|
}
|
|
},
|
|
{
|
|
"name": "serialNumberPrefix",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "afterSerialNumber",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TestReportDataFileListItemDtoPagedResultDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/TestReportDataFiles/bulk": {
|
|
"post": {
|
|
"tags": [
|
|
"TestReportDataFiles"
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkCreateTestReportRequest"
|
|
}
|
|
},
|
|
"text/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkCreateTestReportRequest"
|
|
}
|
|
},
|
|
"application/*+json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkCreateTestReportRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BulkCreateTestReportResponse"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Bad Request",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/TestReportDataFiles/{serialNumber}": {
|
|
"get": {
|
|
"tags": [
|
|
"TestReportDataFiles"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "serialNumber",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TestReportDataFileDto"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"TestReportDataFiles"
|
|
],
|
|
"parameters": [
|
|
{
|
|
"name": "serialNumber",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"204": {
|
|
"description": "No Content"
|
|
},
|
|
"404": {
|
|
"description": "Not Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ErrorResponseDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/TestReportDataFiles/stats": {
|
|
"get": {
|
|
"tags": [
|
|
"TestReportDataFiles"
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Success",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TestReportDataFileStatsDto"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"BulkCreateTestReportRequest": {
|
|
"required": [
|
|
"Items"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"Items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/CreateTestReportRequest"
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"BulkCreateTestReportResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"TotalReceived": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Created": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Updated": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Unchanged": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Errors": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CacheStatusResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"AppName": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"PendingRefresh": {
|
|
"type": "boolean"
|
|
},
|
|
"CheckedAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CategoryDetailDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductSeries": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProductSeriesListItemDto"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CategoryListItemDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductSeriesCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CreateProductAttributeRequest": {
|
|
"required": [
|
|
"AttributeType",
|
|
"Name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"Name": {
|
|
"maxLength": 50,
|
|
"minLength": 0,
|
|
"type": "string"
|
|
},
|
|
"Unit": {
|
|
"maxLength": 20,
|
|
"minLength": 0,
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"AttributeType": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
"StringValue": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"NumberValue": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"BooleanValue": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"DateValue": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"SortOrder": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"SortTier": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CreateTestReportRequest": {
|
|
"required": [
|
|
"Content",
|
|
"SerialNumber"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"SerialNumber": {
|
|
"maxLength": 50,
|
|
"minLength": 0,
|
|
"type": "string"
|
|
},
|
|
"Content": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"CreateTestReportResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"SerialNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"ContentHash": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Created": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ErrorResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Message": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"OrderableProductDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"PartNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"OrderableProductGroupId": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"WeightInGrams": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"ProductTypeId": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"LifecycleStatus": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"PcnUrl": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"OrderingAvailability": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/ProductAttributeDto"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProblemDetails": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"status": {
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"nullable": true
|
|
},
|
|
"detail": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"instance": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": {}
|
|
},
|
|
"ProductAttributeDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ProductAttributeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Unit": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"AttributeType": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"StringValue": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"NumberValue": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"BooleanValue": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"DateValue": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"SortOrder": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"SortTier": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProductAttributeResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Unit": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"AttributeType": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"StringValue": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"NumberValue": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"BooleanValue": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"DateValue": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"SortOrder": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"SortTier": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProductDetailDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"PartNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"ProductSeriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductSeriesCatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"PartNumberRoots": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"OrderableProducts": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/OrderableProductDto"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProductListItemDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"PartNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"ProductSeriesId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProductSeriesListItemDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"ProductTypeListItemDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"RefreshCacheResponseDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Success": {
|
|
"type": "boolean"
|
|
},
|
|
"Message": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"RefreshedApps": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"LifecycleRecordsUpdated": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"RefreshRequestedAt": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SeriesDetailDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductCategoryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductCategoryCatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Products": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SeriesProductDto"
|
|
},
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SeriesListItemDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductCategoryId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductCategoryCatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"ProductCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"SeriesProductDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Id": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"PartNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Name": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Slug": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CatalogNodeId": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"TestReportDataFileDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"SerialNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"Content": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CreatedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"UpdatedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"TestReportDataFileListItemDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"SerialNumber": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"CreatedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"UpdatedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"TestReportDataFileListItemDtoPagedResultDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"Items": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/TestReportDataFileListItemDto"
|
|
},
|
|
"nullable": true
|
|
},
|
|
"TotalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"Page": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"PageSize": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"NextCursor": {
|
|
"type": "string",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"TestReportDataFileStatsDto": {
|
|
"type": "object",
|
|
"properties": {
|
|
"TotalCount": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"LatestCreatedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"LatestUpdatedAtUtc": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"UpdateProductAttributeRequest": {
|
|
"required": [
|
|
"AttributeType",
|
|
"Name"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"Name": {
|
|
"maxLength": 50,
|
|
"minLength": 0,
|
|
"type": "string"
|
|
},
|
|
"Unit": {
|
|
"maxLength": 20,
|
|
"minLength": 0,
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"AttributeType": {
|
|
"minLength": 1,
|
|
"type": "string"
|
|
},
|
|
"StringValue": {
|
|
"type": "string",
|
|
"nullable": true
|
|
},
|
|
"NumberValue": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"nullable": true
|
|
},
|
|
"BooleanValue": {
|
|
"type": "boolean",
|
|
"nullable": true
|
|
},
|
|
"DateValue": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"nullable": true
|
|
},
|
|
"SortOrder": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"SortTier": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"securitySchemes": {
|
|
"oauth2": {
|
|
"type": "oauth2",
|
|
"flows": {
|
|
"authorizationCode": {
|
|
"authorizationUrl": "https://login.dataforth.com/connect/authorize",
|
|
"tokenUrl": "https://login.dataforth.com/connect/token",
|
|
"scopes": {
|
|
"openid": "OpenID",
|
|
"profile": "Profile",
|
|
"dataforth.web": "Dataforth API"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"oauth2": [
|
|
"openid",
|
|
"profile",
|
|
"dataforth.web"
|
|
]
|
|
}
|
|
]
|
|
} |