Merged PR 72599: Implement GET Boards / Edges
1cbc09f4
Schaber, Daniel
committed
succeeded
6 changed files
IMaterialsService.cs
/Client/HomagGroup.DigitalFactory.ApiGateway.Client/Interfaces/IMaterialsService.cs-1+14
/Client/HomagGroup.DigitalFactory.ApiGateway.Client/Interfaces/IMaterialsService.cs
Add comment 1 Plus  using System.Collections.Generic;
Add comment 1 2 using System.Threading.Tasks;
Add comment 2 3
Add comment 3 4 namespace HomagGroup.DigitalFactory.ApiGateway.Client.Interfaces
Add comment 8 9 public interface IMaterialsService
Add comment 9 10 {
Add comment 10 11 /// <summary>
Add comment 12 Plus   /// Get all the board type data, optionally include board instance data
Add comment 13 Plus   /// </summary>
Add comment 14 Plus   /// <returns></returns>
Add comment 15 Plus   Task<GetBoardsResult> MMGetBoardTypes(bool withInstances = false);
Add comment 16 Plus  
Add comment 17 Plus   /// <summary>
Add comment 18 Plus   /// Get all the edgeband type data, optionally include edgeband instance data
Add comment 19 Plus   /// </summary>
Add comment 20 Plus   /// <returns></returns>
Add comment 21 Plus   Task<GetEdgesResult> MMGetEdgebandTypes(bool withInstances = false);
Add comment 22 Plus  
Add comment 23 Plus   /// <summary>
Add comment 11 24 /// Import material storage data
Add comment 12 25 /// </summary>
Add comment 13 26 /// <returns></returns>
Add comment 14 Minus   Task<ImportResult> ImportInventory(ImportInventoryRequest data);
Add comment 27 Plus   Task<ImportResult> ImportInventory(ImportInventoryRequest importInventoryRequest);
Add comment 15 28 }
Add comment 16 29 }
Add comment 17 30
MaterialsService.cs
/Client/HomagGroup.DigitalFactory.ApiGateway.Client/Services/MaterialsService.cs-3+31
/Client/HomagGroup.DigitalFactory.ApiGateway.Client/Services/MaterialsService.cs
Add comment 18 /// </summary>
Add comment 19 public MaterialsService(HttpClient client) : base(client) { }
Add comment 20
Add comment 21 Minus   /// <summary>
Add comment 22 Minus   /// Import material storage data
Add comment 23 Minus   /// </summary>
Add comment 21 Plus   /// <inheritdoc />
Add comment 22 Plus   public async Task<GetBoardsResult> MMGetBoardTypes(bool withInstances = false)
Add comment 23 Plus   {
Add comment 24 Plus   var request = new HttpRequestMessage { Method = HttpMethod.Get };
Add comment 25 Plus   var uri = $"{Prefix}materials/boards?withInstances={withInstances}";
Add comment 26 Plus   request.RequestUri = new Uri(uri, UriKind.Relative);
Add comment 27 Plus   request.Headers.AcceptLanguage.Clear();
Add comment 28 Plus   request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(CultureInfo.CurrentUICulture.Name));
Add comment 29 Plus   var response = await Client.SendAsync(request).ConfigureAwait(false);
Add comment 30 Plus   response.HandleDeprecatedMessages(request, ApiVersion, ThrowExceptionOnDeprecatedCalls, OnDeprecatedAction);
Add comment 31 Plus   response.EnsureSuccessStatusCodeWithDetails(request);
Add comment 32 Plus   var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
Add comment 33 Plus   return JsonConvert.DeserializeObject<GetBoardsResult>(content, SerializerSettings.Default);
Add comment 34 Plus   }
Add comment 35 Plus  
Add comment 36 Plus   /// <inheritdoc />
Add comment 37 Plus   public async Task<GetEdgesResult> MMGetEdgebandTypes(bool withInstances = false)
Add comment 38 Plus   {
Add comment 39 Plus   var request = new HttpRequestMessage { Method = HttpMethod.Get };
Add comment 40 Plus   var uri = $"{Prefix}materials/edges?withInstances={withInstances}";
Add comment 41 Plus   request.RequestUri = new Uri(uri, UriKind.Relative);
Add comment 42 Plus   request.Headers.AcceptLanguage.Clear();
Add comment 43 Plus   request.Headers.AcceptLanguage.Add(new StringWithQualityHeaderValue(CultureInfo.CurrentUICulture.Name));
Add comment 44 Plus   var response = await Client.SendAsync(request).ConfigureAwait(false);
Add comment 45 Plus   response.HandleDeprecatedMessages(request, ApiVersion, ThrowExceptionOnDeprecatedCalls, OnDeprecatedAction);
Add comment 46 Plus   response.EnsureSuccessStatusCodeWithDetails(request);
Add comment 47 Plus   var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
Add comment 48 Plus   return JsonConvert.DeserializeObject<GetEdgesResult>(content, SerializerSettings.Default);
Add comment 49 Plus   }
Add comment 50 Plus  
Add comment 51 Plus   /// <inheritdoc />
Add comment 24 52 public async Task<ImportResult> ImportInventory(ImportInventoryRequest importInventoryRequest)
Add comment 25 53 {
Add comment 26 54 if (importInventoryRequest == null)
README.md
/Documentation/README.md-249+253
/Documentation/README.md
Add comment 2
Add comment 3 ## Version history
Add comment 4
Add comment 5 Minus  Version | Date | Comment
Add comment 6 Minus  --------|----------|---------
Add comment 7 Minus  0.9 |21.01.2021| First Draft
Add comment 8 Minus  1.0 |26.01.2021| Added IDGetMachines and IDGetParameters<br>Route for ID/PMImport/GetImportState changed
Add comment 9 Minus  1.1 |29.01.2021| Updated import specification
Add comment 10 Minus  1.1a |04.02.2021| Import specification updated to v2.2
Add comment 11 Minus  1.2 |23.03.2021| Added "materialCode" to board results
Add comment 12 Minus  1.3 |25.03.2021| Optionally you can pass ´machineId´ and ´parameterId´ in the ´IDImport´ method
Add comment 13 Minus  1.4 |31.03.2021| Added OptimizationStart / GetOptimizationStatus
Add comment 14 Minus  1.5 |12.04.2021| Added GetOptimizationSolutions / IDGetOptimizationSolutionData
Add comment 15 Minus  1.6 |14.04.2021| Corrected route for IDStartOptimization / GetOptimizationStatus / GetOptimizationSolutions / IDGetOptimizationSolutionData
Add comment 16 Minus  1.7 |26.07.2021| Added board and edgeband instance data
Add comment 17 Minus  1.7.1 |19.08.2021| Added validation errors when starting ID optimization
Add comment 18 Minus  1.8 |12.10.2021| Added GetTokenInformation / added action groups
Add comment 19 Minus  1.9 |09.02.2022| Added PMGetImportTemplates / PMImportViaTemplate
Add comment 20 Minus  1.10 |10.03.2022| Added PMGetFeedbackWorkplaces / PMWorkplaceFeedback
Add comment 21 Minus  1.11 |07.04.2022| Added new image sizes from MaterialManager
Add comment 22 Minus  1.12 |31.08.2022| Added IDGetTemplates / IDImportViaTemplate
Add comment 23 Minus  1.13 |02.09.2022| Updated IDImportViaTemplate
Add comment 24 Minus  1.14 |12.10.2022| Added IDSendToPA
Add comment 25 Minus  1.15 |17.10.2022| Update IDGetOptimizationState
Add comment 26 Minus  1.16 |11.11.2022| Update IDGetTemplates
Add comment 27 Minus  1.17 |02.12.2022| Adding link to ImportSpecification.md
Add comment 28 Minus  1.18 |09.12.2022| Added IProductionOrderService
Add comment 5 Plus  | Version | Date | Comment |
Add comment 6 Plus  | ------- | ---------- | -------------------------------------------------------------------------------------------------------------------------- |
Add comment 7 Plus  | 0.9 | 21.01.2021 | First Draft |
Add comment 8 Plus  | 1.0 | 26.01.2021 | Added IDGetMachines and IDGetParameters<br>Route for ID/PMImport/GetImportState changed |
Add comment 9 Plus  | 1.1 | 29.01.2021 | Updated import specification |
Add comment 10 Plus  | 1.1a | 04.02.2021 | Import specification updated to v2.2 |
Add comment 11 Plus  | 1.2 | 23.03.2021 | Added "materialCode" to board results |
Add comment 12 Plus  | 1.3 | 25.03.2021 | Optionally you can pass ´machineId´ and ´parameterId´ in the ´IDImport´ method |
Add comment 13 Plus  | 1.4 | 31.03.2021 | Added OptimizationStart / GetOptimizationStatus |
Add comment 14 Plus  | 1.5 | 12.04.2021 | Added GetOptimizationSolutions / IDGetOptimizationSolutionData |
Add comment 15 Plus  | 1.6 | 14.04.2021 | Corrected route for IDStartOptimization / GetOptimizationStatus / GetOptimizationSolutions / IDGetOptimizationSolutionData |
Add comment 16 Plus  | 1.7 | 26.07.2021 | Added board and edgeband instance data |
Add comment 17 Plus  | 1.7.1 | 19.08.2021 | Added validation errors when starting ID optimization |
Add comment 18 Plus  | 1.8 | 12.10.2021 | Added GetTokenInformation / added action groups |
Add comment 19 Plus  | 1.9 | 09.02.2022 | Added PMGetImportTemplates / PMImportViaTemplate |
Add comment 20 Plus  | 1.10 | 10.03.2022 | Added PMGetFeedbackWorkplaces / PMWorkplaceFeedback |
Add comment 21 Plus  | 1.11 | 07.04.2022 | Added new image sizes from MaterialManager |
Add comment 22 Plus  | 1.12 | 31.08.2022 | Added IDGetTemplates / IDImportViaTemplate |
Add comment 23 Plus  | 1.13 | 02.09.2022 | Updated IDImportViaTemplate |
Add comment 24 Plus  | 1.14 | 12.10.2022 | Added IDSendToPA |
Add comment 25 Plus  | 1.15 | 17.10.2022 | Update IDGetOptimizationState |
Add comment 26 Plus  | 1.16 | 11.11.2022 | Update IDGetTemplates |
Add comment 27 Plus  | 1.17 | 02.12.2022 | Adding link to ImportSpecification.md |
Add comment 28 Plus  | 1.18 | 09.12.2022 | Added IProductionOrderService |
Add comment 29 Plus  | 2.0.19 | 08.01.2024 | Added GET Boards and GET Edges |
Add comment 29 30
Add comment 30 31 ## Introduction
Add comment 31 32
Add comment 34 35
Add comment 35 36 ### Terms
Add comment 36 37
Add comment 37 Minus  Term | Description
Add comment 38 Minus  --------------------------|--------------------------------------------------------------------------
Add comment 39 Minus  API gateway | A central gateway for communicating with HOMAG applications. It is deployed worldwide on different regions. The call will automatically be routed to the nearest endpoint / region.
Add comment 40 Minus  SAT | Subscription Access Token (similar to a PAT (Personal Access Token)).<br>It can be created in the tapio admin UI by the customer; also it can be revoked if needed.<br>This SAT must be created by the end customer and stored inside the partners application for this customer. It is then passed to the API gateway to authenticate the access.<br>In tapio this is also called `Authorization key`.
Add comment 41 Minus  PartnerApplicationFeature | For each HOMAG feature (like "Import into intelliDivide" or "Import into productionManager" or "Machine Feedback") a special "PartnerApplicationFeature" must be created for each partner and feature.<br>This "PartnerApplicationFeature" must then be bought by the end customer. This will then get assigned to the customers tapio subscription.<br>The customer must then create the SAT for this "PartnerApplicationFeature" and copy the generated string into the partners application for this specific HOMAG feature.
Add comment 42 Minus  HOMAG partner id | Each partner is assigned a unique partner id. This id must be passed in each call to the API gateway. It is mainly used to identify the calling application (it is more an information). The authentication is still done with the SAT.
Add comment 38 Plus  | Term | Description |
Add comment 39 Plus  | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
Add comment 40 Plus  | API gateway | A central gateway for communicating with HOMAG applications. It is deployed worldwide on different regions. The call will automatically be routed to the nearest endpoint / region. |
Add comment 41 Plus  | SAT | Subscription Access Token (similar to a PAT (Personal Access Token)).<br>It can be created in the tapio admin UI by the customer; also it can be revoked if needed.<br>This SAT must be created by the end customer and stored inside the partners application for this customer. It is then passed to the API gateway to authenticate the access.<br>In tapio this is also called `Authorization key`. |
Add comment 42 Plus  | PartnerApplicationFeature | For each HOMAG feature (like "Import into intelliDivide" or "Import into productionManager" or "Machine Feedback") a special "PartnerApplicationFeature" must be created for each partner and feature.<br>This "PartnerApplicationFeature" must then be bought by the end customer. This will then get assigned to the customers tapio subscription.<br>The customer must then create the SAT for this "PartnerApplicationFeature" and copy the generated string into the partners application for this specific HOMAG feature. |
Add comment 43 Plus  | HOMAG partner id | Each partner is assigned a unique partner id. This id must be passed in each call to the API gateway. It is mainly used to identify the calling application (it is more an information). The authentication is still done with the SAT. |
Add comment 43 44
Add comment 44 45 ### Partner / developer experience
Add comment 45 46
Add comment 165 166
Add comment 166 167 We support the following headers for tracing:
Add comment 167 168
Add comment 168 Minus  * `traceparent`
Add comment 169 Minus  * `tracestate`
Add comment 169 Plus  - `traceparent`
Add comment 170 Plus  - `tracestate`
Add comment 170 171
Add comment 171 172 For more information, please refer to the [W3C Trace Context - Level 1 specification](https://www.w3.org/TR/trace-context/).
Add comment 172 173
Add comment 178 179
Add comment 179 180 #### Host
Add comment 180 181
Add comment 181 Minus  * Production system = `https://api-gateway.homag.cloud`
Add comment 182 Minus  * Test system = `https://api-gateway-preview.homag.cloud`
Add comment 182 Plus  - Production system = `https://api-gateway.homag.cloud`
Add comment 183 Plus  - Test system = `https://api-gateway-preview.homag.cloud`
Add comment 183 184
Add comment 184 185 #### Path prefix
Add comment 185 186
Add comment 190 191 If an error occur, we normally return the problem details as a json object in the response. This is done for all HTTP status codes >= 400.
Add comment 191 192 The main properties are:
Add comment 192 193
Add comment 193 Minus  * title: A human readable title
Add comment 194 Minus  * detail: An explanation of the error
Add comment 195 Minus  * operationId: An reference to our internal logging system, so we can also find the corresponding request in order to dig down the problem
Add comment 194 Plus  - title: A human readable title
Add comment 195 Plus  - detail: An explanation of the error
Add comment 196 Plus  - operationId: An reference to our internal logging system, so we can also find the corresponding request in order to dig down the problem
Add comment 196 197
Add comment 197 198 For more information, please refer to [RFC7807](https://tools.ietf.org/html/rfc7807).
Add comment 198 199
Add comment 200 201
Add comment 201 202 ##### Common interface
Add comment 202 203
Add comment 203 Minus  Name | Method | API | Usage | Action group
Add comment 204 Minus  --------------------|--------|------------------------------------|-----------------------------------------------------------------------|--------------
Add comment 205 Minus  GetTokenInformation | POST | `_PREFIX_/common/tokenInformation` | Returns general information about the token and possible action groups|-
Add comment 204 Plus  | Name | Method | API | Usage | Action group |
Add comment 205 Plus  | ------------------- | ------ | ---------------------------------- | ---------------------------------------------------------------------- | ------------ |
Add comment 206 Plus  | GetTokenInformation | POST | `_PREFIX_/common/tokenInformation` | Returns general information about the token and possible action groups | - |
Add comment 206 207
Add comment 207 208 ###### Description of action groups
Add comment 208 209
Add comment 211 212
Add comment 212 213 Here is a list of all available action groups
Add comment 213 214
Add comment 214 Minus  Action group | Description
Add comment 215 Minus  --------------------------|-------------------------------------------------------------------------------
Add comment 216 Minus  CuttingOptimizationImport | Import into intelliDivide cutting (regardless of the license)
Add comment 217 Minus  NestingOptimizationImport | Import into intelliDivide nesting (regardless of the license)
Add comment 218 Minus  CuttingOptimization | Start and download of an optimization for cutting (regardless of the license)
Add comment 219 Minus  NestingOptimization | Start and download of an optimization for nesting (regardless of the license)
Add comment 220 Minus  ProductionImport | Import into productionManager (regardless of the license)
Add comment 221 Minus  QueryMaterials | Query materials
Add comment 222 Minus  MaterialStorageImport | Import materials into the materialManager
Add comment 215 Plus  | Action group | Description |
Add comment 216 Plus  | ------------------------- | ----------------------------------------------------------------------------- |
Add comment 217 Plus  | CuttingOptimizationImport | Import into intelliDivide cutting (regardless of the license) |
Add comment 218 Plus  | NestingOptimizationImport | Import into intelliDivide nesting (regardless of the license) |
Add comment 219 Plus  | CuttingOptimization | Start and download of an optimization for cutting (regardless of the license) |
Add comment 220 Plus  | NestingOptimization | Start and download of an optimization for nesting (regardless of the license) |
Add comment 221 Plus  | ProductionImport | Import into productionManager (regardless of the license) |
Add comment 222 Plus  | QueryMaterials | Query materials |
Add comment 223 Plus  | MaterialStorageImport | Import materials into the materialManager |
Add comment 223 224
Add comment 224 Minus  
Add comment 225 ##### intelliDivide interface
Add comment 226
Add comment 227 Minus  Name | Method | API | Usage | Action group
Add comment 228 Minus  ------------------------------|--------|---------------------------------------------------------------------------------------------------------------------------------|-------|--------------
Add comment 229 Minus  IDImport | POST | `_PREFIX_/optimizations/`⤶<br/>`import?machineId={machineId}`⤶<br/>`&parameterId={parameterId}` | Uploads a ZIP-compressed order and optionally pass a machineId and parameterId<br/>If the id is also provided in the ZIP file, we will overwrite these settings with the id provided in the url. | CuttingOptimizationImport / NestingOptimizationImport
Add comment 230 Minus  IDGetImportState | GET | `_PREFIX_/optimizations/`⤶<br/>`import/states/{correlationId}` | Return state of the imported order | CuttingOptimizationImport / NestingOptimizationImport
Add comment 231 Minus  IDGetMachines | GET | `_PREFIX_/optimizations/`⤶<br/>`machines` | Returns the list of available machines | CuttingOptimizationImport / NestingOptimizationImport
Add comment 232 Minus  IDGetParameters | GET | `_PREFIX_/optimizations/`⤶<br/>`parameters` | Returns the list of available parameters | CuttingOptimizationImport / NestingOptimizationImport
Add comment 233 Minus  [Deprecated]<br/>IDGetTemplates| GET | `_PREFIX_/optimizations/`⤶<br/>`templates` | Returns the list of available templates | CuttingOptimizationImport / NestingOptimizationImport
Add comment 234 Minus  IDGetTemplates | GET | `_PREFIX_/optimizations/`⤶<br/>`templates/{templateType}` | Returns the list of available templates | CuttingOptimizationImport / NestingOptimizationImport<br/>Allowed values are: "cutting" or "nesting".
Add comment 235 Minus  IDStartOptimization | POST | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/start` | Starts an optimization | OptExecCut / NestingOptimization
Add comment 236 Minus  IDGetOptimizationState | GET | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/state` | Returns the optimization status (progress state) and if it is finished|OptExecCut / NestingOptimization / CuttingOptimizationImport
Add comment 237 Minus  IDGetOptimizationSolutions | GET | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/solutions` | Returns the optimization solutions | OptExecCut / NestingOptimization
Add comment 238 Minus  IDGetOptimizationSolutionData | GET | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/solutions/`⤶<br/>`{solutionId}/data/{dataType}` | Returns the optimization solution data with the specified type<br/>Allowed values are:<br/>For cutting: saw / ptx<br/>For nesting: zip | OptExecCut / NestingOptimization
Add comment 239 Minus  IDImportViaTemplate | POST | `_PREFIX_/optimizations/`⤶<br/>`import/machine/{machineId}/`⤶<br/>`parameter/{parameterId}/`⤶<br/>`template/{templateId}{query}`| Creates a new optimization and imports information from csv or xls file with exiting template<br/>Allowed query parameters are:<br/>**jobName** for specifying a custom optimization job name<br/>**startOptimization** for also starting the job optimization | CuttingOptimizationImport
Add comment 240 Minus  IDSendToPA | POST | `_PREFIX_/optimizations/`⤶<br/>`import/template/{templateId}/`⤶<br/>`productionAssist{query}` | Sends and aleady optimized SAW file to productionAssist<br/>Allowed query parameters are:<br/>**jobName** for specifying a custom optimization job name | CuttingOptimizationImport
Add comment 227 Plus  | Name | Method | API | Usage | Action group |
Add comment 228 Plus  | ------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
Add comment 229 Plus  | IDImport | POST | `_PREFIX_/optimizations/`⤶<br/>`import?machineId={machineId}`⤶<br/>`&parameterId={parameterId}` | Uploads a ZIP-compressed order and optionally pass a machineId and parameterId<br/>If the id is also provided in the ZIP file, we will overwrite these settings with the id provided in the url. | CuttingOptimizationImport / NestingOptimizationImport |
Add comment 230 Plus  | IDGetImportState | GET | `_PREFIX_/optimizations/`⤶<br/>`import/states/{correlationId}` | Return state of the imported order | CuttingOptimizationImport / NestingOptimizationImport |
Add comment 231 Plus  | IDGetMachines | GET | `_PREFIX_/optimizations/`⤶<br/>`machines` | Returns the list of available machines | CuttingOptimizationImport / NestingOptimizationImport |
Add comment 232 Plus  | IDGetParameters | GET | `_PREFIX_/optimizations/`⤶<br/>`parameters` | Returns the list of available parameters | CuttingOptimizationImport / NestingOptimizationImport |
Add comment 233 Plus  | [Deprecated]<br/>IDGetTemplates | GET | `_PREFIX_/optimizations/`⤶<br/>`templates` | Returns the list of available templates | CuttingOptimizationImport / NestingOptimizationImport |
Add comment 234 Plus  | IDGetTemplates | GET | `_PREFIX_/optimizations/`⤶<br/>`templates/{templateType}` | Returns the list of available templates | CuttingOptimizationImport / NestingOptimizationImport<br/>Allowed values are: "cutting" or "nesting". |
Add comment 235 Plus  | IDStartOptimization | POST | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/start` | Starts an optimization | OptExecCut / NestingOptimization |
Add comment 236 Plus  | IDGetOptimizationState | GET | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/state` | Returns the optimization status (progress state) and if it is finished | OptExecCut / NestingOptimization / CuttingOptimizationImport |
Add comment 237 Plus  | IDGetOptimizationSolutions | GET | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/solutions` | Returns the optimization solutions | OptExecCut / NestingOptimization |
Add comment 238 Plus  | IDGetOptimizationSolutionData | GET | `_PREFIX_/optimizations/`⤶<br/>`jobs/{jobId}/solutions/`⤶<br/>`{solutionId}/data/{dataType}` | Returns the optimization solution data with the specified type<br/>Allowed values are:<br/>For cutting: saw / ptx<br/>For nesting: zip | OptExecCut / NestingOptimization |
Add comment 239 Plus  | IDImportViaTemplate | POST | `_PREFIX_/optimizations/`⤶<br/>`import/machine/{machineId}/`⤶<br/>`parameter/{parameterId}/`⤶<br/>`template/{templateId}{query}` | Creates a new optimization and imports information from csv or xls file with exiting template<br/>Allowed query parameters are:<br/>**jobName** for specifying a custom optimization job name<br/>**startOptimization** for also starting the job optimization | CuttingOptimizationImport |
Add comment 240 Plus  | IDSendToPA | POST | `_PREFIX_/optimizations/`⤶<br/>`import/template/{templateId}/`⤶<br/>`productionAssist{query}` | Sends and aleady optimized SAW file to productionAssist<br/>Allowed query parameters are:<br/>**jobName** for specifying a custom optimization job name | CuttingOptimizationImport |
Add comment 241
Add comment 242 ##### productionManager interface
Add comment 243
Add comment 244 Minus  Name |Method|API |Usage |Action group
Add comment 245 Minus  -----------------------|------|-----------------------------------------------------------------------------------------------|---------------------------------------------------------|------------------
Add comment 246 Minus  PMImport |POST | `_PREFIX_/productions/import` |Uploads a ZIP-compressed order |ProductionImport
Add comment 247 Minus  PMGetImportState |GET | `_PREFIX_/productions/import/`⤶<br/>`states/{correlationId}` |Return state of the imported order |ProductionImport
Add comment 248 Minus  PMGetImportTemplates |GET | `_PREFIX_/productions/import/`⤶<br>`templates` |Returns all available templates |ProductionImport
Add comment 249 Minus  PMImportViaTemplate |POST | `_PREFIX_/productions/import/`⤶<br>`templates/{templateId}/data`⤶<br>`?orderName={orderName}` |Creates a new customer order and imports production orders from file with existing template (templateId)<br>Import is performed synchronously |ProductionImport
Add comment 250 Minus  PMGetFeedbackWorkplaces|GET | `_PREFIX_/productions/feedback/`⤶<br>`workplaces` |Returns all available production feedback workplaces |ProductionFeedback
Add comment 251 Minus  PMWorkplaceFeedback |POST | `_PREFIX_/productions/feedback/`⤶<br>`workplaces/`⤶<br>`{workplaceId}` |Add completed workplace feedback for specific production entities|ProductionFeedback
Add comment 252 Minus  PMGetOrdersAsync |GET | `_PREFIX_/productions/orders` |Returns a list of orders that are not archived |ProductionImport
Add comment 253 Minus  PMGetOrderDetailsAsync |GET | `_PREFIX_/productions/orders{orderId}?withParts={withParts}` |Returns detailed information for an order |ProductionImport
Add comment 244 Plus  | Name | Method | API | Usage | Action group |
Add comment 245 Plus  | ----------------------- | ------ | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
Add comment 246 Plus  | PMImport | POST | `_PREFIX_/productions/import` | Uploads a ZIP-compressed order | ProductionImport |
Add comment 247 Plus  | PMGetImportState | GET | `_PREFIX_/productions/import/`⤶<br/>`states/{correlationId}` | Return state of the imported order | ProductionImport |
Add comment 248 Plus  | PMGetImportTemplates | GET | `_PREFIX_/productions/import/`⤶<br>`templates` | Returns all available templates | ProductionImport |
Add comment 249 Plus  | PMImportViaTemplate | POST | `_PREFIX_/productions/import/`⤶<br>`templates/{templateId}/data`⤶<br>`?orderName={orderName}` | Creates a new customer order and imports production orders from file with existing template (templateId)<br>Import is performed synchronously | ProductionImport |
Add comment 250 Plus  | PMGetFeedbackWorkplaces | GET | `_PREFIX_/productions/feedback/`⤶<br>`workplaces` | Returns all available production feedback workplaces | ProductionFeedback |
Add comment 251 Plus  | PMWorkplaceFeedback | POST | `_PREFIX_/productions/feedback/`⤶<br>`workplaces/`⤶<br>`{workplaceId}` | Add completed workplace feedback for specific production entities | ProductionFeedback |
Add comment 252 Plus  | PMGetOrdersAsync | GET | `_PREFIX_/productions/orders` | Returns a list of orders that are not archived | ProductionImport |
Add comment 253 Plus  | PMGetOrderDetailsAsync | GET | `_PREFIX_/productions/orders{orderId}?withParts={withParts}` | Returns detailed information for an order | ProductionImport |
Add comment 254
Add comment 255 ##### materialManager interface
Add comment 256
Add comment 257 Minus  Name |Method | API | Usage | Action group
Add comment 258 Minus  -----------------|-------|----------------------------------------|--------------------------------------------------------------|--------------
Add comment 259 Minus  MMGetBoards | GET | `_PREFIX_/materials/boards/` | Return the list of available boards incl. link to images |QueryMaterials
Add comment 260 Minus  MMGetEdges | GET | `_PREFIX_/materials/edges/` | Return the list of available edge bands incl. link to images |QueryMaterials
Add comment 261 Minus  ImportInventory | POST | `_PREFIX_/storage/imports/inventory/` | Import a set of materials into materialManager |MaterialStorageImport
Add comment 257 Plus  | Name | Method | API | Usage | Action group |
Add comment 258 Plus  | --------------- | ------ | ------------------------------------- | ------------------------------------------------------------ | --------------------- |
Add comment 259 Plus  | MMGetBoards | GET | `_PREFIX_/materials/boards/` | Return the list of available boards incl. link to images | QueryMaterials |
Add comment 260 Plus  | MMGetEdges | GET | `_PREFIX_/materials/edges/` | Return the list of available edge bands incl. link to images | QueryMaterials |
Add comment 261 Plus  | ImportInventory | POST | `_PREFIX_/storage/imports/inventory/` | Import a set of materials into materialManager | MaterialStorageImport |
Add comment 262
Add comment 263 #### Details
Add comment 264
Add comment 270
Add comment 271 ###### Output
Add comment 272
Add comment 273 Minus  Property | Description
Add comment 274 Minus  -----------------|-------------------------------------------------------------------
Add comment 275 Minus  subscriptionId | The id of the subscription
Add comment 276 Minus  subscriptionName | The name of the customer subscription
Add comment 277 Minus  applicationId | The guid of the application which the access token is assigned to
Add comment 278 Minus  applicationName | The name of the application which the access token is assigned to
Add comment 279 Minus  actionGroups | The list of allowed action groups
Add comment 273 Plus  | Property | Description |
Add comment 274 Plus  | ---------------- | ----------------------------------------------------------------- |
Add comment 275 Plus  | subscriptionId | The id of the subscription |
Add comment 276 Plus  | subscriptionName | The name of the customer subscription |
Add comment 277 Plus  | applicationId | The guid of the application which the access token is assigned to |
Add comment 278 Plus  | applicationName | The name of the application which the access token is assigned to |
Add comment 279 Plus  | actionGroups | The list of allowed action groups |
Add comment 280
Add comment 281 The list of action groups contains of:
Add comment 282
Add comment 283 Minus  Property | Description
Add comment 284 Minus  ------------|-------------
Add comment 285 Minus  actionGroup | This describes the API action group which can be used with this access token (e.g. customer has "intelliDivide cutting" and your token can access it => action group "OptImpCut" => so the import for cutting can be used); see also the interface overview for the required action groups for each API
Add comment 283 Plus  | Property | Description |
Add comment 284 Plus  | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
Add comment 285 Plus  | actionGroup | This describes the API action group which can be used with this access token (e.g. customer has "intelliDivide cutting" and your token can access it => action group "OptImpCut" => so the import for cutting can be used); see also the interface overview for the required action groups for each API |
Add comment 286
Add comment 287 ###### Example
Add comment 288
Add comment 326
Add comment 327 ###### Input
Add comment 328
Add comment 329 Minus  Parameter | Description
Add comment 330 Minus  ------------|-----------------------------------------------------------------------------------------------------------------------------
Add comment 331 Minus  machineId | Optionally a machineId; will overwrite the setting in the zip file.<br/>For available machine ids, see `IDGetMachines`
Add comment 332 Minus  parameterId | Optionally a parameterId; will overwrite the setting in the zip file.<br/>For available parameter ids, see `IDGetParameters`
Add comment 333 Minus  (body) | The content type must be `application/zip` and the data should be send as a binary stream.<br/>The contents of this zip file is described in the documentation of the "Documentation of import/export definition for HOMAG digital products".
Add comment 329 Plus  | Parameter | Description |
Add comment 330 Plus  | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
Add comment 331 Plus  | machineId | Optionally a machineId; will overwrite the setting in the zip file.<br/>For available machine ids, see `IDGetMachines` |
Add comment 332 Plus  | parameterId | Optionally a parameterId; will overwrite the setting in the zip file.<br/>For available parameter ids, see `IDGetParameters` |
Add comment 333 Plus  | (body) | The content type must be `application/zip` and the data should be send as a binary stream.<br/>The contents of this zip file is described in the documentation of the "Documentation of import/export definition for HOMAG digital products". |
Add comment 334
Add comment 335 ###### Output
Add comment 336
Add comment 337 Minus  Property | Description
Add comment 338 Minus  --------------|-------------
Add comment 339 Minus  correlationId | The correlation id which can be used to query the state of the import.<br/>The import is executed asynchronously, so you need to query the state after you started the import to see if the import was successful or not.
Add comment 337 Plus  | Property | Description |
Add comment 338 Plus  | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
Add comment 339 Plus  | correlationId | The correlation id which can be used to query the state of the import.<br/>The import is executed asynchronously, so you need to query the state after you started the import to see if the import was successful or not. |
Add comment 340
Add comment 341 ###### Example
Add comment 342
Add comment 358
Add comment 359 ```json
Add comment 360 {
Add comment 361 Minus   "correlationId": "EEF773F7-1140-44C7-8E74-FC3FAD1271D0",
Add comment 361 Plus   "correlationId": "EEF773F7-1140-44C7-8E74-FC3FAD1271D0"
Add comment 362 }
Add comment 363 ```
Add comment 364
Add comment 366
Add comment 367 ###### Input
Add comment 368
Add comment 369 Minus  Parameter | Description
Add comment 370 Minus  --------------|-----------------------------------------------
Add comment 371 Minus  correlationId | The correlation id from the call to `IDImport`
Add comment 369 Plus  | Parameter | Description |
Add comment 370 Plus  | ------------- | ---------------------------------------------- |
Add comment 371 Plus  | correlationId | The correlation id from the call to `IDImport` |
Add comment 372
Add comment 373 ###### Output
Add comment 374
Add comment 375 Minus  Property | Description
Add comment 376 Minus  ---------|------------------------------------------------------------------------------------------------------------------------
Add comment 377 Minus  state | The state of the import. Possible states are:<br/>`Uploaded / Queued / InProgress / Succeeded / Error`
Add comment 378 Minus  jobId | If the state is `Succeeded` we return the `jobId` which can be used to start the optimization
Add comment 379 Minus  link | If the state is `Succeeded` we return a link which can be used to directly navigate to the optimization in the frontend
Add comment 380 Minus  title | If the state is `Error` we return a localized error message
Add comment 381 Minus  detail | If the state is `Error` we return an internal error description; this is not localized and more for debugging purpose
Add comment 375 Plus  | Property | Description |
Add comment 376 Plus  | -------- | ----------------------------------------------------------------------------------------------------------------------- |
Add comment 377 Plus  | state | The state of the import. Possible states are:<br/>`Uploaded / Queued / InProgress / Succeeded / Error` |
Add comment 378 Plus  | jobId | If the state is `Succeeded` we return the `jobId` which can be used to start the optimization |
Add comment 379 Plus  | link | If the state is `Succeeded` we return a link which can be used to directly navigate to the optimization in the frontend |
Add comment 380 Plus  | title | If the state is `Error` we return a localized error message |
Add comment 381 Plus  | detail | If the state is `Error` we return an internal error description; this is not localized and more for debugging purpose |
Add comment 382
Add comment 383 ###### Example
Add comment 384
Add comment 427 ```json
Add comment 428 {
Add comment 429 "state": "Error",
Add comment 430 Minus   "title": "Parameter file not valid",
Add comment 431 Minus   "detail": "Wrong encoding found."
Add comment 430 Plus   "title": "Parameter file not valid",
Add comment 431 Plus   "detail": "Wrong encoding found."
Add comment 432 }
Add comment 433 ```
Add comment 434
Add comment 517 ]
Add comment 518 }
Add comment 519 ```
Add comment 520 Plus  
Add comment 520 521 ##### intelliDivide interface: IDGetTemplates
Add comment 521 522
Add comment 522 523 Request
Add comment 622 623
Add comment 623 624 ###### Output
Add comment 624 625
Add comment 625 Minus  Property | Description
Add comment 626 Minus  ----------------|------------------------------------------------------------------------------------------------------------------------------------------------------
Add comment 627 Minus  state | The state of the optimization. Possible states are:<br/>`Unknown / None / Started / Canceled / Faulted / Completed / Created / Archived / Transfered`
Add comment 628 Minus  startedAt | The RFC 3339 format of the date/time when the optimization was started
Add comment 629 Minus  statePercentage | The percentage of the optimization progress. This is a double number from 0 to 1
Add comment 630 Minus  error | If an error occurred this the the error text
Add comment 626 Plus  | Property | Description |
Add comment 627 Plus  | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
Add comment 628 Plus  | state | The state of the optimization. Possible states are:<br/>`Unknown / None / Started / Canceled / Faulted / Completed / Created / Archived / Transfered` |
Add comment 629 Plus  | startedAt | The RFC 3339 format of the date/time when the optimization was started |
Add comment 630 Plus  | statePercentage | The percentage of the optimization progress. This is a double number from 0 to 1 |
Add comment 631 Plus  | error | If an error occurred this the the error text |
Add comment 631 632
Add comment 632 633 ##### Example
Add comment 633 634
Add comment 789 790
Add comment 790 791 ###### Input
Add comment 791 792
Add comment 792 Minus  Parameter | Description
Add comment 793 Minus  -----------|--------------------------------------------------------------------------------------------------------------------
Add comment 794 Minus  jobId | The id of the optimization job
Add comment 795 Minus  solutionId | The id of the selected solution; you can only download data from ONE solution
Add comment 796 Minus  dataType | The type of data which you want to download. Supported types are:<br/>For cutting: saw/ptx/pdf<br/>For nesting: zip
Add comment 793 Plus  | Parameter | Description |
Add comment 794 Plus  | ---------- | ------------------------------------------------------------------------------------------------------------------- |
Add comment 795 Plus  | jobId | The id of the optimization job |
Add comment 796 Plus  | solutionId | The id of the selected solution; you can only download data from ONE solution |
Add comment 797 Plus  | dataType | The type of data which you want to download. Supported types are:<br/>For cutting: saw/ptx/pdf<br/>For nesting: zip |
Add comment 797 798
Add comment 798 799 ###### Output
Add comment 799 800
Add comment 800 801 The body contains the data of the requested data type. It will be returned in the following format:
Add comment 801 802
Add comment 802 Minus  Data type | Content-Type
Add comment 803 Minus  ----------|------------------------
Add comment 804 Minus  saw | text/saw; charset=utf-8
Add comment 805 Minus  ptx | text/ptx; charset=utf-8
Add comment 806 Minus  zip | application/zip
Add comment 803 Plus  | Data type | Content-Type |
Add comment 804 Plus  | --------- | ----------------------- |
Add comment 805 Plus  | saw | text/saw; charset=utf-8 |
Add comment 806 Plus  | ptx | text/ptx; charset=utf-8 |
Add comment 807 Plus  | zip | application/zip |
Add comment 807 808
Add comment 808 809 ###### Example
Add comment 809 810
Add comment 825 826
Add comment 826 827 ###### Input
Add comment 827 828
Add comment 828 Minus  Parameter | Description
Add comment 829 Minus  ------------------|---------------------------------------------------------------------------------------------------------------------------------------------
Add comment 830 Minus  machineId | The Id of the machine used to process the file import
Add comment 831 Minus  parameterId | The Id of the optimization parameter used to process the file import
Add comment 832 Minus  templateId | The Id of the template used to process the file import
Add comment 833 Minus  jobName | Optionally pass the name of the newly created customer optimization<br>If no jobName is passed, the file name will be used as customer optimization name
Add comment 834 Minus  startOptimization | Optionally pass a boolean to start the job optimization<br>If no startOptimization is passed or the value passed is false, the optimization will not start automatically
Add comment 829 Plus  | Parameter | Description |
Add comment 830 Plus  | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
Add comment 831 Plus  | machineId | The Id of the machine used to process the file import |
Add comment 832 Plus  | parameterId | The Id of the optimization parameter used to process the file import |
Add comment 833 Plus  | templateId | The Id of the template used to process the file import |
Add comment 834 Plus  | jobName | Optionally pass the name of the newly created customer optimization<br>If no jobName is passed, the file name will be used as customer optimization name |
Add comment 835 Plus  | startOptimization | Optionally pass a boolean to start the job optimization<br>If no startOptimization is passed or the value passed is false, the optimization will not start automatically |
Add comment 835 836
Add comment 836 837 ###### Example 1 (default)
Add comment 837 838
Add comment 864 865
Add comment 865 866 We currently return the following import states:
Add comment 866 867
Add comment 867 Minus  * Succeeded / Error
Add comment 868 Plus  - Succeeded / Error
Add comment 868 869
Add comment 869 870 Response (200 Ok)
Add comment 870 871
Add comment 888 889 ```json
Add comment 889 890 {
Add comment 890 891 "state": "Error",
Add comment 891 Minus   "errorText": "The data of the import file is in an unexpected format.",
Add comment 892 Minus   "errorDetails": "No header record was found.\r\nIReader state:\r\n ColumnCount: 0\r\n CurrentIndex: -1\r\n HeaderRecord:\r\n\r\nIParser state:\r\n ByteCount: 0\r\n CharCount: 26\r\n Row: 5\r\n RawRow: 5\r\n Count: 0\r\n RawRecord:\r\n\r\n"
Add comment 892 Plus   "errorText": "The data of the import file is in an unexpected format.",
Add comment 893 Plus   "errorDetails": "No header record was found.\r\nIReader state:\r\n ColumnCount: 0\r\n CurrentIndex: -1\r\n HeaderRecord:\r\n\r\nIParser state:\r\n ByteCount: 0\r\n CharCount: 26\r\n Row: 5\r\n RawRow: 5\r\n Count: 0\r\n RawRecord:\r\n\r\n"
Add comment 893 894 }
Add comment 894 895 ```
Add comment 895 896
Add comment 902 903 ```json
Add comment 903 904 {
Add comment 904 905 "state": "Error",
Add comment 905 Minus   "errorText": "No data could be identified for import. Please check the file and the import template"
Add comment 906 Plus   "errorText": "No data could be identified for import. Please check the file and the import template"
Add comment 906 907 }
Add comment 907 908 ```
Add comment 908 909
Add comment 918 919 Authorization: Basic NjU1MDFEMDktMkJCOS00M0MyLUI5RDMtMUZCMDAwNkE3NjlFOnNkMDlzaGR1Z985OGffc2ZkZ3pz32Y5ZGhzYWZkaHNmZN92ODlwYmZkOXZiaGFmZGd2
Add comment 919 920 tracestate: someinternaltracedata
Add comment 920 921 ```
Add comment 922 Plus  
Add comment 921 923 For content and response see above (Example 1).
Add comment 922 924
Add comment 923 925 ###### Examlpe 3 (with startOptimization)
Add comment 932 934 Authorization: Basic NjU1MDFEMDktMkJCOS00M0MyLUI5RDMtMUZCMDAwNkE3NjlFOnNkMDlzaGR1Z985OGffc2ZkZ3pz32Y5ZGhzYWZkaHNmZN92ODlwYmZkOXZiaGFmZGd2
Add comment 933 935 tracestate: someinternaltracedata
Add comment 934 936 ```
Add comment 937 Plus  
Add comment 935 938 For content and response see above (Example 1).
Add comment 936 939
Add comment 937 940 ##### intelliDivide interface: IDSendToPA
Add comment 938 941
Add comment 939 942 ###### Input
Add comment 940 943
Add comment 941 Minus  Parameter | Description
Add comment 942 Minus  ------------------|---------------------------------------------------------------------------------------------------------------------------------------------
Add comment 943 Minus  templateId | The Id of the template used to process the file import
Add comment 944 Minus  jobName | Optionally pass the name of the newly created customer optimization<br>If no jobName is passed, the file name will be used as customer optimization name
Add comment 944 Plus  | Parameter | Description |
Add comment 945 Plus  | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
Add comment 946 Plus  | templateId | The Id of the template used to process the file import |
Add comment 947 Plus  | jobName | Optionally pass the name of the newly created customer optimization<br>If no jobName is passed, the file name will be used as customer optimization name |
Add comment 945 948
Add comment 946 949 ###### Example 1 (default)
Add comment 947 950
Add comment 974 977
Add comment 975 978 We currently return the following import states:
Add comment 976 979
Add comment 977 Minus  * Succeeded / Error
Add comment 980 Plus  - Succeeded / Error
Add comment 978 981
Add comment 979 982 Response (200 Ok)
Add comment 980 983
Add comment 998 1001 ```json
Add comment 999 1002 {
Add comment 1000 1003 "state": "Error",
Add comment 1001 Minus   "errorText": "The data of the import file is in an unexpected format.",
Add comment 1002 Minus   "errorDetails": "No header record was found.\r\nIReader state:\r\n ColumnCount: 0\r\n CurrentIndex: -1\r\n HeaderRecord:\r\n\r\nIParser state:\r\n ByteCount: 0\r\n CharCount: 26\r\n Row: 5\r\n RawRow: 5\r\n Count: 0\r\n RawRecord:\r\n\r\n"
Add comment 1004 Plus   "errorText": "The data of the import file is in an unexpected format.",
Add comment 1005 Plus   "errorDetails": "No header record was found.\r\nIReader state:\r\n ColumnCount: 0\r\n CurrentIndex: -1\r\n HeaderRecord:\r\n\r\nIParser state:\r\n ByteCount: 0\r\n CharCount: 26\r\n Row: 5\r\n RawRow: 5\r\n Count: 0\r\n RawRecord:\r\n\r\n"
Add comment 1003 1006 }
Add comment 1004 1007 ```
Add comment 1005 1008
Add comment 1012 1015 ```json
Add comment 1013 1016 {
Add comment 1014 1017 "state": "Error",
Add comment 1015 Minus   "errorText": "No data could be identified for import. Please check the file and the import template"
Add comment 1018 Plus   "errorText": "No data could be identified for import. Please check the file and the import template"
Add comment 1016 1019 }
Add comment 1017 1020 ```
Add comment 1018 1021
Add comment 1028 1031 Authorization: Basic NjU1MDFEMDktMkJCOS00M0MyLUI5RDMtMUZCMDAwNkE3NjlFOnNkMDlzaGR1Z985OGffc2ZkZ3pz32Y5ZGhzYWZkaHNmZN92ODlwYmZkOXZiaGFmZGd2
Add comment 1029 1032 tracestate: someinternaltracedata
Add comment 1030 1033 ```
Add comment 1034 Plus  
Add comment 1031 1035 For content and response see above (Example 1).
Add comment 1032 1036
Add comment 1033 1037 ##### productionManager interface: PMImport (Example)
MMGetBoardsTests.cs
/Samples/csharp/HomagGroup.ApiGateway.Client.Samples/MMGetBoardsTests.cs
/Samples/csharp/HomagGroup.ApiGateway.Client.Samples/MMGetBoardsTests.cs
MMGetEdgesTests.cs
/Samples/csharp/HomagGroup.ApiGateway.Client.Samples/MMGetEdgesTests.cs
/Samples/csharp/HomagGroup.ApiGateway.Client.Samples/MMGetEdgesTests.cs
HISTORY.md
/HISTORY.md
/HISTORY.md