openapi: 3.2.0 info: title: Operations Hub Core.anomalies API version: 0.1.1 description: '' servers: [] tags: - name: core.anomalies paths: /api/core/v1/anomaly-components: get: operationId: list_anomalycomponents summary: List AnomalyComponents parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Search in name title: Search required: false description: Search in name - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: inspection_type schema: anyOf: - type: string - type: 'null' description: Filter by inspection type title: Inspection Type required: false description: Filter by inspection type - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyComponentResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: List all items with optional search, sorting, and filtering. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-types: get: operationId: list_anomaly_types summary: List AnomalyTypes parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Search in name title: Search required: false description: Search in name - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: inspection_type schema: anyOf: - type: string - type: 'null' description: Filter by inspection type title: Inspection Type required: false description: Filter by inspection type - in: query name: service_code schema: anyOf: - type: string - type: 'null' description: Service code context. Omit for general/cross-service views (all types returned). When a non-LER- code is supplied, LER QC deviation types are excluded. When a LER- code is supplied, all types are returned. title: Service Code required: false description: Service code context. Omit for general/cross-service views (all types returned). When a non-LER- code is supplied, LER QC deviation types are excluded. When a LER- code is supplied, all types are returned. - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyTypeResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'List anomaly types, filtered by service code context. No ``service_code`` → all types returned (general / cross-service view). ``service_code`` starts with ``LER-`` → all types returned. ``service_code`` present but not ``LER-`` → LER QC deviation types excluded.' tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-root-cause-types: get: operationId: list_anomalyrootcausetypes summary: List AnomalyRootCauseTypes parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Search in title title: Search required: false description: Search in title - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyRootCauseTypeResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: List all items with optional search, sorting, and filtering. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-parent-types: get: operationId: list_anomalyparenttypes summary: List AnomalyParentTypes parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Search in name title: Search required: false description: Search in name - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyParentTypeResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: List all items with optional search, sorting, and filtering. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-materials: get: operationId: list_anomalymaterials summary: List AnomalyMaterials parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Search in name title: Search required: false description: Search in name - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: anomaly_type_id schema: anyOf: - type: integer - type: 'null' description: Filter by anomaly type ID title: Anomaly Type Id required: false description: Filter by anomaly type ID - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyMaterialResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: List all items with optional search, sorting, and filtering. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-component-type-maps: get: operationId: list_anomalycomponenttypemaps summary: List AnomalyComponentTypeMaps parameters: - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: anomaly_component_id schema: anyOf: - type: integer - type: 'null' description: Filter by anomaly component ID title: Anomaly Component Id required: false description: Filter by anomaly component ID - in: query name: anomaly_type_id schema: anyOf: - type: integer - type: 'null' description: Filter by anomaly type ID title: Anomaly Type Id required: false description: Filter by anomaly type ID - in: query name: service_code schema: anyOf: - type: string - type: 'null' description: Service code context. Omit for general/cross-service views (all mappings returned). When a non-LER- code is supplied, mappings to LER QC deviation types are excluded. When a LER- code is supplied, all mappings are returned. title: Service Code required: false description: Service code context. Omit for general/cross-service views (all mappings returned). When a non-LER- code is supplied, mappings to LER QC deviation types are excluded. When a LER- code is supplied, all mappings are returned. - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyComponentTypeMapResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'List anomaly component-type mappings, filtered by service code context. No ``service_code`` -> all mappings returned (used by unscoped filter views). ``service_code`` starts with ``LER-`` -> all mappings returned. ``service_code`` present but not ``LER-`` -> mappings to LER QC deviation types excluded (used by the component-driven cascade when creating an anomaly).' tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-recommendations: get: operationId: list_anomalyrecommendations summary: List AnomalyRecommendations parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Search in name title: Search required: false description: Search in name - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: type schema: anyOf: - type: string - type: 'null' description: Filter by type title: Type required: false description: Filter by type - in: query name: status schema: anyOf: - type: string - type: 'null' description: Filter by status title: Status required: false description: Filter by status - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyRecommendationResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: List all items with optional search, sorting, and pagination. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] post: operationId: create_anomalyrecommendation summary: Create AnomalyRecommendation parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnomalyRecommendationResponse' description: Create a new item. tags: - core.anomalies requestBody: content: application/json: schema: $ref: '#/components/schemas/AnomalyRecommendationCreate' required: true security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomaly-recommendations/{id}: get: operationId: get_anomalyrecommendation summary: Get AnomalyRecommendation parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnomalyRecommendationResponse' description: Get a single item by ID. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] patch: operationId: update_anomalyrecommendation summary: Update AnomalyRecommendation parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnomalyRecommendationResponse' description: Update an item. tags: - core.anomalies requestBody: content: application/json: schema: $ref: '#/components/schemas/AnomalyRecommendationUpdate' required: true security: - APIKeyAuth: [] - CookieAuth: [] delete: operationId: delete_anomalyrecommendation summary: Delete AnomalyRecommendation parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Success' description: Soft delete an item. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomalies/{id}/files/: get: operationId: core_endpoints_anomalies_files_get_anomaly_files summary: Fetch all files associated with a given anomaly ID parameters: - in: path name: id schema: title: Id type: integer required: true - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: type schema: anyOf: - type: string - type: 'null' description: Filter by file type title: Type required: false description: Filter by file type - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/FileResponse' title: Response type: array description: Fetch all files associated with a given anomaly ID. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] post: operationId: core_endpoints_anomalies_files_post_anomaly_file summary: Upload a new file associated with a given anomaly ID parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/FileResponse' title: Response type: array description: Accepts multipart/form-data with one or more files. Each file should be sent as a separate part with the key 'file'. tags: - core.anomalies requestBody: content: multipart/form-data: schema: properties: file: items: format: binary type: string title: File type: array required: - file title: FileParams type: object required: true security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomalies/{id}/files/{file_id}/: get: operationId: core_endpoints_anomalies_files_get_anomaly_file summary: Fetch a specific file associated with a given anomaly ID parameters: - in: path name: id schema: title: Id type: integer required: true - in: path name: file_id schema: title: File Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FileResponse' description: Returns the file if it is associated with the given anomaly. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] delete: operationId: core_endpoints_anomalies_files_delete_anomaly_file summary: Delete a file associated with a given anomaly ID parameters: - in: path name: id schema: title: Id type: integer required: true - in: path name: file_id schema: title: File Id type: integer required: true responses: '200': description: OK content: application/json: schema: title: Response type: object description: Deletes the specified file if it is associated with the given anomaly. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomalies/{id}/files/b64/: post: operationId: core_endpoints_anomalies_files_post_anomaly_body_file summary: Upload a new body file associated with a given anomaly ID parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/FileResponse' title: Response type: array description: 'Accepts a JSON object `{"files": [...], "additional_information": {...}}`. Each file includes base64-encoded data; `additional_information` is optional JSON metadata stored on each file link. A legacy bare array `[...]` is still accepted (no metadata).' tags: - core.anomalies requestBody: content: application/json: schema: anyOf: - $ref: '#/components/schemas/BodyFileWrapper' - items: $ref: '#/components/schemas/BodyFile' type: array title: Payload required: true security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomalies: get: operationId: list_anomalies summary: List anomalies parameters: - in: query name: search schema: anyOf: - type: string - type: 'null' description: Free-text search title: Search required: false description: Free-text search - in: query name: sort schema: anyOf: - type: string - type: 'null' description: Sort field title: Sort required: false description: Sort field - in: query name: turbine_id schema: anyOf: - type: integer - type: 'null' description: Filter by turbine ID title: Turbine Id required: false description: Filter by turbine ID - in: query name: turbine_component_id schema: anyOf: - type: integer - type: 'null' description: Filter by turbine component ID title: Turbine Component Id required: false description: Filter by turbine component ID - in: query name: project_id schema: anyOf: - type: integer - type: 'null' description: Filter by project ID title: Project Id required: false description: Filter by project ID - in: query name: workorder_id schema: anyOf: - type: integer - type: 'null' description: Filter by work order ID title: Workorder Id required: false description: Filter by work order ID - in: query name: service_order_line_id schema: anyOf: - type: integer - type: 'null' description: Filter by service order line ID title: Service Order Line Id required: false description: Filter by service order line ID - in: query name: anomaly_type_id schema: anyOf: - type: integer - type: 'null' description: Filter by anomaly type ID title: Anomaly Type Id required: false description: Filter by anomaly type ID - in: query name: anomaly_sub_type_id schema: anyOf: - type: integer - type: 'null' description: Filter by anomaly sub-type ID title: Anomaly Sub Type Id required: false description: Filter by anomaly sub-type ID - in: query name: anomaly_major_component_id schema: anyOf: - type: integer - type: 'null' description: Filter by major component ID title: Anomaly Major Component Id required: false description: Filter by major component ID - in: query name: anomaly_component_id schema: anyOf: - type: integer - type: 'null' description: Filter by component ID title: Anomaly Component Id required: false description: Filter by component ID - in: query name: anomaly_sub_component_id schema: anyOf: - type: integer - type: 'null' description: Filter by sub-component ID title: Anomaly Sub Component Id required: false description: Filter by sub-component ID - in: query name: anomaly_material_id schema: anyOf: - type: integer - type: 'null' description: Filter by material ID title: Anomaly Material Id required: false description: Filter by material ID - in: query name: parent_type_id schema: anyOf: - type: integer - type: 'null' description: Filter by parent type ID title: Parent Type Id required: false description: Filter by parent type ID - in: query name: root_cause_id schema: anyOf: - type: integer - type: 'null' description: Filter by root cause ID title: Root Cause Id required: false description: Filter by root cause ID - in: query name: parent_anomaly_id schema: anyOf: - type: integer - type: 'null' deprecated: true description: 'Deprecated: No longer used. Filter by link_group instead.' title: Parent Anomaly Id required: false description: 'Deprecated: No longer used. Filter by link_group instead.' deprecated: true - in: query name: severity schema: anyOf: - type: string - type: 'null' description: Filter by severity title: Severity required: false description: Filter by severity - in: query name: status schema: anyOf: - type: string - type: 'null' description: Filter by status title: Status required: false description: Filter by status - in: query name: client_status schema: anyOf: - type: string - type: 'null' description: Filter by client status title: Client Status required: false description: Filter by client status - in: query name: stage schema: anyOf: - type: string - type: 'null' description: Filter by stage title: Stage required: false description: Filter by stage - in: query name: internal_external schema: anyOf: - type: string - type: 'null' description: Filter by internal/external title: Internal External required: false description: Filter by internal/external - in: query name: side schema: anyOf: - type: string - type: 'null' description: Filter by side title: Side required: false description: Filter by side - in: query name: rib schema: anyOf: - type: string - type: 'null' description: Filter by rib title: Rib required: false description: Filter by rib - in: query name: cross_section_side schema: anyOf: - type: string - type: 'null' description: Filter by cross section side title: Cross Section Side required: false description: Filter by cross section side - in: query name: cross_section_type schema: anyOf: - type: string - type: 'null' description: Filter by cross section type title: Cross Section Type required: false description: Filter by cross section type - in: query name: registered_by schema: anyOf: - type: string - type: 'null' description: Filter by registered by title: Registered By required: false description: Filter by registered by - in: query name: registration_origin schema: anyOf: - type: string - type: 'null' description: Filter by registration origin title: Registration Origin required: false description: Filter by registration origin - in: query name: created_at_gte schema: anyOf: - format: date type: string - type: 'null' description: Filter by creation date >= (YYYY-MM-DD) title: Created At Gte required: false description: Filter by creation date >= (YYYY-MM-DD) - in: query name: created_at_lte schema: anyOf: - format: date type: string - type: 'null' description: Filter by creation date <= (YYYY-MM-DD) title: Created At Lte required: false description: Filter by creation date <= (YYYY-MM-DD) - in: query name: updated_at_gte schema: anyOf: - format: date type: string - type: 'null' description: Filter by last modified date >= (YYYY-MM-DD) title: Updated At Gte required: false description: Filter by last modified date >= (YYYY-MM-DD) - in: query name: updated_at_lte schema: anyOf: - format: date type: string - type: 'null' description: Filter by last modified date <= (YYYY-MM-DD) title: Updated At Lte required: false description: Filter by last modified date <= (YYYY-MM-DD) - in: query name: custom_value_filters schema: anyOf: - type: string - type: 'null' description: 'Filter by client custom field values. A JSON array of {"custom_field_id": int, "values": [str, ...]}; criteria are AND-ed across fields and values are OR-ed within a field. Requires service_order_line_id, whose customer + turbine model gate which fields may be filtered on (a hidden field is rejected).' title: Custom Value Filters required: false description: 'Filter by client custom field values. A JSON array of {"custom_field_id": int, "values": [str, ...]}; criteria are AND-ed across fields and values are OR-ed within a field. Requires service_order_line_id, whose customer + turbine model gate which fields may be filtered on (a hidden field is rejected).' - in: query name: paginate schema: default: true description: Enable pagination (false returns all results) title: Paginate type: boolean required: false description: Enable pagination (false returns all results) - in: query name: page schema: default: 1 description: Page number minimum: 1 title: Page type: integer required: false description: Page number - in: query name: page_size schema: default: 50 description: Number of items per page maximum: 1000 minimum: 1 title: Page Size type: integer required: false description: Number of items per page responses: '200': description: OK content: application/json: schema: items: $ref: '#/components/schemas/AnomalyResponse' title: Response type: array '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: List anomalies with optional filtering and pagination. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] post: operationId: create_anomaly summary: Create anomaly parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnomalyResponse' description: Create a new anomaly. tags: - core.anomalies requestBody: content: application/json: schema: $ref: '#/components/schemas/AnomalyCreate' required: true security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomalies/{id}: get: operationId: get_anomaly summary: Get anomaly parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnomalyResponse' description: Get a single anomaly by ID. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] patch: operationId: update_anomaly summary: Update anomaly parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AnomalyResponse' description: Partially update anomaly. tags: - core.anomalies requestBody: content: application/json: schema: $ref: '#/components/schemas/AnomalyUpdate' required: true security: - APIKeyAuth: [] - CookieAuth: [] delete: operationId: delete_anomaly summary: Delete anomaly parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Success' description: Soft-delete anomaly. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] /api/core/v1/anomalies/{id}/main-image: get: operationId: get_anomaly_main_image summary: Get anomaly main image parameters: - in: path name: id schema: title: Id type: integer required: true responses: '200': description: OK description: Resolve and redirect to anomaly main image URL. tags: - core.anomalies security: - APIKeyAuth: [] - CookieAuth: [] components: schemas: BodyFile: properties: b64data: title: B64Data type: string name: title: Name type: string content_type: anyOf: - type: string - type: 'null' title: Content Type required: - b64data - name title: BodyFile type: object AnomalyMaterialResponse: additionalProperties: false description: Schema for AnomalyMaterial response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Material ID title: Id type: integer name: description: Material name title: Name type: string anomaly_type_id: description: Anomaly type ID title: Anomaly Type Id type: integer required: - updated_at - id - name - anomaly_type_id title: AnomalyMaterialResponse type: object AnomalyUpdate: additionalProperties: false description: Schema for updating Anomaly. properties: name: anyOf: - type: string - type: 'null' description: Anomaly name title: Name turbine_id: anyOf: - type: integer - type: 'null' description: Turbine ID title: Turbine Id turbine_component_id: anyOf: - type: integer - type: 'null' description: Turbine component ID title: Turbine Component Id turbine_component_serial_number: anyOf: - type: string - type: 'null' description: Turbine component serial number title: Turbine Component Serial Number project_id: anyOf: - type: integer - type: 'null' description: Project ID title: Project Id workorder_id: anyOf: - type: integer - type: 'null' description: Work order ID title: Workorder Id service_order_line_id: anyOf: - type: integer - type: 'null' description: Service order line ID title: Service Order Line Id custom_values: anyOf: - items: $ref: '#/components/schemas/AnomalyCustomValueInput' type: array - type: 'null' description: Client custom field values (replaces the full set) title: Custom Values distance_to_root: anyOf: - type: number - type: 'null' description: Distance to root title: Distance To Root max_distance: anyOf: - type: number - type: 'null' description: Max distance title: Max Distance distance_to_leading_edge: anyOf: - type: number - type: 'null' description: Distance to leading edge title: Distance To Leading Edge cross_section_distance: anyOf: - type: number - type: 'null' description: Cross section distance title: Cross Section Distance cross_section_chamber_distance: anyOf: - type: number - type: 'null' description: Cross section chamber distance title: Cross Section Chamber Distance width: anyOf: - type: number - type: 'null' description: Width title: Width profile_depth_from: anyOf: - type: number - type: 'null' description: Profile depth from title: Profile Depth From profile_depth_to: anyOf: - type: number - type: 'null' description: Profile depth to title: Profile Depth To severity: description: Severity level enum: - LEVEL_0 - LEVEL_1 - LEVEL_2 - LEVEL_3 - LEVEL_4 - LEVEL_5 title: Severity type: string status: anyOf: - type: string - type: 'null' description: Status title: Status stage: anyOf: - type: string - type: 'null' description: Stage title: Stage internal_external: anyOf: - type: string - type: 'null' description: Internal/External classification title: Internal External side: anyOf: - type: string - type: 'null' description: Side classification title: Side cross_section_side: anyOf: - type: string - type: 'null' description: Cross section side title: Cross Section Side cross_section_type: anyOf: - type: string - type: 'null' description: Cross section type title: Cross Section Type rib: anyOf: - type: string - type: 'null' description: Rib classification title: Rib anomaly_type_id: anyOf: - type: integer - type: 'null' description: Anomaly type ID title: Anomaly Type Id anomaly_sub_type_id: anyOf: - type: integer - type: 'null' description: Anomaly sub-type ID title: Anomaly Sub Type Id anomaly_major_component_id: anyOf: - type: integer - type: 'null' description: Major component ID title: Anomaly Major Component Id anomaly_component_id: anyOf: - type: integer - type: 'null' description: Component ID title: Anomaly Component Id anomaly_sub_component_id: anyOf: - type: integer - type: 'null' description: Sub-component ID title: Anomaly Sub Component Id anomaly_material_id: anyOf: - type: integer - type: 'null' description: Material ID title: Anomaly Material Id parent_type_id: anyOf: - type: integer - type: 'null' description: Parent type ID title: Parent Type Id root_cause_id: anyOf: - type: integer - type: 'null' description: Root cause ID title: Root Cause Id client_status: anyOf: - type: string - type: 'null' description: Client status title: Client Status chargeable: anyOf: - type: boolean - type: 'null' description: Whether the anomaly is chargeable title: Chargeable description: anyOf: - type: string - type: 'null' description: Anomaly description title: Description comments: anyOf: - type: string - type: 'null' description: Comments title: Comments service_provider_id: anyOf: - type: integer - type: 'null' description: Service provider ID title: Service Provider Id damage_cause: anyOf: - type: string - type: 'null' description: Damage cause title: Damage Cause parent_anomaly_id: anyOf: - type: integer - type: 'null' deprecated: true description: 'Deprecated: No longer used. Use link_group instead.' title: Parent Anomaly Id cross_file_ids: anyOf: - type: object - items: {} type: array - type: 'null' description: Cross file IDs as JSON title: Cross File Ids video_timestamp_ms: anyOf: - type: integer - type: 'null' description: Video timestamp in milliseconds title: Video Timestamp Ms frame_blob_path: anyOf: - type: string - type: 'null' description: GCS path to the raw uncropped video frame this anomaly was detected in title: Frame Blob Path link_group: anyOf: - type: string - type: 'null' description: Link group title: Link Group registered_by: anyOf: - type: string - type: 'null' description: Registered by title: Registered By registration_origin: anyOf: - type: string - type: 'null' description: Registration origin title: Registration Origin width_difference_since_previous: anyOf: - type: number - type: 'null' description: Width difference since previous title: Width Difference Since Previous width_difference_since_oldest: anyOf: - type: number - type: 'null' description: Width difference since oldest title: Width Difference Since Oldest length_difference_since_previous: anyOf: - type: number - type: 'null' description: Length difference since previous title: Length Difference Since Previous length_difference_since_oldest: anyOf: - type: number - type: 'null' description: Length difference since oldest title: Length Difference Since Oldest video_frame: anyOf: - type: integer - type: 'null' description: Video frame number where this anomaly is located title: Video Frame segmentation: anyOf: - type: string - type: 'null' description: Segmentation data as JSON (e.g., polygon coordinates) title: Segmentation segmentation_version: anyOf: - type: integer - type: 'null' description: Version of the segmentation data format (null not allowed) title: Segmentation Version bbox: anyOf: - type: string - type: 'null' description: Bounding box as JSON string title: Bbox ai_status: anyOf: - enum: - NEW - QUALIFIED - UNQUALIFIED - CONFIRMED - REJECTED - DUPLICATE type: string - type: 'null' description: Status of AI detection title: Ai Status ai_confidence: anyOf: - type: number - type: 'null' description: Confidence score from AI detection title: Ai Confidence ai_images_v2: anyOf: - type: boolean - type: 'null' description: Whether the AI anomaly was imported from the JSON image reference format title: Ai Images V2 title: AnomalyUpdate type: object BodyFileWrapper: description: 'Object form of a base64 upload request body. Wraps the file list together with optional batch-level ``additional_information`` metadata that is persisted on every ``FileEntityLink`` created for the batch (mirroring the multipart ``additional_information`` form field).' properties: files: items: $ref: '#/components/schemas/BodyFile' title: Files type: array additional_information: anyOf: - type: object - type: 'null' title: Additional Information required: - files title: BodyFileWrapper type: object AnomalyRecommendationUpdate: additionalProperties: false description: Schema for updating AnomalyRecommendation. properties: name: anyOf: - type: string - type: 'null' title: Name action: anyOf: - type: string - type: 'null' title: Action type: anyOf: - type: string - type: 'null' title: Type status: anyOf: - type: string - type: 'null' title: Status title: AnomalyRecommendationUpdate type: object Success: additionalProperties: false description: 'Schema returned for successful operations. The `success` field is always ``true`` in this schema. Failed operations are represented by the :class:`Error` schema instead, so a ``false`` value does not occur in practice. The field is included for consistency across responses and to make the contract explicit for clients.' properties: success: default: true description: Always true for this schema. Errors are represented by a separate Error schema, so false is never returned. title: Success type: boolean title: Success type: object ErrorCode: description: Error codes for API errors. enum: - validation - server - auth - unknown - external - generic title: ErrorCode type: string AnomalyRecommendationCreate: additionalProperties: false description: Schema for creating AnomalyRecommendation. properties: name: description: Recommendation name title: Name type: string action: anyOf: - type: string - type: 'null' description: Recommended action title: Action type: anyOf: - type: string - type: 'null' description: Recommendation type title: Type status: anyOf: - type: string - type: 'null' description: Recommendation status title: Status required: - name title: AnomalyRecommendationCreate type: object AnomalyCustomValueInput: additionalProperties: false description: Schema for setting one custom field value on an anomaly. properties: custom_field_id: description: Customer custom field ID title: Custom Field Id type: integer value: anyOf: - type: string - type: 'null' description: Value for the field. Null or empty clears it. title: Value required: - custom_field_id title: AnomalyCustomValueInput type: object AnomalyComponentResponse: additionalProperties: false description: Schema for AnomalyComponent response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Component ID title: Id type: integer name: description: Component name title: Name type: string inspection_type: description: Inspection type title: Inspection Type type: string parent_anomaly_component_id: anyOf: - type: integer - type: 'null' description: Parent component ID title: Parent Anomaly Component Id required: - updated_at - id - name - inspection_type title: AnomalyComponentResponse type: object AnomalyCreate: additionalProperties: false description: Schema for creating Anomaly. properties: name: anyOf: - type: string - type: 'null' description: Anomaly name title: Name turbine_id: anyOf: - type: integer - type: 'null' description: Turbine ID title: Turbine Id turbine_component_id: anyOf: - type: integer - type: 'null' description: Turbine component ID title: Turbine Component Id turbine_component_serial_number: anyOf: - type: string - type: 'null' description: Turbine component serial number title: Turbine Component Serial Number project_id: anyOf: - type: integer - type: 'null' description: Project ID title: Project Id workorder_id: anyOf: - type: integer - type: 'null' description: Work order ID title: Workorder Id service_order_line_id: anyOf: - type: integer - type: 'null' description: Service order line ID title: Service Order Line Id custom_values: anyOf: - items: $ref: '#/components/schemas/AnomalyCustomValueInput' type: array - type: 'null' description: Client custom field values to set on the anomaly title: Custom Values distance_to_root: description: Distance to root title: Distance To Root type: number max_distance: anyOf: - type: number - type: 'null' description: Max distance title: Max Distance distance_to_leading_edge: anyOf: - type: number - type: 'null' description: Distance to leading edge title: Distance To Leading Edge cross_section_distance: anyOf: - type: number - type: 'null' description: Cross section distance title: Cross Section Distance cross_section_chamber_distance: anyOf: - type: number - type: 'null' description: Cross section chamber distance title: Cross Section Chamber Distance width: anyOf: - type: number - type: 'null' description: Width title: Width profile_depth_from: anyOf: - type: number - type: 'null' description: Profile depth from title: Profile Depth From profile_depth_to: anyOf: - type: number - type: 'null' description: Profile depth to title: Profile Depth To severity: anyOf: - enum: - LEVEL_0 - LEVEL_1 - LEVEL_2 - LEVEL_3 - LEVEL_4 - LEVEL_5 type: string - type: 'null' description: Severity level title: Severity status: default: NEW description: Status title: Status type: string stage: default: RELEASED description: Stage title: Stage type: string internal_external: description: Internal/External classification title: Internal External type: string side: anyOf: - type: string - type: 'null' description: Side classification title: Side cross_section_side: anyOf: - type: string - type: 'null' description: Cross section side title: Cross Section Side cross_section_type: default: DOUBLE_SHEAR_WEB description: Cross section type title: Cross Section Type type: string rib: anyOf: - type: string - type: 'null' description: Rib classification title: Rib anomaly_type_id: anyOf: - type: integer - type: 'null' description: Anomaly type ID title: Anomaly Type Id anomaly_sub_type_id: anyOf: - type: integer - type: 'null' description: Anomaly sub-type ID title: Anomaly Sub Type Id anomaly_major_component_id: anyOf: - type: integer - type: 'null' description: Major component ID title: Anomaly Major Component Id anomaly_component_id: anyOf: - type: integer - type: 'null' description: Component ID title: Anomaly Component Id anomaly_sub_component_id: anyOf: - type: integer - type: 'null' description: Sub-component ID title: Anomaly Sub Component Id anomaly_material_id: anyOf: - type: integer - type: 'null' description: Material ID title: Anomaly Material Id parent_type_id: anyOf: - type: integer - type: 'null' description: Parent type ID title: Parent Type Id root_cause_id: anyOf: - type: integer - type: 'null' description: Root cause ID title: Root Cause Id client_status: anyOf: - type: string - type: 'null' description: Client status title: Client Status chargeable: anyOf: - type: boolean - type: 'null' description: Whether the anomaly is chargeable title: Chargeable description: anyOf: - type: string - type: 'null' description: Anomaly description title: Description comments: anyOf: - type: string - type: 'null' description: Comments title: Comments service_provider_id: anyOf: - type: integer - type: 'null' description: Service provider ID title: Service Provider Id damage_cause: anyOf: - type: string - type: 'null' description: Damage cause title: Damage Cause parent_anomaly_id: anyOf: - type: integer - type: 'null' deprecated: true description: 'Deprecated: No longer used. Use link_group instead.' title: Parent Anomaly Id cross_file_ids: anyOf: - type: object - items: {} type: array - type: 'null' description: Cross file IDs as JSON title: Cross File Ids video_timestamp_ms: anyOf: - type: integer - type: 'null' description: Video timestamp in milliseconds title: Video Timestamp Ms frame_blob_path: anyOf: - type: string - type: 'null' description: GCS path to the raw uncropped video frame this anomaly was detected in title: Frame Blob Path link_group: anyOf: - type: string - type: 'null' description: Link group title: Link Group registered_by: default: AERONES description: Registered by title: Registered By type: string registration_origin: anyOf: - type: string - type: 'null' description: Registration origin title: Registration Origin width_difference_since_previous: anyOf: - type: number - type: 'null' description: Width difference since previous title: Width Difference Since Previous width_difference_since_oldest: anyOf: - type: number - type: 'null' description: Width difference since oldest title: Width Difference Since Oldest length_difference_since_previous: anyOf: - type: number - type: 'null' description: Length difference since previous title: Length Difference Since Previous length_difference_since_oldest: anyOf: - type: number - type: 'null' description: Length difference since oldest title: Length Difference Since Oldest source_object: anyOf: - {} - type: 'null' description: Inspection data file reference title: Source Object video_frame: anyOf: - type: integer - type: 'null' description: Video frame number where this anomaly is located title: Video Frame segmentation: anyOf: - type: string - type: 'null' description: Segmentation data as JSON (e.g., polygon coordinates) title: Segmentation segmentation_version: anyOf: - type: integer - type: 'null' description: Version of the segmentation data format (defaults to 2 when omitted) title: Segmentation Version bbox: anyOf: - type: string - type: 'null' description: Bounding box as JSON string title: Bbox ai_status: anyOf: - enum: - NEW - QUALIFIED - UNQUALIFIED - CONFIRMED - REJECTED - DUPLICATE type: string - type: 'null' description: Status of AI detection title: Ai Status ai_confidence: anyOf: - type: number - type: 'null' description: Confidence score from AI detection title: Ai Confidence ai_images_v2: anyOf: - type: boolean - type: 'null' description: Whether the AI anomaly was imported from the JSON image reference format title: Ai Images V2 required: - distance_to_root - internal_external title: AnomalyCreate type: object AnomalyRecommendationResponse: additionalProperties: false description: Schema for AnomalyRecommendation response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Recommendation ID title: Id type: integer name: description: Recommendation name title: Name type: string action: anyOf: - type: string - type: 'null' description: Recommended action title: Action type: anyOf: - type: string - type: 'null' description: Recommendation type title: Type status: anyOf: - type: string - type: 'null' description: Recommendation status title: Status required: - updated_at - id - name title: AnomalyRecommendationResponse type: object AnomalyTypeResponse: additionalProperties: false description: Schema for AnomalyType response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Type ID title: Id type: integer name: description: Type name title: Name type: string inspection_type: anyOf: - type: string - type: 'null' description: Inspection type title: Inspection Type parent_anomaly_type_id: anyOf: - type: integer - type: 'null' description: Parent type ID title: Parent Anomaly Type Id required: - updated_at - id - name title: AnomalyTypeResponse type: object Error: additionalProperties: false description: Error response schema. properties: code: $ref: '#/components/schemas/ErrorCode' message: title: Message type: string required: - code - message title: Error type: object AnomalyRootCauseTypeResponse: additionalProperties: false description: Schema for AnomalyRootCauseType response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Root cause type ID title: Id type: integer title: anyOf: - type: string - type: 'null' description: Root cause title title: Title required: - updated_at - id title: AnomalyRootCauseTypeResponse type: object AnomalyParentTypeResponse: additionalProperties: false description: Schema for AnomalyParentType response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Parent type ID title: Id type: integer name: description: Parent type name title: Name type: string required: - updated_at - id - name title: AnomalyParentTypeResponse type: object FileResponse: additionalProperties: false description: Schema for File response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: File ID title: Id type: integer name: description: File name title: Name type: string type: anyOf: - type: string - type: 'null' description: File type title: Type additional_information: anyOf: - type: object - type: 'null' description: Extra metadata from the entity link title: Additional Information required: - updated_at - id - name title: FileResponse type: object AnomalyResponse: additionalProperties: false description: Schema for Anomaly response. properties: updated_at: description: Last update timestamp format: date-time title: Updated At type: string id: description: Anomaly ID title: Id type: integer name: anyOf: - type: string - type: 'null' description: Anomaly name title: Name turbine_id: anyOf: - type: integer - type: 'null' description: Turbine ID title: Turbine Id turbine_component_id: anyOf: - type: integer - type: 'null' description: Turbine component ID title: Turbine Component Id turbine_component_name: anyOf: - type: string - type: 'null' description: Turbine component display name title: Turbine Component Name turbine_component_serial_number: anyOf: - type: string - type: 'null' description: Turbine component serial number title: Turbine Component Serial Number project_id: anyOf: - type: integer - type: 'null' description: Project ID title: Project Id workorder_id: anyOf: - type: integer - type: 'null' description: Work order ID title: Workorder Id service_order_line_id: anyOf: - type: integer - type: 'null' description: Service order line ID title: Service Order Line Id custom_values: description: Client custom field values items: $ref: '#/components/schemas/AnomalyCustomValueOutput' title: Custom Values type: array distance_to_root: description: Distance to root title: Distance To Root type: number max_distance: anyOf: - type: number - type: 'null' description: Max distance title: Max Distance distance_to_leading_edge: anyOf: - type: number - type: 'null' description: Distance to leading edge title: Distance To Leading Edge cross_section_distance: anyOf: - type: number - type: 'null' description: Cross section distance title: Cross Section Distance cross_section_chamber_distance: anyOf: - type: number - type: 'null' description: Cross section chamber distance title: Cross Section Chamber Distance width: anyOf: - type: number - type: 'null' description: Width title: Width profile_depth_from: anyOf: - type: number - type: 'null' description: Profile depth from title: Profile Depth From profile_depth_to: anyOf: - type: number - type: 'null' description: Profile depth to title: Profile Depth To severity: anyOf: - type: string - type: 'null' description: Severity level title: Severity status: description: Status title: Status type: string stage: description: Stage title: Stage type: string resolution_status: anyOf: - type: string - type: 'null' description: Resolution status (derived from stage) title: Resolution Status internal_external: description: Internal/External classification title: Internal External type: string side: anyOf: - type: string - type: 'null' description: Side classification title: Side cross_section_side: anyOf: - type: string - type: 'null' description: Cross section side title: Cross Section Side cross_section_type: description: Cross section type title: Cross Section Type type: string rib: anyOf: - type: string - type: 'null' description: Rib classification title: Rib anomaly_type_id: anyOf: - type: integer - type: 'null' description: Anomaly type ID title: Anomaly Type Id anomaly_type_name: anyOf: - type: string - type: 'null' description: Anomaly type name title: Anomaly Type Name anomaly_sub_type_id: anyOf: - type: integer - type: 'null' description: Anomaly sub-type ID title: Anomaly Sub Type Id anomaly_sub_type_name: anyOf: - type: string - type: 'null' description: Anomaly sub-type name title: Anomaly Sub Type Name anomaly_major_component_id: anyOf: - type: integer - type: 'null' description: Major component ID title: Anomaly Major Component Id anomaly_major_component_name: anyOf: - type: string - type: 'null' description: Major component name title: Anomaly Major Component Name anomaly_component_id: anyOf: - type: integer - type: 'null' description: Component ID title: Anomaly Component Id anomaly_component_name: anyOf: - type: string - type: 'null' description: Component name title: Anomaly Component Name anomaly_sub_component_id: anyOf: - type: integer - type: 'null' description: Sub-component ID title: Anomaly Sub Component Id anomaly_sub_component_name: anyOf: - type: string - type: 'null' description: Sub-component name title: Anomaly Sub Component Name anomaly_material_id: anyOf: - type: integer - type: 'null' description: Material ID title: Anomaly Material Id anomaly_material_name: anyOf: - type: string - type: 'null' description: Anomaly material name title: Anomaly Material Name parent_type_id: anyOf: - type: integer - type: 'null' description: Parent type ID title: Parent Type Id root_cause_id: anyOf: - type: integer - type: 'null' description: Root cause ID title: Root Cause Id root_cause_name: anyOf: - type: string - type: 'null' description: Root cause name title: Root Cause Name main_image_url: anyOf: - type: string - type: 'null' description: URL of anomaly main image proxy endpoint title: Main Image Url client_status: anyOf: - type: string - type: 'null' description: Client status title: Client Status chargeable: anyOf: - type: boolean - type: 'null' description: Whether the anomaly is chargeable title: Chargeable description: anyOf: - type: string - type: 'null' description: Anomaly description title: Description comments: anyOf: - type: string - type: 'null' description: Comments title: Comments service_provider_id: anyOf: - type: integer - type: 'null' description: Service provider ID title: Service Provider Id damage_cause: anyOf: - type: string - type: 'null' description: Damage cause title: Damage Cause parent_anomaly_id: anyOf: - type: integer - type: 'null' deprecated: true description: 'Deprecated: No longer used. Use link_group instead.' title: Parent Anomaly Id cross_file_ids: anyOf: - type: object - items: {} type: array - type: 'null' description: Cross file IDs as JSON title: Cross File Ids video_timestamp_ms: anyOf: - type: integer - type: 'null' description: Video timestamp in milliseconds title: Video Timestamp Ms link_group: anyOf: - type: string - type: 'null' description: Link group title: Link Group registered_by: description: Registered by title: Registered By type: string registered_by_user: anyOf: - type: string - type: 'null' description: Email/username of user who registered anomaly title: Registered By User registration_origin: anyOf: - type: string - type: 'null' description: Registration origin title: Registration Origin width_difference_since_previous: anyOf: - type: number - type: 'null' description: Width difference since previous title: Width Difference Since Previous width_difference_since_oldest: anyOf: - type: number - type: 'null' description: Width difference since oldest title: Width Difference Since Oldest length_difference_since_previous: anyOf: - type: number - type: 'null' description: Length difference since previous title: Length Difference Since Previous length_difference_since_oldest: anyOf: - type: number - type: 'null' description: Length difference since oldest title: Length Difference Since Oldest source_object_id: anyOf: - type: integer - type: 'null' description: ID of inspection file from which this anomaly is created from title: Source Object Id source_object_type_id: anyOf: - type: integer - type: 'null' description: Type of source object (e.g., 'inspection_file') title: Source Object Type Id video_frame: anyOf: - type: integer - type: 'null' description: Video frame number where this anomaly is located title: Video Frame qr_code: anyOf: - type: integer - type: 'null' description: Data extracted from QR code if applicable title: Qr Code segmentation: anyOf: - type: string - type: 'null' description: Segmentation data as JSON (e.g., polygon coordinates) title: Segmentation segmentation_version: anyOf: - type: integer - type: 'null' description: Version of the segmentation data format title: Segmentation Version unity_details: anyOf: - type: object - type: 'null' description: Additional details from Unity analysis as JSON title: Unity Details bbox: anyOf: - type: string - type: 'null' description: Bounding box as JSON string title: Bbox ai_anomaly_id: anyOf: - type: integer - type: 'null' description: ID of associated AI-detected anomaly if applicable title: Ai Anomaly Id ai_status: anyOf: - type: string - type: 'null' description: Status of AI detection title: Ai Status ai_confidence: anyOf: - type: number - type: 'null' description: Confidence score from AI detection title: Ai Confidence ai_images_v2: anyOf: - type: boolean - type: 'null' description: Whether the AI anomaly was imported from the JSON image reference format title: Ai Images V2 frame_blob_path: anyOf: - type: string - type: 'null' description: GCS path to the raw uncropped video frame this anomaly was detected in title: Frame Blob Path required: - updated_at - id - distance_to_root - status - stage - internal_external - cross_section_type - registered_by title: AnomalyResponse type: object AnomalyCustomValueOutput: additionalProperties: false description: Schema for a custom field value in an anomaly response. properties: id: description: Custom value ID title: Id type: integer custom_field_id: description: Customer custom field ID title: Custom Field Id type: integer custom_field_name: description: Field name title: Custom Field Name type: string custom_field_type: description: Field data type title: Custom Field Type type: string value: anyOf: - type: string - type: 'null' description: Value for the field title: Value required: - id - custom_field_id - custom_field_name - custom_field_type title: AnomalyCustomValueOutput type: object AnomalyComponentTypeMapResponse: additionalProperties: false description: Schema for AnomalyComponentTypeMap response. properties: anomaly_component_id: description: Anomaly component ID title: Anomaly Component Id type: integer anomaly_type_id: description: Anomaly type ID title: Anomaly Type Id type: integer required: - anomaly_component_id - anomaly_type_id title: AnomalyComponentTypeMapResponse type: object securitySchemes: APIKeyAuth: type: http scheme: bearer CookieAuth: type: apiKey in: cookie name: opshub_prod_sessionid AuthBearer: type: http scheme: bearer