openapi: 3.2.0 info: title: Operations Hub Projects.pre Job.assets Services.table API version: 0.1.1 description: '' servers: [] tags: - name: projects.pre-job.assets-services.table paths: /api/projects/{project_id}/pre-job/assets-services/table: get: operationId: projects_api_prejob_get_project_assets_table summary: Get Project Assets Table parameters: - in: path name: project_id schema: title: Project Id type: string required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProjectAssetTableResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Get assets table data for a project. Table is full representation of all assets in the project that have been created in RFI stage.' tags: - projects.pre-job.assets-services.table deprecated: true security: - APIKeyAuth: [] - CookieAuth: [] post: operationId: projects_api_prejob_export_project_assets_table_to_excel summary: Export Project Assets Table To Excel parameters: - in: path name: project_id schema: title: Project Id type: string required: true responses: '200': description: OK description: Generate and return assets table data for a project as an Excel file. tags: - projects.pre-job.assets-services.table deprecated: true security: - APIKeyAuth: [] - CookieAuth: [] put: operationId: projects_api_prejob_put_project_asset summary: Put Project Asset parameters: - in: path name: project_id schema: title: Project Id type: string required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProjectAssetTableResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Create a new WTG asset in the project table that will be used only for unassigned blades. Required fields: - asset_id: Display name/identifier of the WTG - category: Asset category code - latitude: Latitude coordinate - longitude: Longitude coordinate - manufacturer: WTG manufacturer - model: WTG model - service_code: Service code for this WTG - site: Site name Fixed values that will be automatically set: - asset_type: Always set to ''WTG'' - must_have_parent: Always set to False - parent: Always set to None - protected: Always set to False - special_blade_group_count: Always set to None - id: Auto-generated by database' tags: - projects.pre-job.assets-services.table deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/ProjectAssetCreate' required: true security: - APIKeyAuth: [] - CookieAuth: [] /api/projects/{project_id}/pre-job/assets-services/table-upload: post: operationId: projects_api_prejob_upload_project_assets_table summary: Upload Project Assets Table parameters: - in: path name: project_id schema: title: Project Id type: string required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MessageWithSuccess' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Upload Excel file with asset data. If the Excel file has specific headers (id, asset_id, pad_id, asset_type, parent, latitude, longitude) in the first row (A1:G1), it bypasses the AI and directly updates corresponding database fields (asset_id, pad_id, latitude, longitude) based on the provided ''id''. Otherwise, returns an error message indicating which columns are missing.' tags: - projects.pre-job.assets-services.table deprecated: true requestBody: content: multipart/form-data: schema: properties: file: format: binary title: File type: string required: - file title: FileParams type: object required: true security: - APIKeyAuth: [] - CookieAuth: [] /api/projects/{project_id}/pre-job/assets-services/table/{db_id}: patch: operationId: projects_api_prejob_patch_project_asset summary: Patch Project Asset parameters: - in: path name: project_id schema: title: Project Id type: string required: true - in: path name: db_id schema: title: Db Id type: string required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProjectAssetTableResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Update specific fields of one or multiple ProjectAssets. This endpoint allows updating the following fields: - asset_id - parent (parent db id) - latitude - longitude Only the fields provided in the request will be updated. Other fields will remain unchanged. The db_id parameter can be a single ID or multiple comma-separated IDs. When multiple IDs are provided, the same update will be applied to all assets.' tags: - projects.pre-job.assets-services.table deprecated: true requestBody: content: application/json: schema: $ref: '#/components/schemas/ProjectAssetPatch' required: true security: - APIKeyAuth: [] - CookieAuth: [] delete: operationId: projects_api_prejob_delete_project_asset summary: Delete Project Asset parameters: - in: path name: project_id schema: title: Project Id type: string required: true - in: path name: db_id schema: title: Db Id type: integer required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProjectAssetTableResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Delete a project asset. This endpoint allows deleting non-protected assets from the project table. Protected assets (like WTGs and their blades created from asset groups) cannot be deleted. Only manually created assets (like WTGs for unassigned blades) can be deleted. Args: project_id: Project ID db_id: Database ID of the asset to delete Returns: Updated assets table Raises: APIError: If asset is protected or not found' tags: - projects.pre-job.assets-services.table deprecated: true security: - APIKeyAuth: [] - CookieAuth: [] /api/projects/{project_id}/pre-job/assets-services/table-autofill: post: operationId: projects_api_prejob_autofill_blade_names summary: Autofill Blade Names parameters: - in: path name: project_id schema: title: Project Id type: string required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProjectAssetTableResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' description: 'Auto-fill blade names for WTGs that have exactly 3 blade children. For each WTG that has exactly 3 blade children, this endpoint will name the blades: - Blade A - Blade B - Blade C Only blades without existing names will be updated.' tags: - projects.pre-job.assets-services.table deprecated: true security: - APIKeyAuth: [] - CookieAuth: [] components: schemas: ErrorCode: description: Error codes for API errors. enum: - validation - server - auth - unknown - external - generic title: ErrorCode type: string MessageWithSuccess: additionalProperties: false description: Success response schema with message. 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 message: title: Message type: string required: - message title: MessageWithSuccess 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 ProjectAssetTableResponse: additionalProperties: false description: Schema for project assets table response. properties: assets: description: List of assets with their relationships and details items: $ref: '#/components/schemas/ProjectAsset' title: Assets type: array required: - assets title: ProjectAssetTableResponse type: object ProjectAsset: additionalProperties: false description: Schema for a single project asset. properties: id: description: Asset database ID title: Id type: integer source_asset_group: anyOf: - type: integer - type: 'null' description: Global group ID title: Source Asset Group asset_id: anyOf: - type: string - type: 'null' description: Asset identifier/name (e.g. 'WTG-1', 'BLADE-A') title: Asset Id pad_id: anyOf: - type: string - type: 'null' description: Asset commercial ID title: Pad Id asset_type: description: Type of asset (e.g. 'WTG') title: Asset Type type: string protected: description: Whether the asset is protected from modifications title: Protected type: boolean changed: description: Whether the asset has been changed since the table was regenerated title: Changed type: boolean must_have_parent: description: Whether the asset must have a parent asset title: Must Have Parent type: boolean parent: anyOf: - type: integer - type: 'null' description: ID of parent asset, if any title: Parent special_blade_group_count: anyOf: - type: integer - type: 'null' description: Count of blades in special group title: Special Blade Group Count categories: description: List of asset category codes items: type: string title: Categories type: array service_codes: description: List of service codes for this asset items: type: string title: Service Codes type: array service_names: anyOf: - items: type: string type: array - type: 'null' title: Service Names service_fullnames: anyOf: - items: type: string type: array - type: 'null' title: Service Fullnames addons: description: List of addons for the service items: type: string title: Addons type: array materials: description: List of materials for the service items: type: string title: Materials type: array site: anyOf: - type: string - type: 'null' description: Site name title: Site latitude: anyOf: - type: number - type: 'null' description: Latitude coordinate title: Latitude longitude: anyOf: - type: number - type: 'null' description: Longitude coordinate title: Longitude turbine_manufacturer_name: anyOf: - type: string - type: 'null' description: Name of the turbine manufacturer (only for WTG type) title: Turbine Manufacturer Name turbine_model_name: anyOf: - type: string - type: 'null' description: Name of the turbine model (only for WTG type) title: Turbine Model Name blade_manufacturer_name: anyOf: - type: string - type: 'null' description: Name of the blade manufacturer (only for BLADE type) title: Blade Manufacturer Name blade_model_name: anyOf: - type: string - type: 'null' description: Name of the blade model (only for BLADE type) title: Blade Model Name required: - id - source_asset_group - asset_id - pad_id - asset_type - protected - changed - must_have_parent - parent - special_blade_group_count - categories - service_codes - addons - materials - site - latitude - longitude title: ProjectAsset type: object ProjectAssetCreate: additionalProperties: false description: Schema for creating a new WTG asset. properties: asset_id: description: Display name/identifier of the WTG title: Asset Id type: string pad_id: anyOf: - type: string - type: 'null' description: Pad ID of the WTG title: Pad Id categories: description: List of asset category codes items: type: string title: Categories type: array latitude: description: Latitude coordinate title: Latitude type: number longitude: description: Longitude coordinate title: Longitude type: number asset_manufacturer_id: description: WTG manufacturer ID title: Asset Manufacturer Id type: integer asset_model_id: description: WTG model ID title: Asset Model Id type: integer service_codes: description: List of service codes items: type: string title: Service Codes type: array site: description: Site ID title: Site type: integer required: - asset_id - categories - latitude - longitude - asset_manufacturer_id - asset_model_id - service_codes - site title: ProjectAssetCreate type: object ProjectAssetPatch: additionalProperties: false description: 'Schema for patching a ProjectAsset. Only the fields that are provided will be updated. Other fields will remain unchanged.' properties: asset_id: anyOf: - type: string - type: 'null' description: Asset identifier/name (e.g. 'WTG-1', 'BLADE-A') title: Asset Id pad_id: anyOf: - type: string - type: 'null' description: Asset identifier/name (e.g. 'WTG-1', 'BLADE-A') title: Pad Id parent: anyOf: - type: integer - type: 'null' description: Database ID of the parent asset (must be a WTG asset from the same project) title: Parent latitude: anyOf: - type: number - type: 'null' description: New latitude coordinate for the asset title: Latitude longitude: anyOf: - type: number - type: 'null' description: New longitude coordinate for the asset title: Longitude title: ProjectAssetPatch type: object securitySchemes: APIKeyAuth: type: http scheme: bearer CookieAuth: type: apiKey in: cookie name: opshub_prod_sessionid AuthBearer: type: http scheme: bearer