Files
Mike Swanson dd5c5afd4b Session log + DFWDS Node port + Hoffman API uploader pipeline
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>
2026-04-14 21:06:50 -07:00

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"
]
}
]
}