Artemis.Core Business API Documentation Version 1.84.0 21/03/23 Table of content 1. Configuration ................................................................................................................................. 11 1.1. Services ....................................................................................................................................... 11 Execution ....................................................................................................................................... 11 2. Requests ........................................................................................................................................ 12 2.1. Common Request Header .......................................................................................................... 12 2.2. Common Request Body .............................................................................................................. 13 Example ......................................................................................................................................... 13 2.3. Common Notification ................................................................................................................. 13 Example ......................................................................................................................................... 13 Error format................................................................................................................................... 15 3. Get started (Business use cases) ................................................................................................... 16 3.1. Get material(s) to load on mobile containers per yards ............................................................ 16 Example: retrieve load plan with all material(s) ........................................................................... 16 Example: retrieve all warehouse locations with associated bays ................................................. 18 3.2. Get material(s) to load on mobile containers per bays.............................................................. 19 3.3. Get list of bay(s) a mobile containers need to go ...................................................................... 19 4. APIs ................................................................................................................................................ 20 4.1. Material ...................................................................................................................................... 20 Properties ...................................................................................................................................... 20 Create (characterized or not) ........................................................................................................ 23 Update ........................................................................................................................................... 28 Partial update ................................................................................................................................ 32 Get by identifier ............................................................................................................................ 34 Get by custom filter ....................................................................................................................... 39 Aggregations.................................................................................................................................. 51 Request update definition ............................................................................................................. 54 Request update property .............................................................................................................. 56 Change location ............................................................................................................................. 58 Remove location ............................................................................................................................ 64 AddBlocking ................................................................................................................................... 66 Update Intrasite materials properties ........................................................................................... 68 Get materials per intrasite properties........................................................................................... 71 Get bays by context and number .................................................................................................. 80 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 2/722 Delete ............................................................................................................................................ 81 4.2. Location ...................................................................................................................................... 85 Create ............................................................................................................................................ 85 Update ........................................................................................................................................... 87 Partial Update................................................................................................................................ 89 Get by identifier ............................................................................................................................ 91 Get by custom filter ....................................................................................................................... 95 Get priorities per warehouse per destination ............................................................................. 103 Get occupancies .......................................................................................................................... 105 Request inventory ....................................................................................................................... 107 Inventory ..................................................................................................................................... 108 Request update by location ........................................................................................................ 110 Delete .......................................................................................................................................... 111 4.3. Location category ..................................................................................................................... 113 Create .......................................................................................................................................... 113 Update ......................................................................................................................................... 115 Partial Update.............................................................................................................................. 117 Get by identifier .......................................................................................................................... 119 Get by a custom filter .................................................................................................................. 120 Delete .......................................................................................................................................... 123 Delete associations ...................................................................................................................... 124 4.4. Scheduling module ................................................................................................................... 125 Scheduled transfers ..................................................................................................................... 125 Warehouse locations ................................................................................................................... 145 Links ............................................................................................................................................. 148 Material Pools ............................................................................................................................. 154 Composition ................................................................................................................................ 157 Availability ................................................................................................................................... 165 4.5. Bay ............................................................................................................................................ 171 Create .......................................................................................................................................... 171 Update ......................................................................................................................................... 173 Partial Update.............................................................................................................................. 175 Get by identifier .......................................................................................................................... 177 Get by custom filter ..................................................................................................................... 179 Transport modes allowed & maximum number of equipments................................................. 187 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 3/722 Delete .......................................................................................................................................... 188 4.6. Gate .......................................................................................................................................... 190 Create or update ......................................................................................................................... 190 Delete .......................................................................................................................................... 190 Get by identifier .......................................................................................................................... 191 Get by custom filter ..................................................................................................................... 192 4.7. Production Line ........................................................................................................................ 193 Save (add or update) ................................................................................................................... 193 Get by identifier .......................................................................................................................... 197 Get occupancies of input locations ............................................................................................. 199 Save Input Sequence ................................................................................................................... 201 Get Input Sequence ..................................................................................................................... 203 Remove input sequence .............................................................................................................. 205 Save Sequenced Material ............................................................................................................ 206 Remove Sequenced Material ...................................................................................................... 208 Delete .......................................................................................................................................... 209 4.8. Transport .................................................................................................................................. 210 Save for a loading site (Create / Update) .................................................................................... 210 Create Transport ......................................................................................................................... 234 Update Transport ........................................................................................................................ 238 Partial update .............................................................................................................................. 244 Get by identifier .......................................................................................................................... 249 Get by custom filter ..................................................................................................................... 253 Get by identifier of global transport (LI) ..................................................................................... 260 Get by identifier for a loading site (LI)......................................................................................... 266 Get by identifier for a loading site identifier (LI) ......................................................................... 272 Add "Local Transport ID" in Loading Instruction ......................................................................... 273 Lock/Unlock for a loading site ..................................................................................................... 275 Save list of material(s) impossible to load................................................................................... 278 Load Determination Process ....................................................................................................... 280 Select material(s) to load ............................................................................................................ 282 Filter material(s) to load .............................................................................................................. 284 Filter material(s) to load (Hook) .................................................................................................. 286 Prioritize material(s) to load........................................................................................................ 289 Prioritize material(s) to load (Hook) ............................................................................................ 291 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 4/722 Departure (Truck, Convoy or Vessel)........................................................................................... 294 Departure Allowed / Not Allowed ............................................................................................... 297 Refuse Loading ............................................................................................................................ 299 Request Departure ...................................................................................................................... 302 Request CIM ................................................................................................................................ 305 CIM Acceptance (CIMA)............................................................................................................... 307 Cancel CIM Request..................................................................................................................... 309 Safety Checks............................................................................................................................... 311 Request loading execution detail (LED)....................................................................................... 313 Change state of loading execution detail (LED) .......................................................................... 314 Remove one material impossible to load .................................................................................... 316 Finish loading a transport in progress ......................................................................................... 317 Close a transport confirmed for a loading site ............................................................................ 321 Cancel a transport confirmed for a loading site .......................................................................... 325 Delete for all loading sites ........................................................................................................... 327 4.9. Loading Instruction ................................................................................................................... 329 Create .......................................................................................................................................... 329 Update ......................................................................................................................................... 338 Partial update .............................................................................................................................. 349 Delete .......................................................................................................................................... 353 Get by custom filter ..................................................................................................................... 355 4.10. Unloading Instruction ............................................................................................................. 360 Create .......................................................................................................................................... 360 Update ......................................................................................................................................... 363 Partial update .............................................................................................................................. 367 Get by identifier .......................................................................................................................... 370 Get all .......................................................................................................................................... 373 Cancel .......................................................................................................................................... 375 Delete .......................................................................................................................................... 378 4.11. Truck ....................................................................................................................................... 380 Create Carrier .............................................................................................................................. 380 Create Semi Trailer Truck ............................................................................................................ 383 Update Truck ............................................................................................................................... 389 Update Semi Trailer Truck ........................................................................................................... 392 Get Truck ..................................................................................................................................... 395 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 5/722 Entry or Exit cross gate ................................................................................................................ 407 Truck arrived at bay ..................................................................................................................... 409 Truck arrival at a free Location .................................................................................................... 411 Truck departure from a bay ........................................................................................................ 413 Allocate Truck to Transport ......................................................................................................... 417 Deallocate Truck from Transport ................................................................................................ 432 Record a new weighing of a truck ............................................................................................... 434 Refuse Truck ................................................................................................................................ 437 Refuse Loading ............................................................................................................................ 440 Delete Truck ................................................................................................................................ 443 4.12. Wagon .................................................................................................................................... 445 Get Wagon................................................................................................................................... 445 Get Convoy by identifier.............................................................................................................. 450 Get Convoy by wagon number or name ..................................................................................... 463 Delete convoy by identifier or name ........................................................................................... 464 Delete convoy by wagon-number contained in this convoy ....................................................... 465 Wagon’s convoy arrival at bay .................................................................................................... 467 Wagon's convoy arrival at a free location ................................................................................... 472 Wagon's convoy departure from a bay ....................................................................................... 477 Update Wagon ............................................................................................................................ 481 Delete Wagon by wagon number................................................................................................ 483 Allocate Wagons to Transport ..................................................................................................... 484 Deallocate Wagons from Transport ............................................................................................ 499 Record a new weighing of a wagon............................................................................................. 502 Refuse Wagon ............................................................................................................................. 505 Entry or Exit cross gate ................................................................................................................ 508 Link wagon to equipment............................................................................................................ 510 Unlink wagon from equipment ................................................................................................... 512 4.13. Ship (vessel / barge) ............................................................................................................... 514 Create or update ship .................................................................................................................. 514 Get Ship by name ........................................................................................................................ 516 Allocate ship to Transport ........................................................................................................... 521 Ship arrival at bay ........................................................................................................................ 526 Ship arrival at free location ......................................................................................................... 528 Ship departure from bay ............................................................................................................. 530 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 6/722 Delete ship................................................................................................................................... 532 4.14. Mobile Container(s)................................................................................................................ 534 Get all from Transport ................................................................................................................. 534 Get by identifier, name, or linked equiment ............................................................................... 535 Get for any transport state.......................................................................................................... 539 Load a material ............................................................................................................................ 540 Get loaded material(s)................................................................................................................. 551 Save snapshot .............................................................................................................................. 553 Save load plan.............................................................................................................................. 564 Add material(s) to load in load plan ............................................................................................ 571 Add material(s) to check in load plan .......................................................................................... 575 Add material(s) to unload in load plan ........................................................................................ 578 Remove material(s) to load from load plan ................................................................................ 580 Remove material(s) to check from load plan .............................................................................. 583 Remove material(s) to unload from load plan ............................................................................ 585 Deallocate from Transport .......................................................................................................... 587 Save list of checked material(s) ................................................................................................... 592 Save one checked material.......................................................................................................... 596 Cancel (undo) list of checked material(s) .................................................................................... 600 Start / End loading of a mobile container ................................................................................... 603 Get Bays for MobileContainer ..................................................................................................... 607 Delete Load Plan.......................................................................................................................... 609 Link mobile container to equipment ........................................................................................... 610 Unlink mobile container from equipment................................................................................... 613 4.15. Vehicle Type(s) ....................................................................................................................... 615 Create .......................................................................................................................................... 615 Create or Update ......................................................................................................................... 619 Partial Update.............................................................................................................................. 622 Get by identifier .......................................................................................................................... 624 Get by custom filter ..................................................................................................................... 626 Delete .......................................................................................................................................... 630 4.16. Physical Vehicle Group ........................................................................................................... 631 Get by identifier or name ............................................................................................................ 631 Get by custom filter ..................................................................................................................... 636 Change location ........................................................................................................................... 646 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 7/722 4.17. Physical Vehicle ...................................................................................................................... 648 Get by identifier or name ............................................................................................................ 648 Get by custom filter ..................................................................................................................... 651 4.18. Notifications ........................................................................................................................... 655 Check Weight............................................................................................................................... 655 4.19. Mobile Container & Transport states ..................................................................................... 661 Examples...................................................................................................................................... 662 4.20. Anomalies ............................................................................................................................... 664 Get by id ...................................................................................................................................... 666 Get by entity name and identifier ............................................................................................... 668 Get by custom filter ..................................................................................................................... 670 Get multiple entities .................................................................................................................... 673 Custom Anomaly ......................................................................................................................... 676 VehicleRefused ............................................................................................................................ 679 OutOfStock .................................................................................................................................. 680 NoLoadPlanPossible .................................................................................................................... 681 UnexpectedMuLoaded ................................................................................................................ 682 MuWithProblemLoaded .............................................................................................................. 684 ImpossibleToLoad........................................................................................................................ 686 MuLoadedOnWrongPosition ....................................................................................................... 688 MuUnloadedFromClosedTransport............................................................................................. 692 MuNotLoaded ............................................................................................................................. 693 MuNotFinalChecked .................................................................................................................... 695 MuFinalCheckError ...................................................................................................................... 697 MuOnMultipleTransports............................................................................................................ 699 NotAccessibleMuDetected .......................................................................................................... 701 MamExceeded ............................................................................................................................. 701 GvwrExceeded ............................................................................................................................. 704 WeightIncoherence ..................................................................................................................... 706 SafetyCheckFailed ....................................................................................................................... 708 FailureToShowUp ........................................................................................................................ 709 DepartureWhileNotAllowed........................................................................................................ 710 LoadingRefused ........................................................................................................................... 711 MuNotReadyForShipment........................................................................................................... 712 MuBlockedForShipment .............................................................................................................. 713 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 8/722 5. Definitions ................................................................................................................................... 714 5.1. FreeLocation definition ............................................................................................................ 714 5.2. Equipment ................................................................................................................................ 715 5.3. Select Object............................................................................................................................. 715 5.4. Query Object ............................................................................................................................ 716 5.5. Paging Object............................................................................................................................ 722 5.6. OrderBy Object ......................................................................................................................... 722 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 9/722 Glossary Client Hook API Customer. Any system interacting with Artemis.Core Overridable behaviour Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 10/722 1. Configuration 1.1. Services Execution WeightCheckTolerance (double, optional) Default value: 0.0 When checking truck weight conformity is calculated (allocation, weighing, …), this field (in percent) is the permissible limit of variation allowed in DerogationMass or GVWR. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 11/722 2. Requests 2.1. Common Request Header Application-Name Scope Transport-Location-Id Initial-Request-Id Parent-Request-Id Notification-Awaiter string string string string string json Mandatory Mandatory Mandatory Optional Optional Optional 1.84.0 Application-Name Represents the name of the application which sends the request. This field is only used for internal purposes and debugging. Scope Scope is a deceptive to find the proper route when multiple services have registered the same route (ex: Create a location, …). If no route is found for the specified scope, the Bus service will select the default route (a route registered by a default Core service) You will also retrieve field “Scope” in all notifications to allow you to subscribe only to notifications with specific “Scope” value. Example of value: “LIE”, “Desvres”, … Transport-Location-Id It defines the site where vehicle is working on. A WarehouseLocation of type Site with the same identifier should exist in Artemis. For example, when you close or cancel a Transport, you specify the “Global Transport Identifier” in URL and “Transport-Location-Id” in Header of your request. Firstly, Artemis will retrieve the Transport with the “Global Transport Identifier”, then retrieve the proper LoadingInstruction that has LoadingTransportLocation Identifier equal to “Transport-Location-Id”. Initial-Request-Id Each request is saved on the bus database with a request id. When requests are chained. Initial-Request-Id can be set to be able to trace for each request what was the initial one. Parent-Request-Id Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 12/722 The id of the parent request. Notification-Awaiter 1.84.0 See Artemis Core Bus documentation. Example of usage : you want to allocate a truck directly after geting the 200 response on a the transport creation. You might end up with a 404 not found because the transport has not been propagated to the execuion service yet. By setting the Notification-Awaiter header you can specify that you want to wait for the ExecutionUpdated notification (meaning the transport has been updated in the execution context) before getting the reponse from the bus. Of course you still need to handle the 408 timeout error in case the notificaiton has not been received in a timely manner (network issue, execution service is down, ...). 2.2. Common Request Body { requestedBy (string), requestedAt (string), context (json, optional), … } Example { "requestedBy": "artemis@arcelormittal.com", "requestedAt": "2019-12-04T17:22:20.185Z", "context": {}, … } 2.3. Common Notification { resourceType (string), notificationType (string), sender (string), scope (string), data (json) } Example { "resourceType": "carrier", "notificationType": "Create", "sender": "Artemis.Core.Vehicle", "scope": null, "data": { … } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 13/722 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 14/722 Error format { uri (Uri), code (string), message (string), messageDetail (string, optional)), arguments [] (object, optional)), content ({ statusCode (HttpStatusCode), reasonPhrase (string), content (JToken), contentType (string) }, optional) } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 15/722 3. Get started (Business use cases) 3.1. Get material(s) to load on mobile containers per yards 0.0.41.0 Step 1: Retrieve load plan with all material(s) Firstly, we need to retrieve all material(s) expected in load plan on a specific mobile container. (ex: trailer, wagon, etc.) Get (see 0.562) Example: retrieve load plan with all material(s) GET /transport-api/v1/mobile-containers/name=MC123456 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 16/722 Result { "globalTransportIdentifier": "ID000000", "equipmentIdentifier": null, "identifier": "ID000000", "name": "trailerID000000", "loadPlan": { "toLoad": [ { "material": { "lmiContext": "111", "lmiNumber": "11", "materialGroup": "1111" }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" } }, { "material": { "lmiContext": "222", "lmiNumber": "22", "materialGroup": "2222" }, …. }, … ], "toCheck": [], "loaded": [], "impossibleToLoad": [] }, "loadedMaterialUnits": [] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 17/722 Step 2: Retrieve all warehouse locations with associated bays Foreach material(s), retrieve locations Example: retrieve all warehouse locations with associated bays { "includes":[ { "name":"location", "nodeType":"property" } ], "query":{ "methodName":"In", "arguments":[ { "value":[ { "lmiContext":"111", "lmiNumber":"11" }, { "lmiContext":"222", "lmiNumber":"22" }, … ], "nodeType":"constant" } ], "nodeType":"call" } } Result Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 18/722 { "TotalPages":1, "Items":[ { "lmiContext":"111", "lmiNumber":"11", "definitionLevel":"Partially", "productType":"Slab" …, "locatedOn":{ "type":"locateOnLocation", "label":"ID000001", "locationIdentifier":"ID000001" }, }, { "lmiContext":"222", "lmiNumber":"22", "definitionLevel":"Partially", "productType":"Slab" …, "locatedOn":{ "type":"locateOnLocation", "label":"ID000002", "locationIdentifier":"ID000002" }, } ], "HasPreviousPage":false, "HasNextPage":false, "PageIndex":0, "PageSize":20, "TotalCount":2 } Then, integrator does a distinct on the yard(s) inside the json result (ex: for screens, etc.) 3.2. Get material(s) to load on mobile containers per bays 0.0.58.0 see 0.562 Get Bays for MobileContainer 3.3. Get list of bay(s) a mobile containers need to go 0.0.58.0 see 0.562 Get Bays for MobileContainer Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 19/722 4. APIs 4.1. Material Properties ProductType : o Possible values : Coil, Slab, SlittedCoil & HotRolledCoil. o Use : Will be used to check the compatibility between DefinitionLevel o Possible values : Not : in case the material is created by Artemis itself as a result of locating an unknown material Partially : When not all material unit data is present. It is usually used when an other system than the MES provides some data before the MES knows the coil. Fully : When the material is known by the MES. o Use : As long as the level is not Fully an UpdateRequest notification will be generated when processing a material event. Dimensions o Units : All weights in kg Length in m Width and thickness in mm mesOwner o Possible Values : no restrictions o Use : This value can be used in case Artemis is connected to multiple MES systems. It is send in material notifications as value for owner. SpecificDimensions o Possible Values : this must be passed as a JSON key value pair. Any key can be used but only internalDiameter and externalDiameter are recognised by the system in order to be displayed in the Material Unit detail screen. o Use : there is no specific use for these dimensions. When provided the internaland externalDiameter value is shown in the material UI. PackingCode o Possible Values: any value or format can be given o Use : only used as information to shown in UI PackingNumber o Possible Values: any value or format can be given o Use : only used as information to shown in UI. This can be used when MES created a new identifier for material that has been packed. labelBarcode o Possible Values: any value or format can be given Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 20/722 o Use : only used as information to shown in UI. It can be used to pass to to local systems as a BC than must be scanned to identify the coil. ForeignID o Possible Values: any value or format can be given o Use : only used as information to shown in UI. It can be used in case material was provided by another mill to store the ID given by this mill productionStatus o Possible Values: WIP : material that has not yet reached it’s final stage. It is up to the integrator if packing is included as a stage. FIP : material that has reached it’s final stage o Use : Is of use for the intrasite component of Artemis with respect to material selection. readyForShipment o Use : in case of intrasite component or load determination for material selection blockedForShipment o Use : indicates if a material is not allowed to be shipped inTransit o Use : indicates if a material is actually in a warehouse or being transported. Can be used as a refinemend for material without known location. isSupply o Use : in case of intrasite component or load determination for material selection Axis o Possible Values: any value or format can be given o Use : Horizontal / Vertical unStackingCost o Possible Values: any value or format can be given o Use : in case of intrasite component or load determination for material selection nextProductionLine o Possible Values: any value or format can be given, it must however be aligned with the productionline referential o Use : in case of intrasite component or load determination for material selection nextProductionForeseenDate o Possible Values: datetime o Use : only used as information to shown in UI scheduledNextProduction o Possible Values: any value or format can be given o Use : ???? blockingCodes o Possible Values: any value or format can be given o Use : only used as information to shown in UI. Could be used to steer material selection later. boostStatus Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 21/722 o Possible Values: Boosted : the material must be shipped with urgenty UnBoosted : the material must no longer be shipped with urgenty o Use : In case of intrasite or load determination it can be used to give the material a higher priority for transport. boostDateTime o Possible Values: any value or format can be given o Use : used as information when the boost was done. orderNumber + orderItemId o Possible Values: any value or format can be given o Use : in case of intrasite component or load determination for material selection scaleUpMaterialUnitIdentifier o Possible Values: any value or format can be given o Use : This should be provided by the ScaleUp component and will be used for communication with Concerto scheduledAgreementId o Possible Values: any value or format can be given o Use : ??? shipmentInstructionId o Possible Values: any value or format can be given o Use : ??? intrasitePlanningState o Possible Values: ReadyToBeTransported : MU is ready for internal transport. PlannedOnInternalTransport : MU is planned on internaltransport o Use : Can be used in case other systems like MES or WMS are owner of rules that determine if internal transport is allowed on a coil. For example depending on blocking codes. parentMaterialID o Possible Values: any value or format can be given o Use : only used as information to shown in UI otmPackageItemId o Possible Values: format as agreed with OTM o Use : is used in communication with OTM (oracle transport management) to identify MU. otmSelectionCriterium o Possible Values: format as agreed with OTM o Use : is used in communication with OTM (oracle transport management) to select MU. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 22/722 Create (characterized or not) 0.0.44.0 Functional Need Allow client to create a material unit. This method is triggered by a MES message or by a local system if produced by a line. 0.0.40.0 From this version, it is possible to create a material not characterized (i.e. DefinitionLevel set to ‘Not’) with only 3 fields mandatory (LmiContext, LmiNumber and DefinitionLevel). The other fields are ignored. For material units characterized (‘Partially’ or ‘Fully’), the mandatory fields are taken into account. HTTP Request POST /material-api/v1/materialunits Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 23/722 Request Body Characterized material unit { … materialUnit : { lmiContext (string), lmiNumber (string), productType (string), definitionLevel (string) = [‘Partially’, ‘Fully’], netWeight (int), grossWeight (int, optional), length (int, optional), width (int), thickness (int, optional), productType (string), mesOwner (string, optional), mesLocation (string), 0.0.61.0 specificDimensions (json, optional), packingCode (string, optional), packingNumber (string, optional), labelBarcode (string, optional), foreignId (string, optional), productionStatus (string), readyForShipment (bool), blockedForShipment (bool), 0.0.62.0 inTransit (bool), isSupply (bool), axis (string, optional), unstackingCost (int, optional), nextProductionLine (string, optional), nextProductionForeseenDate (datetime, optional), scheduledNextProduction (datetime, optional), blockingCodes ([ (string), … ], optional), metadata (json, optional), boostStatus (string, optional), boostDateTime (datetime), orderNumber (string), scaleUpMaterialUnitIdentifier (string, optional), orderItemId (string), scheduledAgreementId (string), shipmentInstructionId (string), intrasitePlanningState (string), parentMaterialId (string), otmPackageItemId (string, optional), 0.0.50.0 otmSelectionCriterium (string, optional), 0.0.56.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 24/722 Uncharacterized material unit { … materialUnit : { lmiContext (string), lmiNumber (string), definitionLevel (string) = [‘Not’] } Responses Response 201 (Created) Response 409 (Conflict) MaterialUnit with context '{0}' and number '{1}' already exists Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 25/722 Example Characterized material unit { …, "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "definitionLevel": "Partially", "netWeight": 0, "grossWeight": 0, "length": 0, "width": 0, "thickness": 0, "productType": "string", "mesOwner": "string", "specificDimensions": {}, "packingCode": "string", "packingNumber": "string", "labelBarcode": "string", "foreignId": "string", "productionStatus": "string", "readyForShipment": true, "blockedForShipment": false, "inTransit": true, "isSupply": true, "axis": "string", "unstackingCost": 0, "nextProductionLine": "string", "nextProductionForeseenDate": "2020-10-14T13:21:39.303Z", "scheduledNextProduction": "2020-10-14T13:21:39.303Z", "blockingCodes": [ "string" ], "metadata": {}, "boostStatus": "string", "boostDateTime": "2020-10-14T13:21:39.303Z", "orderNumber": "string", "scaleUpMaterialUnitIdentifier": "string", "orderItemId": "string", "scheduledAgreementId": "string", "shipmentInstructionId": "string", "intrasitePlanningState": "string", "parentMaterialId": "string", "otmPackageItemId" : "string" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 26/722 Uncharacterized material unit { …, "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "definitionLevel": "Not" } Notification(s) { "notificationType": "Create" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "definitionLevel": "not | partially", "owner": "owner", "on": null, "status": "Blocked" 0.0.58.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 27/722 Update 0.0.44.0 HTTP Request PUT /material-api/v1/materialunits/context={context}&number={number} Request Parameters context (string) number (string) lmi context lmi number Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 28/722 Request Body { … materialUnit : { productType (string), definitionLevel (string) = [‘Not’, ‘Partially’, ‘Fully’], netWeight (int), grossWeight (int, optional), length (int, optional), width (int), thickness (int, optional), productType (string), mesOwner (string, optional), specificDimensions (json, optional), packingCode (string, optional), packingNumber (string, optional), labelBarcode (string, optional), foreignId (string, optional), productionStatus (string), readyForShipment (bool), blockedForShipment (bool), 0.0.62.0 inTransit (bool), isSupply (bool), axis (string, optional), unstackingCost (int, optional), nextProductionLine (string, optional), nextProductionForeseenDate (datetime, optional), scheduledNextProduction (datetime, optional), blockingCodes ([ (string), … ], optional), metadata (json, optional), boostStatus (string, optional), boostDateTime (datetime), orderNumber (string), scaleUpMaterialUnitIdentifier (string), orderItemId (string), scheduledAgreementId (string), shipmentInstructionId (string), intrasitePlanningState (string), parentMaterialId (string), otmPackageItemId (string, optional)), 0.0.50.0 otmSelectionCriterium (string, optional), 0.0.56.0 } } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 29/722 2 requestedAt must be newer or equals to the previous definition (DefinitionDate of Material unit) Response 404 (NotFound) Example { …, "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "definitionLevel": "Not", "netWeight": 0, "grossWeight": 0, "length": 0, "width": 0, "thickness": 0, "productType": "string", "mesOwner": "string", "specificDimensions": {}, "packingCode": "string", "packingNumber": "string", "labelBarcode": "string", "foreignId": "string", "productionStatus": "string", "readyForShipment": true, "blockedForShipment": false, "inTransit": true, "isSupply": true, "axis": "string", "unstackingCost": 0, "nextProductionLine": "string", "nextProductionForeseenDate": "2020-10-14T13:21:39.303Z", "scheduledNextProduction": "2020-10-14T13:21:39.303Z", "blockingCodes": [ "string" ], "metadata": {}, "boostStatus": "string", "boostDateTime": "2020-10-14T13:21:39.303Z", "orderNumber": "string", "scaleUpMaterialUnitIdentifier": "string", "orderItemId": "string", "scheduledAgreementId": "string", "shipmentInstructionId": "string", "intrasitePlanningState": "string", "parentMaterialId": "string", "otmPackageItemId" : "string" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 30/722 Notification(s) { "notificationType": "Update" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "definitionLevel": "partially", "owner": "owner", "status": "Blocked", 0.0.58.0 "on": null, "previousData": { "grossWeight": 220, "netWeight": 22 }, "grossWeight": 5000, "netWeight": 3000 } } Anomaly See 0.562 MuWithProblemLoaded - If Material is blocked: “AnomalyDetected” - Else: “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 31/722 Partial update 0.0.44.0 Allow client to update material unit information. This method is triggered by a MES message or by a local system if produced by a line. PATCH /material-api/v1/materialunits/context={context}&number={number} Request Parameters context (string) number (string) lmi context lmi number Request Body { … materialunit: [ { value (Json), path (string), op (string) }, … ] } Responses Response 204 (No Content) Response 400 (BadRequest) 2 requestedAt must be newer or equals to the previous definition (DefinitionDate of Material unit) Response 404 (NotFound) Example { … "materialunit": [ { "value": “newOwner”, "path": "owner", "op": "replace", }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 32/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "context": { "Date": "2020-10-14T17:00:30.7634987+02:00" }, "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "grossWeight": 220, "definitionLevel": "partially", "owner": "newOwner", "on": null, "scaleUpMaterialUnitIdentifier": "scaleUpMaterialUnitIdentifier", 0.1.84.0 "packingNumber": "packingNumber", 0.1.84.0 "foreignID": "foreignId", 0.1.84.0 "netWeight": 22 "otmPackageItemId": null, "status": "Blocked", 0.0.58.0 "blockingCodes": [] "previousData": { "owner": "owner" }, } } Anomaly See 0.562 MuWithProblemLoaded - If Material is blocked: “AnomalyDetected” - Else: “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 33/722 Get by identifier 0.0.44.0 Retrieve a material by identifier HTTP Request GET /material-api/v1/materialunits/context={context}&number={number} Request Parameters context (string) number (string) lmi context lmi number Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 34/722 { … lmiContext (string), lmiNumber (string), productType (string), definitionLevel (string) = [‘Not’, ‘Partially’, ‘Fully’], netWeight (int), grossWeight (int), length (int), width (int), thickness (int), productType (string), mesOwner (string, optional), specificDimensions (json, optional), packingCode (string, optional), packingNumber (string, optional), labelBarcode (string, optional), foreignId (string, optional), productionStatus (string), readyForShipment (bool), blockedForShipment (bool), 0.0.62.0 inTransit (bool), isSupply (bool), axis (string, optional), unstackingCost (int, optional), nextProductionLine (string, optional), nextProductionForeseenDate (datetime, optional), scheduledNextProduction (datetime, optional), blockingCodes ([ (string), … ], optional), metadata (json, optional), boostStatus (string, optional), boostDateTime (datetime), orderNumber (string), scaleUpMaterialUnitIdentifier (string), orderItemId (string), scheduledAgreementId (string), shipmentInstructionId (string), intrasitePlanningState (string), parentMaterialId (string), creationDate (datetime), lastModificationDate (datetime), definitionDate (datetime), mesLocation (string), 0.0.61.0 locatedOn { type (string) = ‘LocateOnLocation’, label (string), storageLocation (string), mesLocation (string), 0.0.61.0 level (int), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 35/722 locationIdentifier (string), accessibleBays { }, parents ([ label (string), identifier (string), state (string) = [‘Open’, ‘Closed’], ]), or type (string) = ‘LocationOnPhysicalVehicle’ identifier (string), actualDepartureCompleted (bool), 1.84.0 (means the vehicle is fully executed and left) }, locationMetadata (json, optional), locationChangedBy (string, optional), locationChangedAt (datetime, optional), locationChangedType (string, optional), markedForDeletion (bool), availableOnLocation (bool), availableOnBay (bool), status (string, optional), 0.0.58.0 netWeight (int, optional), grossWeight (int, optional), length (double, optional), width (double, optional), thickness (double, optional), productType (string, optional), transports ([ identifier (string), vehicleName (string, optional), linkType (string) = [‘LoadingInstructionMustLoad’, ‘LoadPlanToLoad’, ‘Loaded’], type (string) = [‘Shipment’, ‘Intrasite’] 0.0.58.0 ]), 0.0.58.0 } Response 404 (NotFound) Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 36/722 { "mesOwner": "owner", "specificDimensions": {}, "packingCode": null, "packingNumber": null, "labelBarcode": null, "foreignId": null, "productionStatus": "WIP", "readyForShipment": false, "inTransit": false, "isSupply": false, "axis": null, "unstackingCost": null, "nextProductionLine": null, "nextProductionForeseenDate": null, "scheduledNextProduction": null, "blockingCodes": [ "block1", "block2" ], "metadata": { "Prop1": "2020-10-14T15:21:38.5983086+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "boostStatus": null, "boostDateTime": null, "orderNumber": null, "scaleUpMaterialUnitIdentifier": null, "orderItemId": null, "scheduledAgreementId": null, "shipmentInstructionId": null, "intrasitePlanningState": null, "parentMaterialId": null, "lmiContext": "LIE", "lmiNumber": "ID000000", "creationDate": "2020-10-15T11:14:56.7376559+00:00", "lastModificationDate": "2020-10-15T11:14:56.7566605+00:00", "definitionDate": "2020-10-14T15:21:39.2313086+02:00", "definitionLevel": "Not", "locatedOn": null, "locationMetadata": {}, "locationChangedBy": null, "locationChangedAt": null, "locationChangeType": null, "markedForDeletion": false, "availableOnLocation": false, "availableOnBay": false, "transports": [], "status": "Blocked", "netWeight": null, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 37/722 "grossWeight": null, "length": null, "width": null, "thickness": null, "productType": "Slab" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 38/722 Get by custom filter 0.0.44.0 Retrieve a material by query. HTTP Request POST /material-api/v1/materialunits/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Include(s) By default, all MaterialUnit(s) are retrieved without the property ‘Location’ (useful when retrieving > 1.000 items). If you want to retrieve ‘Location’ property, you need to add ‘Includes’ in the query (see example below) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 39/722 { "query": { "Operator": "equal", "Left": { "Name": "Value", "Left": { "Name": "Thickness", "nodeType": "property" }, "nodeType": "property" }, "Right": { "Value": 235000.0, "Type": "Double", "nodeType": "constant" }, "nodeType": "binary" }, "includes": [ { "nodeType": "property", "name": "location" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 40/722 Query in list 0.0.40.0 In order to select material units based on a known list of materials, a “call” (see OrderBy Object (see 5.6)) operator has been added allowing to retrieve all material units in a given list. The contents of the value node are not fixed, and can be any property of a material (e.g. lmiNumber, lmiContext, ProductType, …) Examples Get all MaterialUnit(s) with location which have ‘LmiContext’ equal to ‘LIE’ and ‘LmiNumber’ equal to ‘ID000000’, or ‘LmiNumber’ equal to ‘ID000001’: { "query": { "nodeType": "call", "methodName": "In", "arguments": [ { "nodeType": "constant", "value": [ { "lmiNumber": "ID000000", "lmiContext": "LIE" }, { "lmiNumber": "ID000001", } ] } ] }, "select": null, "paging": null, "orderBy": null, "includes": [ { "nodeType": "property", "name": "location" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 41/722 Get all MaterialUnit(s) with ‘Priority’ equal to 99: { "query": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "priority", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } }, "right": { "nodeType": "constant", "value": "99" } } } Get all MaterialUnit(s) and show only ‘lmiNumber’ and ‘Priority’ properties { "select": [ { "fieldName": "lmiNumber", "node": { "nodeType": "property", "name": "lmiNumber" } }, { "fieldName": "priority", "node": { "nodeType": "property", "name": "priority", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } } } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 42/722 Get all MaterialUnit(s) with ‘Priority’ equal to 99 and ‘nextWarehouseLocationIdentifier’ equal to ‘WL-B’: { "query": { "nodeType": "binary", "operator": "and", "left": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "priority", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } }, "right": { "nodeType": "constant", "value": "99" } }, "right": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "nextWarehouseLocationIdentifier", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } }, "right": { "nodeType": "constant", "value": "WL-B" } } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 43/722 Get all material(s) on a specific warehouse location { "query":{ "nodeType": "call", "methodName": "InLocation", "arguments": [ { "nodeType": "constant", "value": "ID000000" // location identifier } ] } } Get all material(s) on a specific vehicle { "query":{ "nodeType": "call", "methodName": "InLocation", "arguments": [ { "nodeType": "constant", "value": "ID000000" // vehicle identifier } ] } } Get all material(s) with one or more blocking code { "query":{ "nodeType": "call", "methodName": "WithBlockingCodes" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 44/722 Get all material(s) with one or more of a set of blocking codes { "query":{ "nodeType": "call", "methodName": "WithBlockingCodes", "arguments": [ { "nodeType": "constant", "value": "BLOCKINGCODE1" }, { "nodeType": "constant", "value": "BLOCKINGCODE2" }, … ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 45/722 Get all MaterialUnit(s) with subkey ‘prop3’ and value ‘2018’ on property ‘metadata’ { "query":{ "nodeType":"binary", "operator":"equal", "left":{ "nodeType":"call", "methodName":"JsonValue", "arguments":[ { "value":"Prop3", "nodeType":"constant" } ], "left":{ "nodeType":"property", "name":"metadata" } }, "right":{ "nodeType":"constant", "value":"2018" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 46/722 Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 47/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { lmiContext (string), lmiNumber (string), productType (string), definitionLevel (string) = [‘Not’, ‘Partially’, ‘Fully’], netWeight (int), grossWeight (int), length (int), width (int), thickness (int), productType (string), mesOwner (string, optional), specificDimensions (json, optional), packingCode (string, optional), packingNumber (string, optional), labelBarcode (string, optional), foreignId (string, optional), productionStatus (string), readyForShipment (bool), blockedForShipment (bool), inTransit (bool), isSupply (bool), axis (string, optional), unstackingCost (int, optional), nextProductionLine (string, optional), nextProductionForeseenDate (datetime, optional), scheduledNextProduction (datetime, optional), blockingCodes ([ (string), … ], optional), metadata (json, optional), boostStatus (string, optional), boostDateTime (datetime), orderNumber (string), scaleUpMaterialUnitIdentifier (string), orderItemId (string), scheduledAgreementId (string), shipmentInstructionId (string), intrasitePlanningState (string), parentMaterialId (string), creationDate (datetime), lastModificationDate (datetime), definitionDate (datetime), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 48/722 mesLocation (string), 0.0.61.0 locatedOn { type (string) = ‘LocateOnLocation’, label (string), storageLocation (string), mesLocation (string), 0.0.61.0 level (int), locationIdentifier (string), accessibleBays { }, parents ([ label (string), identifier (string), state (string) = [‘Open’, ‘Closed’], ]), or type (string) = ‘LocationOnPhysicalVehicle’ identifier (string) }, locationMetadata (json, optional), locationChangedBy (string, optional), locationChangedAt (datetime, optional), locationChangedType (string, optional), markedForDeletion (bool), availableOnLocation (bool), availableOnBay (bool), status (string, optional), netWeight (int, optional), grossWeight (int, optional), length (double, optional), width (double, optional), thickness (double, optional), productType (string, optional) }, … ] } Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 49/722 { "totalPages": 1, "items": [ { "mesOwner": "owner", "specificDimensions": {}, "packingCode": null, "packingNumber": null, "labelBarcode": null, "foreignId": null, "productionStatus": "WIP", "readyForShipment": false, "inTransit": false, "isSupply": false, "axis": null, "unstackingCost": null, "nextProductionLine": null, "nextProductionForeseenDate": null, "scheduledNextProduction": null, "blockingCodes": [ "block1", "block2" ], "metadata": { "Prop1": "2020-10-15T23:31:24.7696254+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "boostStatus": null, "boostDateTime": null, "orderNumber": null, "scaleUpMaterialUnitIdentifier": null, "orderItemId": null, "scheduledAgreementId": null, "shipmentInstructionId": null, "intrasitePlanningState": null, "parentMaterialId": null, "lmiContext": "LIE", "lmiNumber": "ID000000", "creationDate": "2020-10-15T22:19:02.7020015+00:00", "lastModificationDate": "2020-10-15T22:19:02.7120028+00:00", "definitionDate": "2020-10-15T23:31:25.2816232+02:00", "definitionLevel": "Not", "locatedOn": null, "locationMetadata": {}, "locationChangedBy": null, "locationChangedAt": null, "locationChangeType": null, "markedForDeletion": false, "availableOnLocation": false, "availableOnBay": false, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 50/722 "transports": [], "status": "Blocked", "netWeight": null, "grossWeight": null, "length": null, "width": null, "thickness": null, "productType": "Slab" } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Aggregations 0.0.60.0 Aggregation requests can be sent to this endpoint to Sum, Average, Count, Min, Max, Any fields of a material unit. “aggregateOperation” is a mandatory property defining the name of the aggregation. Can be Sum, Average, Count, Min, Max, Any… “aggregateExpression” is a mandatory property where an expression object can define the expression to be aggregated. “where” property can be set with an expression object to filter the number of records where aggregation is applied. “orderBy” can improve performance depending of the aggregation Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 51/722 HTTP Request POST /material-api/v1/materialunits/aggregations Request Body { aggregateOperation (string) = [‘Average’, ‘Count’, ‘Min’, ‘Max’, Any’], aggregateExpression { … }, where { … } (optional), orderBy { … } (optional) } Examples Get total weight of materials in location “ID01” { "aggregateOperation": "Sum", "aggregateExpression": { "nodeType": "property", "name": "grossWeight", }, "where": { "nodeType": "call", "methodName": "InLocation", "arguments": [ { "nodeType": "constant", "value": "ID01" } ] } } Responses Response 200 (Ok) “Value” type depends of the aggregation. { value (any) } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 52/722 Example { “value”:660 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 53/722 Request update definition 0.0.44.0 Allow client to request an up to date material unit definition Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 54/722 HTTP Request POST /material-api/v1/materialunits/context={context}&number={number}/updaterequest Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Notification(s) { "notificationType": "UpdateRequested" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2021-10-11T13:03:12.549632+00:00", "requestedBy": "owner" }, "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "definitionLevel": "partially", "owner": "owner", "status": "Blocked", "on": null, "grossWeight": 220, "netWeight": 22 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 55/722 Request update property 0.0.44.0 Allow client to request an update to a certain property in the MES. HTTP Request POST /material-api/v1/materialunits/context={context}&number={number}/request-updateproperty Request Body { …, propertyName (string), oldValue (dynamic: json, string, int, …), newValue (dynamic: json, string, int, …) } Responses Response 200 (Ok) Response 404 (NotFound) Example { …, "propertyName": "netWeight", "oldValue": 50, "newValue": 60 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 56/722 Notification(s) { "notificationType": "UpdateRequested" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "originalRequestInfo": { "requestedAt": "2021-10-11T13:03:12.549632+00:00", "requestedBy": "owner" }, "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "context": { "key": "value" }, "grossWeight": 220, "definitionLevel": "partially", "owner": "owner", "status": "Blocked", "on": null, "netWeight": 22, "propertyName": "netWeight", "oldValue": 50, "newValue": 60 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 57/722 Change location 0.0.44.0 Allow client to change the location of a material unit. If material unit does not exist, a new material unit is created with definitionLevel equal to ‘Not’. HTTP Request PUT /material-api/v1/materialunits/context={context}&number={number}/location Request Body { …, type (string) = [‘Manual’, ‘Automatic’], metadata (json, optional), on { type (string) = [‘locateOnLocation’], locationIdentifier (string), storageLocation (string), level (int), mesLocation (string) 0.0.61.0 } } Responses Response 200 (Ok) Response 204 (NoContent) The material was already present on the requested location Response 403 (Forbidden) 5 Hook returned an error { “reasonCode”: “…”, “reasonLabel”: “…” } 4 Location '{0}' not found 8 Cannot change location because existing location is more recent than requested one 6 Locate material unit on a physical vehicle is forbidden 401 Operation not allowed. MobileContainer is cancelled. 0.0.49.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 58/722 Example { …, "type": "automatic", "metadata": { "key": "value" }, "on": { "type": "locateOnLocation", "locationIdentifier": "ID000000", "storageLocation": “ST000000”, "level": 3 } } Notification(s) If definitionLevel of material unit is not equal to ‘Fully’, a notification ‘UpdateRequested’ is sent. { "ResourceType": "materialUnit", "NotificationType": "UpdateRequested", "Sender": "Artemis.Material", "Scope": null, "Data": { "context": { "key": "value" }, "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "definitionLevel": "partially", "owner": "owner", "on": null, "propertyName": "Location.Identifier", "grossWeight": 220, "netWeight": 22, "oldValue": null, "newValue": "ID000000", "otmPackageItemId": null, "blockingCodes": [ "block1", "block2" ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 59/722 { "notificationType": "Unloaded" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "unloadingDatetime": "2020-05-05T09:25:46.711Z", "targetLocation": "site", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "wagonName1", 0.0.54.0 "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 60/722 { "notificationType": "LocationChanged" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "context": { "key": "value" }, "grossWeight": 220, "definitionLevel": "fully", "owner": "owner", "status": "Blocked", 0.0.58.0 "on": { "type": "locateOnLocation", "label": "ID000000", "locationIdentifier": "ID000000", "accessibleBays": [], "parents": [], "mesLocation": null, 0.0.61.0 "storageLocation": "ST000000", "level": 3 }, "netWeight": 22, "previousData": { "on": null }, "type": "automatic", "metadata": { "key": "value" } } } Anomaly See UnexpectedMuLoaded (AnomalyFixed) See MuLoadedOnWrongPosition (AnomalyFixed) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 61/722 Change location hook 0.0.44.0 HTTP Request POST /material-api/v1/materialunits/locationCheck Request Body { …, lmiContext (string), lmiNumber (string), type (string) = [‘Manual’, ‘Automatic’], metadata (json, optional), on { type (string) = [‘locateOnLocation’], locationIdentifier (string), storageLocation (string), level (int) } } Example { …, "lmiContext": "LIE", "lmiNumber": "ID000000", "type": "automatic", "metadata": { "key": "value" }, "on": { "type": "locateOnLocation", "locationIdentifier": "ID000000", "storageLocation": “ST000000”, "level": 3 } } Responses Response 200 (Ok) { accepted (bool), reasonCode (string), reasonLabel (string} } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 62/722 Example { "accepted": true "reasonCode": null, "reasonLabel": null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 63/722 Remove location 0.0.44.0 Allow client to remove a location from material HTTP Request DELETE /material-api/v1/materialunits/context={context}&number={number}/location Request Body { …, type (string), metadata (json, optional), } Responses Response 200 (Ok) Response 403 (Forbidden) 5 Hook returned an error { “reasonCode”: “…”, “reasonLabel”: “…” } 2 requestedAt must be newer or equals to the previous definition (DefinitionDate of Material unit) 8 Cannot change location because existing location is more recent than requested one 7 Remove PhysicalVehicle Location forbidden 1.84 unload material is now allowed Response 404 (NotFound) Example { …, "type": “automatic” "metadata": { “key”: “value” }, } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 64/722 Notification(s) { "notificationType": "LocationChanged" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "context": { "key": "value" }, "grossWeight": 220, "definitionLevel": "fully", "owner": "owner", "status": "Blocked", 0.0.58.0 "on": { "type": "locateOnLocation", "label": "ID000000", "locationIdentifier": "ID000000", "accessibleBays": [], "parents": [], "mesLocation": null, 0.0.61.0 "storageLocation": "ST000000", "level": 3 }, "netWeight": 22, "previousData": { "on": null }, "type": "automatic", "metadata": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 65/722 AddBlocking 0.0.44.0 Sometimes, a material unit must be blocked by the system. The blocking added to the material unit will be used in other process to avoid sending material unit. Examples : HTTP Request POST /material-api/v1/materialunits/context={context}&number={number}/blockings Request Body { …, blockingCode (string), remark (string) } Responses Response 201 (Created) Response 403 (Forbidden) Duplicated blocking code Response 404 (NotFound) Material not found Example { …, "blockingCodes": ["Z05 - Rouille", "…"], "remark": “remark…” } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 66/722 Notification(s) { "notificationType": "BlockingAdded" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "context": { "key": "value" }, "grossWeight": 220, "definitionLevel": "partially", "owner": "owner", "status": "Blocked", 0.0.58.0 "on": null, "netWeight": 22, "blockingCode": "Z05 - Rouille", "remark": "remark..." } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 67/722 Update Intrasite materials properties 0.0.44.0 This method is used to populate or update intrasite properties of a one or several material units in one transaction. This business command could be used by: A local MES : in that case, it is MU per MU that the update/definition is done An algorithm of intrasite that computes one or several intrasite properties for all MUs within a yard. This is a mass (for a lot of MUs, up to several thousand) update/definition of one or several intrasite properties HTTP Request PATCH /intrasite-api/v1/materials Request Body [ { …, lmiContext (string), lmiNumber (string), intrasiteMaterialUnitPlanning [ { value (json), path (string), op (string) } ] } ] • LmiContext (text, mandatory) It is the Lmi Context that combined with LmiNumber identify the MU to update • LmiNumber (text, mandatory) It is the Lmi Number that combined with LmiContext identify the MU to update o Ready (bool, optional) Renamed in 0.0.33.0 It defines if the MU is ready to be transported in intrasite. If AvailableForInternalTransport is true, then, the MU may be transported internally. If AvailableForInternalTransport is false or not defined (null), then, the MU may not be transported internally Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 68/722 IntrasiteMaterialUnitPlanning properties o NextWarehouseLocationIdentifier (text, optional) It defines the yard (WarehouseLocation) where the MU should be transported internally. When defined, it should point to an existing WarehouseLocation having the same Identifier. Normaly, it is a yard that is pointed by NextWarehouseLocation but it could be a higher level like a warehouse or also a lower level like an area. If not defined (null), then, no next location is defined. When NextWarehouseLocation is defined, then, IntrasiteTransferReason should also be defined. When NextWarehouseLocation is not defined, then, IntrasiteTransferReason is forced to empty. o Priority (long, optional) Renamed in 0.0.33.0 It defines the priority of the MU for the intrasite. According the process who updates the priority, it could be: The priority of the MU relatively to all MUs to transfer to the same next warehouse location The priority of the MU relatively to all MUs that are in the same location that this one is currenly. If not defined (null), then, no priority is defined. Priority should be a positive number (from 0 to infinite). The lower the priority is, the higher it is (a MU with priority 0 is selected before a MU with priority 999). o TransferReason (enum, optional) Renamed in 0.0.33.0 It defines the reason for which the intrasite transfer of the MU has to be done. Following reasons are defined (the same as WarehouseLocation.DestinationPriorityRanges.IntrasiteTransferReason): Production: this means that the MU has to be moved to feed a production line and so, the MU should be transfered to an input production line yard Shipment: this means that the MU has to be moved because it is foreseen on a shipment transport and so, the MU should be transfered to a shipment yard in accordance to the transport mode. Destorage: this means that the MU has to be moved to a destorage yard to moke place in the yard where it is now. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 69/722 Responses Response 204 (NoContent) Response 400 (BadRequest) 2 requestedAt must be newer or equals to the previous definition (DefinitionDate of Material unit) 9 Only replace operation is supported Response 403 (Forbidden) One or more warehouse(s) does not exists Response 404 (NotFound) Example Do not forget to add ‘/’ at the begin of the “path”. [ { …, "lmiContext": "string", "lmiNumber": "string", "intrasiteMaterialUnitPlanning": [ { "value": 10, "path": "/priority", "op": "replace" } ] } ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 70/722 Get materials per intrasite properties 0.0.44.0 Allow client to retrieve a(some) material unit(s) with intrasite information by a custom filter HTTP Request POST /intrasite-api/v1/materialunits/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … } } Examples Get all MaterialUnit(s) with ‘Priority’ equal to 99: { "query": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "priority", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } }, "right": { "nodeType": "constant", "value": "99" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 71/722 Get all MaterialUnit(s) with ‘Priority’ equal to 99 and ‘nextWarehouseLocationIdentifier’ equal to ‘WL-B’: { "query": { "nodeType": "binary", "operator": "and", "left": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "priority", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } }, "right": { "nodeType": "constant", "value": "99" } }, "right": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "nextWarehouseLocationIdentifier", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } }, "right": { "nodeType": "constant", "value": "WL-B" } } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 72/722 Get all MaterialUnit(s) and show only ‘lmiNumber’ and ‘Priority’ properties { "select": [ { "fieldName": "lmiNumber", "node": { "nodeType": "property", "name": "lmiNumber" } }, { "fieldName": "priority", "node": { "nodeType": "property", "name": "priority", "left": { "nodeType": "property", "name": "IntrasiteMaterialUnitPlanning" } } } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 73/722 Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 74/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { lmiContext (string), lmiNumber (string), productType (string), definitionLevel (string) = [‘Not’, ‘Partially’, ‘Fully’], netWeight (int), grossWeight (int), length (int), width (int), thickness (int), productType (string), mesOwner (string, optional), specificDimensions (json, optional), packingCode (string, optional), packingNumber (string, optional), labelBarcode (string, optional), foreignId (string, optional), productionStatus (string), readyForShipment (bool), inTransit (bool), isSupply (bool), axis (string, optional), unstackingCost (int, optional), nextProductionLine (string, optional), nextProductionForeseenDate (datetime, optional), scheduledNextProduction (datetime, optional), blockingCodes ([ (string), … ], optional), metadata (json, optional), boostStatus (string, optional), boostDateTime (datetime), orderNumber (string), scaleUpMaterialUnitIdentifier (string), orderItemId (string), scheduledAgreementId (string), shipmentInstructionId (string), intrasitePlanningState (string), parentMaterialId (string), creationDate (datetime), lastModificationDate (datetime), definitionDate (datetime), mesLocation (string), 0.0.61.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 75/722 locatedOn { type (string) = ‘LocateOnLocation’, label (string), storageLocation (string), mesLocation (string), 0.0.61.0 level (int), locationIdentifier (string), accessibleBays { }, parents ([ label (string), identifier (string), state (string) = [‘Open’, ‘Closed’], ]), or type (string) = ‘LocationOnPhysicalVehicle’ identifier (string) }, locationMetadata (json, optional), locationChangedBy (string, optional), locationChangedAt (datetime, optional), locationChangedType (string, optional), markedForDeletion (bool), availableOnLocation (bool), availableOnBay (bool), status (string, optional), 0.0.58.0 netWeight (int, optional), grossWeight (int, optional), length (double, optional), width (double, optional), thickness (double, optional), productType (string, optional), intrasiteMaterialUnitPlanning ({ ready (bool, optional), nextWarehouseLocationIdentifier (string, optional), priority (long, optional), transferReason (string) = [‘Production’, ‘Shipment’, ‘Destorage’], lmiContext (string), lmiNumber (string), creationDate (datetime), lastModificationDate (datetime), nextWarehouseLocation ({ type (string) = ‘LocateOnLocation’, label (string), storageLocation (string), mesLocation (string), 0.0.61.0 level (int), locationIdentifier (string), accessibleBays { }, parents ([ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 76/722 label (string), identifier (string), state (string) = [‘Open’, ‘Closed’], ], optional), }, optional) }, … ] } Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 77/722 { "totalPages": 1, "items": [ { "mesOwner": "owner", "specificDimensions": { "x": 5, "y": 10 }, "packingCode": "packingCode", "packingNumber": "packingNumber", "labelBarcode": "labelBarCode", "foreignId": "foreignId", "productionStatus": "WIP", "readyForShipment": true, "blockedForShipment": false, "inTransit": true, "isSupply": true, "axis": "axis", "unstackingCost": null, "nextProductionLine": "nextProductionLine", "nextProductionForeseenDate": null, "scheduledNextProduction": "2020-10-20T14:49:24.1095346+02:00", "blockingCodes": [ "block1", "block2" ], "metadata": { "date": "2020-10-20T14:49:24.1095346+02:00", "prop1": "value1", "prop2": 5.35 }, "boostStatus": null, "boostDateTime": null, "orderNumber": "orderNumber", "scaleUpMaterialUnitIdentifier": "scaleUpMaterialUnitIdentifier", "orderItemId": "orderItemId", "scheduledAgreementId": "scheduledAgreementId", "shipmentInstructionId": "shipmentInstructionId", "intrasitePlanningState": null, "parentMaterialId": null, "lmiContext": "LIE", "lmiNumber": "000000", "creationDate": "2020-10-20T14:49:33.2505325+02:00", "lastModificationDate": "2020-10-20T14:49:33.2505325+02:00", "definitionDate": "2020-10-20T14:49:24.1095346+02:00", "definitionLevel": "Partially", "locatedOn": null, "locationMetadata": {}, "locationChangedBy": null, "locationChangedAt": null, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 78/722 "locationChangeType": null, "markedForDeletion": false, "availableOnLocation": false, "availableOnBay": false, "transports": [], "status": "Blocked", "netWeight": 22, "grossWeight": 220, "length": 5.0, "width": 10.0, "thickness": 100.0, "productType": "Slab", "intrasiteMaterialUnitPlanning": { "ready": null, "nextWarehouseLocationIdentifier": null, "priority": 2, "transferReason": null, "lmiContext": "LIE", "lmiNumber": "000000", "creationDate": "2020-10-20T14:49:33.2515338+02:00", "lastModificationDate": "2020-10-20T14:49:33.7035359+02:00", "nextWarehouseLocation": null } } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 79/722 Get bays by context and number 0.0.58.0 Retrieve a list of bays from which a material can be reached. Bays can be coth in the “Open” or “Closed” state HTTP Request GET /material-api/v1/materialunits/context={context}&number={number}/bays Request Parameters context (string) number (string) lmi context lmi number Responses Response 200 (Ok) [{ identifier (string), label (string), state (string) = [‘Open’, ‘Closed’] }] Response 404 (NotFound) Example [{ "identifier": "ID000000", "label": "label0", "state": "Open" }, { "identifier": " ID000001", "label": "label1", "state": "Closed" }] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 80/722 Delete 0.0.44.0 Allow client to delete a material unit. This method is triggered by a MES message. This behaviour is applied if DeletionCheck hook accepts the request Artemis.Core only deletes not located material unit (or located on a location accepting the deletion). If on a location, the system will store the deletion request and will delete the entity when the local system will un-locate the material unit. The delete notification will be sent even if the material unit is not really deleted at this time. HTTP Request DELETE /material-api/v1/materialunits/context={context}&number={number} Request Parameters context (string) number (string) lmi context lmi number Request Body { …, reason (string) } Responses Response 200 (Ok) Response 403 (Forbidden) 5 Hook returned an error { “reasonCode”: “…”, “reasonLabel”: “…” } Response 404 (NotFound) Example { …, “reason” : “…” } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 81/722 Notification Example 1 { "notificationType": "Delete" "resourceType": "materialUnit", "scope": "", "sender": "Artemis.Material", "data": { "id": { "lmiContext": "LIE", "lmiNumber": "000000" }, "context": { "key": "value" }, "metadata": { 0.0.57.0 "key": "value" }, "reason": "SentToClient", 0.0.61.0 "grossWeight": 220, "definitionLevel": "partially", "owner": "owner", "on": null, "netWeight": 22, "otmPackageItemId": null, "blockingCodes": [ "block1", "block2" ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 82/722 Delete hook 0.0.44.0 HTTP Request POST /material-api/v1/materialunits/deleteCheck Request Body { …, reason (string) , lmiContext (string) , lmiNumber (string) } Example { …, "reason": "sentToClient", "lmiContext": "LIE", "lmiNumber": "ID000000" } Deletion reason When requesting a material unit deletion, a client must provide one of these reasons. Artemis.Core can refuse the deletion. Reason management: Reason Unknown or empty SentToClient UnknownMaterial Definition No reason has been provided The material unit has been sent to a client The material unit does not exist in MES Consumed The material unit has been consumed by a production line EquipementDeleted The material unit was on an equipment which has been deleted EquipementLeaving The material unit was on an equipment which leaving the site Archived The material unit has been archived by MES Scrapped The material unit has been scrapped in the 0.0.78.0 warehouse Version 1.84.0 Artemis.Core Business API Documentation Business Refuse deletion Accept Accept if requester is the owner of material unit Accept Accept Accept Accept Accept Marechal Frédéric 83/722 Responses Response 200 (Ok) Response 403 (Forbidden) 5 Hook returned an error { “reasonCode”: “…”, “reasonLabel”: “…” } Response 404 (NotFound) Responses Response 200 (Ok) { accepted (bool), reasonCode (string), reasonLabel (string} } Example { "accepted": true "reasonCode": null, "reasonLabel": null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 84/722 4.2. Location A location is a place where a material unit is store. Depending on the local system, the location could be a large or a more specific physical location. Artemis.Core manages 3 levels: Site Warehouse 1 Yard 1 Warehouse 2 Yard 2 Yard 3 Specific can create as many level as needed. A material unit can be localized on a location at any level and it’s possible to retrieve all materials localised at one level or in its hierarchy. If needed, specific can also add a level between predefined levels. Create 0.0.44.0 Allow client to create a location. This method is triggered by the local system to describe the local structure of the site HTTP Request POST /location-api/v1/locations Request Body { … location : { identifier (string), parentIdentifier (string, optional), type (string), label (string), metadata (json, optional), state (string, optional) = [‘Open’, ‘Closed’], acceptMaterialUnitDeletion (bool), headOfficeAddress (string, optional), locationCategoryIdentifier (string, optional), capacity (int, optional), upperThreshold (int, optional), lowerThreshold (int, optional), destinationPriorityConfiguration { productionRanges ([(int), ….], optional), shipmentRanges ([(int), ….], optional), destorageRanges ([(int), ….], optional) } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 85/722 Responses Response 201 (Created) Response 409 (Conflict) Location with identifier '{0}' and locationType '{1}' already exists Example { …, "location": { "parentIdentifier": "58b4b3b6-6bb8-4b58-ade8-fa3853a257aa", "type": "site", "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.743624+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "acceptMaterialUnitDeletion": false, "identifier": "ID000000" } } Notification(s) { "notificationType": "Create" "resourceType": "location", "scope": "LIE", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 86/722 Update 0.0.44.0 Allow client to update location information. This method is triggered by the local system to describe the local structure of the site HTTP Request PUT /location-api/v1/locations/{identifier} Request Parameters identifier (string) Request Body { … location : { parentIdentifier (string, optional), type (string), label (string), metadata (json, optional), state (string, optional) = [‘Open’, ‘Closed’], acceptMaterialUnitDeletion (bool), headOfficeAddress (string, optional), locationCategoryIdentifier (string, optional), capacity (int, optional), upperThreshold (int, optional), lowerThreshold (int, optional), destinationPriorityConfiguration { productionRanges ([(int), ….], optional), shipmentRanges ([(int), ….], optional), destorageRanges ([(int), ….], optional) } } } Responses Response 200 (Ok) Response 201 (Created) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 87/722 Example { …, "location": { "parentIdentifier": "58b4b3b6-6bb8-4b58-ade8-fa3853a257aa", "type": "site", "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.743624+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "acceptMaterialUnitDeletion": false } } Notification(s) { "notificationType": "Update" "resourceType": "location", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 88/722 Partial Update 0.0.44.0 Allow client to partially update location information. This method is triggered by the local system to describe the local structure of the site HTTP Request PATCH /location-api/v1/locations/{identifier} Request Parameters identifier (string) Request Body { … location: [ { value (json), path (string), op (string) }, … ] } Responses Response 204 (No Content) Response 404 (NotFound) Example { … "location": [ { "value": “Closed”, "path": "state", "op": "replace", }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 89/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "location", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "Date": "2020-10-15T23:45:51.4590818+02:00" } } } } Change location state When a client needs to update the location state (open or closed), it has to call the partial update method of the location. To do that, it needs to call the PATCH method of the location. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 90/722 Get by identifier 0.0.44.0 Retrieve a material by identifier HTTP Request GET /location-api/v1/locations/{identifier} Request Parameters identifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 91/722 Responses Response 200 (Ok) { parentIdentifier (string, optional), type (string), label (string), creationDate (datetime), 0.0.65.0 lastModificationDate (datetime), 0.0.65.0 metadata (json, optional), state (string, optional) = [‘Open’, ‘Closed’], acceptMaterialUnitDeletion (bool), headOfficeAddress (string, optional), locationCategoryIdentifier (string, optional), capacity (int, optional), upperThreshold (int, optional), lowerThreshold (int, optional), destinationPriorityConfiguration { productionRanges ([(int), ….], optional), shipmentRanges ([(int), ….], optional), destorageRanges ([(int), ….], optional) }, hierarchyPath (string, optional), parents ([(string), ….]), children { … (other locations) }, accessibleBays [{ identifier (string), label (string), metadata (json, optional), associatedLocations ([(string), ….]), associatedPrinter (string), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional), maxNumberOfEquipments (int), bayTransportModes [ { transportMode (string) = [‘Truck’, ‘Wagon’, ‘Vessel’], capacity (int), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional) }, …] }] } Response 404 (NotFound) Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 92/722 { "type": "site", "label": "ID000000", "creationDate": "2020-10-15T11:14:56.7566605+00:00", "lastModificationDate": "2020-10-15T11:14:56.7566605+00:00", "definitionDate": "2020-10-14T15:21:39.2313086+02:00", "metadata": { "Prop1": "2020-10-15T23:31:24.743624+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "stateMetadata": {}, "acceptMaterialUnitDeletion": false, "headOfficeAddress": null, "identifier": "ID000000", "hierarchyPath": "/1/1/", "parents": [], "children": [ { "type": "site", "label": "ID000001", "metadata": { "Prop1": "2020-10-15T23:31:24.743624+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "stateMetadata": {}, "acceptMaterialUnitDeletion": false, "headOfficeAddress": null, "identifier": "ID000001", "hierarchyPath": "/1/1/1/", "parents": [ { "identifier": "ID000000", "type": "site", "label": "ID000000", "bays": [] } ], "children": null, "parentIdentifier": "ID000000", "accessibleBays": [], "locationCategoryIdentifier": null, "capacity": null, "upperThreshold": null, "lowerThreshold": null, "destinationPriorityConfiguration": { "productionRanges": [], "shipmentRanges": [], Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 93/722 "destorageRanges": [] } } ], "parentIdentifier": null, "accessibleBays": [], "locationCategoryIdentifier": null, "capacity": null, "upperThreshold": null, "lowerThreshold": null, "destinationPriorityConfiguration": { "productionRanges": [], "shipmentRanges": [], "destorageRanges": [] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 94/722 Get by custom filter 0.0.44.0 Allow client to retrieve a(some) location(s) information by a custom filter HTTP Request POST /location-api/v1/locations/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 95/722 Example { "query": { "nodeType": "call", "methodName": "In", "arguments": [ { "nodeType": "constant", "value": [ { "identifier": "ID000000", }, { "identifier": "ID000001", } ] } ] }, "select": null, "paging": null, "orderBy": null, } Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 96/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { lmiContext (string), lmiNumber (string), productType (string), definitionLevel (string) = [‘Not’, ‘Partially’, ‘Fully’], netWeight (int), grossWeight (int), length (int), width (int), thickness (int), productType (string), mesOwner (string, optional), specificDimensions (json, optional), packingCode (string, optional), packingNumber (string, optional), labelBarcode (string, optional), foreignId (string, optional), productionStatus (string), readyForShipment (bool), inTransit (bool), isSupply (bool), axis (string, optional), unstackingCost (int, optional), nextProductionLine (string, optional), nextProductionForeseenDate (datetime, optional), scheduledNextProduction (datetime, optional), blockingCodes ([ (string), … ], optional), metadata (json, optional), boostStatus (string, optional), boostDateTime (datetime), orderNumber (string), scaleUpMaterialUnitIdentifier (string), orderItemId (string), scheduledAgreementId (string), shipmentInstructionId (string), intrasitePlanningState (string), parentMaterialId (string), creationDate (datetime), lastModificationDate (datetime), definitionDate (datetime), mesLocation (string), 0.0.61.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 97/722 locatedOn { type (string) = ‘LocateOnLocation’, label (string), storageLocation (string), mesLocation (string), 0.0.61.0 level (int), locationIdentifier (string), accessibleBays { }, parents ([ label (string), identifier (string), state (string) = [‘Open’, ‘Closed’], ]), or type (string) = ‘LocationOnPhysicalVehicle’ identifier (string) }, locationMetadata (json, optional), locationChangedBy (string, optional), locationChangedAt (datetime, optional), locationChangedType (string, optional), markedForDeletion (bool), availableOnLocation (bool), availableOnBay (bool), status (string, optional), netWeight (int, optional), grossWeight (int, optional), length (double, optional), width (double, optional), thickness (double, optional), productType (string, optional) }, … ] } Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 98/722 { "totalPages": 1, "items": [ { "type": "site", "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.743624+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "stateMetadata": {}, "acceptMaterialUnitDeletion": false, "headOfficeAddress": null, "identifier": "ID000000", "hierarchyPath": "/1/1/", "parents": [], "children": null, "parentIdentifier": null, "accessibleBays": [], "locationCategoryIdentifier": null, "capacity": null, "upperThreshold": null, "lowerThreshold": null, "destinationPriorityConfiguration": { "productionRanges": [], "shipmentRanges": [], "destorageRanges": [] } }, { "type": "site", "label": "ID000001", "metadata": { "Prop1": "2020-10-15T23:31:24.743624+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "stateMetadata": {}, "acceptMaterialUnitDeletion": false, "headOfficeAddress": null, "identifier": "ID000001", "hierarchyPath": "/1/1/1/", "parents": [ { "identifier": "ID000000", "type": "site", "label": "ID000000", "bays": [] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 99/722 } ], "children": null, "parentIdentifier": "ID000000", "accessibleBays": [], "locationCategoryIdentifier": null, "capacity": null, "upperThreshold": null, "lowerThreshold": null, "destinationPriorityConfiguration": { "productionRanges": [], "shipmentRanges": [], "destorageRanges": [] } } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 2 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 100/722 { "query": { "nodeType": "call", "methodName": "In", "arguments": [ { "nodeType": "constant", "value": [ { "lmiNumber": "ID000000", "lmiContext": "LIE" }, { "lmiNumber": "ID000001", } ] } ] }, "select": null, "paging": null, "orderBy": null, "includes": [ { "nodeType": "property", "name": "location" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 101/722 Get all WarehouseLocation(s) of specific type (ex: ‘’warehouse”). { "query": { "Operator": "equal", "Left": { "Name": "Type", "nodeType": "property" }, "Right": { "Value": "warehouse", "nodeType": "constant" }, "nodeType": "binary" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 102/722 Get priorities per warehouse per destination 0.0.44.0 This method is used to retrieve all computed properties of a WarehouseLocation per priorities for a destination and a transfer reason. HTTP Request GET /location-api/v1/locations/{identifier}/statistic/priority Request Parameters identifier (string) Responses Response 200 (Ok) { total (long), destination [ { identifier (string), label (string), transferSets [ { reason (string) = [‘Production’, ‘Shipment’, ‘Destorage’], priorities [ { rangeNumber (long, optional), numberOfMaterials (long), tonnage (long) }, … ] }, …], }, … ] } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 103/722 Example { "total": 3, "destinations": [ { "identifier": "ID_DEST01", "label": "ID_DEST01", "transferSets": [ { "reason": "Production", "priorities": [ { "rangeNumber": 5, "numberOfMaterials": 3, "tonnage": 660 } ] } ] } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 104/722 Get occupancies 0.0.44.0 This method is used to retrieve the occupancy of many warehouse locations, filtering by their identifiers. HTTP Request POST /location-api/v1/locations/statistic/occupancies Request Parameters Identifier (string[]) Request Body [ (string), … ] Example [ “ID000000” ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 105/722 Responses Response 200 (Ok) [{ identifier (string), occupancy (int), occupancyInGrossTons (long), occupancyInNetTons (long), availableForInternalTransport (int), availableForInternalTransportInGrossTons (long), scheduledOnProductionLine (int), scheduledOnProductionLineInGrossTons (long), blocked (int), blockedInGrossTons (long), unavailable (int), unavailableInGrossTons (long), leafLocations (int), emptyLeafLocations (int), fullLeafLocations (int), partiallyFilledLeafLocations (int), upperThresholdInGrossTons (long), lowerThresholdInGrossTons (long), capacity (long) }] Example [ { "identifier": "ID000001", "occupancy": 4, "occupancyInGrossTons": 880, "occupancyInNetTons": 88, "availableForInternalTransport": 1, "availableForInternalTransportInGrossTons": 220, "scheduledOnProductionLine": 1, "scheduledOnProductionLineInGrossTons": 220, "blocked": 4, "blockedInGrossTons": 880, "unavailable": 4, "unavailableInGrossTons": 880, "leafLocations": 4, "emptyLeafLocations": 1, "fullLeafLocations": 1, "partiallyFilledLeafLocations": 2, "upperThresholdInGrossTons": 440, "lowerThresholdInGrossTons": 220, "capacity": 4 } ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 106/722 Request inventory 0.0.44.0 Local system can request an inventory to MES. MES replies with every material unit known location. HTTP Request PUT /location-api/v1/locations/inventoryrequest Request Body { …, locationIdentifier (string) } Responses Response 200 (Ok) Response 404 (NotFound) Example { …, "locationIdentifier": "ID000000" } Notification(s) { "notificationType": "InventoryRequested" "resourceType": "location", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "locationIdentifier": "ID000000" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 107/722 Inventory 0.0.44.0 MES replies to an inventory request with every material unit known location. HTTP Request POST /location-api/v1/locations/inventory Request Body { …, items { lmiContext (string), lmiNumber (string), locationIdentifier (string), mesLocation (string) }, locationIdentifier (string) } Responses Response 200 (Ok) Response 404 (NotFound) Example { …, "locationIdentifier": "ID000000", "items": [ { "lmiContext": "Lm1", "lmiNumber": "LmiNumber1", "locationIdentifier": "Location1", "mesLocation": "MesLocation1" }, { "lmiContext": "Lm2", "lmiNumber": "LmiNumber2", "locationIdentifier": "Location2", "mesLocation": "MesLocation2" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 108/722 Notification(s) { "notificationType": "Inventory" "resourceType": "location", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "locationIdentifier": "ID000000", "inventoryItems": [ { "LmiContext": "Lm1", "LmiNumber": "LmiNumber1", "LocationIdentifier": "Location1", "MesLocation": "MesLocation1" }, { "LmiContext": "Lm2", "LmiNumber": "LmiNumber2", "LocationIdentifier": "Location2", "MesLocation": "MesLocation2" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 109/722 Request update by location 0.0.44.0 Local system can request MES to resend all material units located in a location. HTTP Request POST /location-api/v1/locations/updateByLocationRequest Request Body { …, locationIdentifier (string) } Responses Response 200 (Ok) Response 404 (NotFound) Example { …, "locationIdentifier": "ID000000" } Notification(s) { "notificationType": "UpdateByLocationRequested" "resourceType": "location", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "locationIdentifier": "ID000000" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 110/722 Delete 0.0.44.0 Allow client to delete a location. This method is triggered by the local system to describe the local structure of the site If a location contains material units, they are delocalized for Artemis.Core but not for MES (no locationChanged notification raised). When a location is deleted, all its children are also deleted When a location is associated to a bay, the bay is not deleted but loose its reference to the location HTTP Request DELETE /location-api/v1/locations/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) Deleting location not allowed if location or child location has material units localized Response 404 (NotFound) Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 111/722 Notification { "notificationType": "Delete" "resourceType": "location", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "id": "ID000000" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 112/722 4.3. Location category Create 0.0.44.0 Allow client to create a location. This method is triggered by the local system to describe the local structure of the site HTTP Request POST /location-api/v1/location-categories Request Body { … locationCategory : { identifier (string), name (string), description (string, optional) } } Responses Response 201 (Created) Response 409 (Conflict) Location category with identifier '{0}' already exists Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 113/722 Example { …, "locationCategory": { "name": "ID000000", "description": "string", "identifier": " ID000000" } } Notification(s) { "notificationType": "Create" "resourceType": "locationCategory", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 114/722 Update 0.0.44.0 Allow client to update location category information. This method is triggered by the local system to describe the local structure of the site HTTP Request PUT /location-api/v1/location-categories/{identifier} Request Parameters identifier (string) Request Body { … locationCategory : { name (string), description (string, optional) } } Responses Response 200 (Ok) Response 201 (Created) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 115/722 Example { …, "locationCategory": { "name": "ID000000", "description": "string" } } Notification(s) { "notificationType": "Update" "resourceType": "locationCategory", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 116/722 Partial Update 0.0.44.0 Allow client to partially update location category information. This method is triggered by the local system to describe the local structure of the site HTTP Request PATCH /location-api/v1/location-categories/{identifier} Request Parameters identifier (string) Request Body { … locationCategory: [ { value (json), path (string), op (string) }, … ] } Responses Response 204 (No Content) Response 404 (NotFound) Example { … "locationCategory": [ { "value": “newDesc”, "path": "description", "op": "replace", }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 117/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "locationCategory", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "Date": "2020-10-15T23:45:51.4590818+02:00" } } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 118/722 Get by identifier 0.0.44.0 Allow client to retrieve a location category by its reference HTTP Request GET /location-api/v1/location-categories/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { identifier (string), name (string), description (string, optional) } Response 404 (NotFound) Example { "identifier": "locationCategorie01", "name": " locationCategorie01", "description”: “description” } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 119/722 Get by a custom filter 0.0.44.0 Allow client to retrieve a(some) location category(ies) by a custom filter HTTP Request POST /location-api/v1/location-categories/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 120/722 Example { "query": { "Operator": "equal", "Left": { "Name": "identifier", "Left": null, "nodeType": "property" }, "Right": { "Value": "ID000000", "Type": null, "nodeType": "constant" }, "nodeType": "binary" }, "select": null, "paging": null, "orderBy": null } Responses Response 200 (Ok) { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), name (string), description (string, optional) }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 121/722 Example { "totalPages": 1, "items": [ { "identifier": "ID000000", "name": "carrier", "description": null } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 122/722 Delete 0.0.44.0 Allow client to delete a location category. HTTP Request DELETE /location-api/v1/location-categories/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Notification { "notificationType": "Delete" "resourceType": "locationCategory", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "id": "ID000000" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 123/722 Delete associations 0.0.44.0 Allow client to delete a location category associations with warehouse locations. HTTP Request DELETE /location-api/v1/location-categories/{identifier}/warehouse-locations Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 124/722 4.4. Scheduling module Scheduled transfers Save (add or update) 0.0.45.0 Allow client to create a new ScheduledTransfer HTTP Request PUT /intrasite/scheduling-api/v1/scheduled-transfers/{identifier} 0.0.47.0 Request Body { …, shiftIdentifier (string, optional), scheduledAt { start (DateTimeOffset), end (DateTimeOffset) }, sourceWarehouseLocation (string), targetWarehouseLocation (string), tonnage (uint), 0.0.45.0 reason (string), metadata (string, optional) } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) Response 403 (Forbidden) 30006 Any field but context of shift identifier is null or empty 30000 Tonnage is less or equal to zero 30001 SourceWarehouseLocation does not exist 30001 TargetWarehouseLocation does not exist 30009 StartDate after EndDate Response 409 (Conflict) 30005 One scheduled transfer exists with the same identifier Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 125/722 Example { …, "shiftIdentifier":null, "scheduledAt": { "start":"2020-10-20T17:59:58.2067245+02:00", "end":"2020-10-20T21:59:58.2067245+02:00", } "sourceWarehouseLocation":"SourceHall", "targetWarehouseLocation":"DestHall", "tonnage":100, "reason":"Delivery", "metadata":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 126/722 Get by identifier 0.0.44.0 Allow client to retrieve a ScheduledTransfer by its identifier HTTP Request GET /intrasite/scheduling-api/v1/scheduled-transfers/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { identifier (string), shiftIdentifier (string, optional), startDate (datetime), endDate (datetime), sourceWarehouseLocation (string), targetWarehouseLocation (string), tonnage (bool), reason (string), metadata (string, optional) } Response 404 (NotFound) Example { "identifier":"ST01", "shiftIdentifier":null, "startDate":"2020-10-20T17:59:58.2067245+02:00", "endDate":"2020-10-20T21:59:58.2067245+02:00", "sourceWarehouseLocation":"SourceHall", "targetWarehouseLocation":"DestHall", "tonnage":100, "reason":"Delivery", "metadata":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 127/722 Get movement by identifier 0.0.45.0 Allow client to retrieve a movement from a ScheduledTransfer by its identifier HTTP Request GET /intrasite/scheduling-api/v1/scheduled-transfers/{identifier}/movements/movementIdentifier Request Parameters identifier (string) movementIdentifier (string) Responses Response 200 (Ok) { …, identifier (string), linkIdentifier (string), numberOfVehicles (int), preferedMaterialPoolIdentifier (string), 0.0.48.0 state 0.0.48.0 { CurrentState (string), CompletedTonnage (uint, optional depending on state), CancelReason (string, optional depending on state) } scheduledTonnage (uint), 0.0.48.0 start (datetime), end (datetime), arrivalStartLoadingDuration (datetime), 0.0.48.0 loadingDuration (datetime), 0.0.48.0 endLoadingDepartureDuration (datetime), 0.0.48.0 inTransitDuration (datetime), 0.0.48.0 arrivalStartUnloadingDuration (datetime), 0.0.48.0 unloadingDuration (datetime), 0.0.48.0 endUnloadingDepartureDuration (datetime), 0.0.48.0 createdBy (string) 0.0.48.0 } Response 404 (NotFound) Scheduled transfer does not exist Movement does not exist Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 128/722 Example { …, "identifier":"MV01", "linkIdentifier":"Link1", "numberOfVehicles":"1", "preferredMaterialPoolIdentifier":"MP01", "state" { "CurrentState":"Completed", "CompletedTonnage":"1000", } "scheduledTonnage":"1000", "start":"2021-02-04T10:00:00+00:00", "end":"2021-02-04T12:00:00+00:00", "arrivalStartLoadingDuration":"2021-01-20T18:06:13.8162005+02:00", "loadingDuration":"2021-01-20T18:06:13.8162005+02:00", "endLoadingDepartureDuration":"2021-01-20T18:06:13.8162005+02:00", "inTransitDuration":"2021-01-20T18:06:13.8162005+02:00", "arrivalStartUnloadingDuration":"2021-01-20T18:06:13.8162005+02:00", "unloadingDuration":"2021-01-20T18:06:13.8162005+02:00", "endUnloadingDepartureDuration":"2021-01-20T18:06:13.8162005+02:00", "createdBy":"owner" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 129/722 Get movements by Scheduled Transfer 0.0.45.0 Allow client to retrieve all movement from a ScheduledTransfer HTTP Request GET /intrasite/scheduling-api/v1/scheduled-transfers/{identifier}/movements Request Parameters identifier (string) Responses Response 200 (Ok) [ { …, identifier (string), linkIdentifier (string), numberOfVehicles (int), preferedMaterialPoolIdentifier (string), 0.0.48.0 state 0.0.48.0 { CurrentState (string), CompletedTonnage (uint, optional depending on state), CancelReason (string, optional depending on state) }, shiftIdentifier (string), startDate (datetime), endDate (datetime), scheduledTonnage (uint), 0.0.48.0 arrivalStartLoadingDuration (datetime), 0.0.48.0 loadingDuration (datetime), 0.0.48.0 endLoadingDepartureDuration (datetime), 0.0.48.0 inTransitDuration (datetime), 0.0.48.0 arrivalStartUnloadingDuration (datetime), 0.0.48.0 unloadingDuration (datetime), 0.0.48.0 endUnloadingDepartureDuration (datetime), 0.0.48.0 createdBy (string) 0.0.48.0 }, … ] Response 404 (NotFound) Scheduled transfer does not exist Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 130/722 Example [ { …, "identifier":"MV01", "linkIdentifier":"Link1", "numberOfVehicles":"1", "preferredMaterialPoolIdentifier":"MP01", "state" { "CurrentState":"Completed", "CompletedTonnage":"1000", }, "shift": "1", "start":"2021-02-04T10:00:00+00:00", "end":"2021-02-04T12:00:00+00:00", "scheduledTonnage":"1000", "arrivalStartLoadingDuration":"2021-01-20T18:06:13.8162005+02:00", "loadingDuration":"2021-01-20T18:06:13.8162005+02:00", "endLoadingDepartureDuration":"2021-01-20T18:06:13.8162005+02:00", "inTransitDuration":"2021-01-20T18:06:13.8162005+02:00", "arrivalStartUnloadingDuration":"2021-01-20T18:06:13.8162005+02:00", "unloadingDuration":"2021-01-20T18:06:13.8162005+02:00", "endUnloadingDepartureDuration":"2021-01-20T18:06:13.8162005+02:00", "createdBy":"owner" }, … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 131/722 Save movement 0.0.44.0 Updated in 0.0.48.0 Allows to create or modify a movement. HTTP Request PUT /intrasite/scheduling-api/v1/scheduled-transfers/{scheduledId}/movements/{identifier} Request Parameters scheduledId (string) identifier (string) Request Body { … linkIdentifier (string), preferredMaterialPoolIdentifier (string, optional), startDate (DateTimeOffset, optional), endDate (DateTimeOffset, optional), scheduledTonnage (uint), arrivalStartLoadingDuration (TimeSpan, optional), loadingDuration (TimeSpan, optional), endLoadingDepartureDuration (TimeSpan, optional), inTransitDuration (TimeSpan, optional), arrivalStartUnloadingDuration (TimeSpan, optional), unloadingDuration (TimeSpan, optional), endUnloadingDepartureDuration (TimeSpan, optional) } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) Any required field is missing or it has invalid format 30018 Link does not exist / Link is null Response 403 (Forbidden) 30020 Preferred material pool does not exist 30025 Preferred material pool is not contained in the link 30000 Scheduled Tonnage is less or equal to zero Response 404 (NotFound) ScheduledTranfer with identifier ‘…' does not exist Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 132/722 Example { …, "linkIdentifier": "LK01", "preferredMaterialPoolIdentifier": "MP01", "scheduledTonnage": 1000, "startDate":"2021-02-04T10:00:00+00:00", "endDate":"2021-02-04T12:00:00+00:00", "arrivalStartLoadingDuration": "2021-01-20T18:06:13.8162005+02:00", "loadingDuration": "2021-01-20T18:06:13.8162005+02:00", "endLoadingDepartureDuration": "2021-01-20T18:06:13.8162005+02:00", "inTransitDuration": "2021-01-20T18:06:13.8162005+02:00", "arrivalStartUnloadingDuration": "2021-01-20T18:06:13.8162005+02:00", "unloadingDuration": "2021-01-20T18:06:13.8162005+02:00", "endUnloadingDepartureDuration": "2021-01-20T18:06:13.8162005+02:00" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 133/722 State transition 0.0.48.0 Allows to change the state of a movement. HTTP Request POST /intrasite/scheduling-api/v1/scheduledtransfers/{scheduledTransferIdentifier}/movements/{movementIdentifier}/state-transitions Request Parameters scheduledTransferIdentifier (string) movementIdentifier (string) Request Body { … NextState (string) = [‘Canceled’, ‘Completed’, ‘Confirmed’, ‘Draft’, ‘InProgress’], CompletedTonnage (uint, optional depending on state), CancelReason (string, optional depending on state) } Responses Response 200 (Ok) Response 400 (BadRequest) The request is invalid Response 403 (Forbidden) This action cannot be performed because the movement is in the wrong state. The tonnage cannot be less than or equal to zero Response 404 (NotFound) Scheduled transfer does not exist Movement does not exist Example { …, "NextState": "Canceled", "CancelReason": "reason" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 134/722 Notification { "notificationType": "MovementStateChanged" "resourceType": "Movement", "scope": "", "sender": "", "data": { "ScheduledtransferIdentifier": "ST01", "MovementIdentifier": "MOV01", "MovementState": "Confirmed", "originalRequestInfo": { "requestedAt": "0001-01-01T01:00:00+01:00", "requestedBy": null }, "context": null } } Get by custom filter 0.0.46.0 Updated in 0.0.48.0 Allow client to retrieve scheduled transfers with filters. HTTP Request POST /intrasite/scheduling-api/v1/scheduled-transfers/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 135/722 Example { "query": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "Tonnage", }, "right": { "nodeType": "constant", "value": "100" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 136/722 Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 137/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), from { identifier (string), label (string) }, to { identifier (string), label (string) }, scheduledAt { shiftIdentifier (string), start (datetime) end (datetime) }, scheduledTonnage (uint), reason (string), movements [ { identifier (string), linkIdentifier (string), preferedMaterialPoolIdentifier (string), scheduledTonnage (uint) state { State (string), CompletedTonnage (uint, optional depending on state), CancelReason (string, optional depending on state) }, start (datetime), end (datetime), arrivalStartLoadingDuration (datetime), loadingDuration (datetime), endLoadingDepartureDuration (datetime), inTransitDuration (datetime), arrivalStartUnloadingDuration (datetime), unloadingDuration (datetime), endUnloadingDepartureDuration (datetime), createdBy (string) }, …], metadata (string, optional) }, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 138/722 … ] } Example { "totalPages": 1, "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 2, "items": [ { "identifier": "ST02", "from": { "identifier": "SourceHall", "label": "hall1Label" }, "to": { "identifier": "DestHall", "label": "hall1Label" }, "scheduledAt": { "shiftIdentifier": "SF01", "start": "2020-10-27T18:06:13.8162005+02:00", "end": "2020-10-28T18:06:13.8162005+02:00" }, "scheduledtonnage": 500, "start":"2021-02-04T10:00:00+00:00", "end":"2021-02-04T12:00:00+00:00", "reason": "delivery", "movements": [], "metadata": { "date": "2020-10-27T18:06:13.8162005+02:00", "prop1": "value1", "prop2": 5.35 } }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 139/722 Delete 0.0.44.0 Allow client to delete a scheduled transfers. HTTP Request DELETE /intrasite/scheduling-api/v1/scheduled-transfers/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 140/722 Remove movement 0.0.45.0 Allow client to remove a movement from scheduled transfer HTTP Request DELETE /intrasite/scheduling-api/v1/scheduled-transfers/{scheduledId}/movements/{identifier} Request Parameters scheduledId (string) identifier (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) Status “InProgress” or “Completed” Response 404 (NotFound) Scheduled Transfer not found Movement not found Example { … } Notification { "notificationType": "MovementDeleted" "resourceType": "Movement", "scope": "", "sender": "", "data": { "ScheduledtransferIdentifier": "ST01", "MovementIdentifier": "MOV01", "originalRequestInfo": { "requestedAt": "0001-01-01T01:00:00+01:00", "requestedBy": null }, "context": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 141/722 Get movements by custom filter 0.0.46.0 Updated in 0.0.48.0 Retrieve a movement by query. HTTP Request POST /intrasite/scheduling-api/v1/scheduled-transfers/movements/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … } } Examples Get all movements which have ‘Tonnage’ equal to 1000: { "query": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "Tonnage", }, "right": { "nodeType": "constant", "value": "1000" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 142/722 Responses Response 200 (Ok) { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), linkIdentifier (string), preferredMaterialPoolIdentifier (string), state { State (string), CompletedTonnage (uint, optional depending on state), CancelReason (string, optional depending on state) }, scheduledTonnage (uint), start (datetime), end (datetime), arrivalStartLoadingDuration (datetime), loadingDuration (datetime), endLoadingDepartureDuration (datetime), inTransitDuration (datetime), arrivalStartUnloadingDuration (datetime), unloadingDuration (datetime), endUnloadingDepartureDuration (datetime), createdBy (string) }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 143/722 Example { "totalPages": 1, "items": [ { "identifier": "MV01", "linkIdentifier": "Link01", "preferredMaterialPoolIdentifier": "MP01", "state" { "State":"Completed", "CompletedTonnage":"1000", } "scheduledTonnage": "1000", "start":"2021-02-04T10:00:00+00:00", "end":"2021-02-04T12:00:00+00:00", "arrivalStartLoadingDuration": "2021-01-20T18:06:13.8162005+02:00", "loadingDuration": "2021-01-20T18:06:13.8162005+02:00", "endLoadingDepartureDuration": "2021-01-20T18:06:13.8162005+02:00", "inTransitDuration": "2021-01-20T18:06:13.8162005+02:00", "arrivalStartUnloadingDuration": "2021-01-20T18:06:13.8162005+02:00", "unloadingDuration": "2021-01-20T18:06:13.8162005+02:00", "endUnloadingDepartureDuration": "2021-01-20T18:06:13.8162005+02:00", "createdBy" : "me" } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 144/722 Warehouse locations Save (add or update) 0.0.44.0 HTTP Request PUT /instrasite/scheduling-api/v1/warehouse-locations/{identifier} Request Body { label (string) } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) Response 403 (Forbidden) 30010 Label is null or empty 30006 Identifier is null or empty Example { "label": "ID000000" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 145/722 GetAll 0.0.47.0 Allow client to retrieve all warehouse locations HTTP Request GET /instrasite/scheduling-api/v1/warehouse-locations Responses Response 200 (Ok) [ { identifier (string), label (string) }, … ] Example [ { "identifier": "WL01", "label": “WarehouseLabel01” }, { "identifier": "WL02", "label": “WarehouseLabel02” }, … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 146/722 Get by identifier 0.0.52.0 HTTP Request GET /instrasite/scheduling-api/v1/warehouse-locations/{identifier} Responses Response 200 (Ok) Response 404 (NotFound) Example { "identifier": "WL01", "label": “WarehouseLabel01” } Delete 0.0.52.0 Allow client to delete a warehouse location. HTTP Request DELETE /instrasite/scheduling-api/v1/warehouse-locations/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) 30037 When a warehouse location is used by a link 30038 When a warehouse location is used by a scheduled transfer Response 404 (NotFound) When warehouse location not found. Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 147/722 Links Save (add or update) 0.0.44.0 Allows to create or update a Link. HTTP Request PUT /instrasite/scheduling-api/v1/links/{identifier} Request Body { sourceWarehouseLocation (string), targetWarehouseLocation (string), transportMode (string), cost (int, optional), isPublic (bool), distance (double), 0.0.47.0 transitTime (timeSpan), isOpen (bool), materialPools { (string), … } } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) Response 403 (Forbidden) 30006 Identifier is null or empty 30001 SourceWarehouseLocation does not exist 30001 TargetWarehouseLocation does not exist 30012 Cost is less or equal to zero 30014 Transit time is less or equal to zero 30016 Unknown transport mode 30020 Material Pool not found 30013 Distance is less or equal to zero 30036 When a link used by a movement is being updated Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 148/722 Example { "sourceWarehouseLocation":"SourceHall", "targetWarehouseLocation":"DestHall", "transportMode":"Wagon", "cost":null, "isPublic":false, "distance":10.0, "transitTime":"02:13:00", "isOpen":false, "materialPools":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 149/722 Searches 0.0.45.0 Allow client to retrieve list of links with the allowed materialPools using a filter. HTTP Request POST /intrasite/scheduling-api/v1/links /searches Request Body { SourceWarehouseLocation (string), TargetWarehouseLocation (string) } Example { " SourceWarehouseLocation ":"SourceHall", " SourceWarehouseLocation ":"DestHall" } Responses Response 200 (Ok) [ { …, identifier (string), sourceWarehouseLocation (string), targetWarehouseLocation (string), materialPools [ { identifier (string) description (string), productType (string) }, …] }, … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 150/722 Example [ { …, "identifier":"Link1", "sourceWarehouseLocation":"SourceHall", "targetWarehouseLocation":"DestHall", "materialPools": { "Identifier":"MP01", "description": null, "productType":”Slab” } }, { …, "identifier":"Link2", "sourceWarehouseLocation":"SourceHall2", "targetWarehouseLocation":"DestHall2", " materialPools ": { "Identifier ":"MP02", "description ":”Some description”, "productType ":”Slab” } }, … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 151/722 Get by identifier 0.0.52.0 HTTP Request GET /instrasite/scheduling-api/v1/links/{identifier} Responses Response 200 (Ok) Response 404 (NotFound) Example { …, "identifier":"Link1", "sourceWarehouseLocation":"SourceHall", "targetWarehouseLocation":"DestHall", "materialPools": { "Identifier":"MP01", "description": null, "productType":”Slab” } } Delete 0.0.52.0 Allow client to delete a link. HTTP Request DELETE /instrasite/scheduling-api/v1/links/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) 30036 When a link is used by a scheduled movement. Response 404 (NotFound) When warehouse location not found. Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 152/722 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 153/722 Material Pools Save (add or update) 0.0.45.0 Allows to create a MaterialPool. HTTP Request PUT /instrasite/scheduling-api/v1/material-pools/{identifier} 0.0.47.0 Request Body { …, description (string, optional), productType (string), links { (string), … } } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) Response 403 (Forbidden) 30018 Link not found 30019 Product type is null or empty 30006 Identifier is null or empty Response 409 (Conflict) 30017 One material pool exists with the same identifier Example { …, "description": null, "productType":"Slab", "links":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 154/722 Get by identifier 0.0.45.0 HTTP Request GET /intrasite/scheduling-api/v1/material-pools/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { identifier (string), description (string, optional), productType (string) } Response 404 (NotFound) Example { "requestedBy": null, “requestedAt: “0001-01-01T00:00:00+00:00”, "context": null, "identifier": "MP01", "description": null", "productType": "Slab" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 155/722 Delete 0.0.45.0 Allow client to delete a material pool. HTTP Request DELETE /intrasite/scheduling-api/v1/material-pools/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) 30025 When a material pool has an associated link. Response 404 (NotFound) When material pool not found. Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 156/722 Composition Save (add or update) Allows to create or modify a composition. HTTP Request PUT /intrasite/scheduling-api/v1/compositions/{identifier} Request Body { … Label (string), VehicleSet { Trucks [{ Number (uint), Capacity (uint) }], Wagons [{ Number (uint), Capacity (uint), SubType (string) }], GenericVehicles [{ Number (uint), Type (string) }] } } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) 30034 Repeated vehicle 30033 Specific type in generic vehicle Response 403 (Forbidden) 30006 Identifier is Null or Empty Response 409 (Conflict) 30039 Composition Identifier Already Exists Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 157/722 Example { …, vehicleSet { "trucks": [ { "number": 1, "capacity": 5 } ], "wagons": [ { "number": 1, "capacity": 20, "subType": "largeWagon" } ], "genericVehicles": [ { "number": 1, "type": "Locomotive" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 158/722 Get composition by identifier Retrieve a composition by its identifier. HTTP Request GET /intrasite/scheduling-api/v1/compositions/{identifier} Responses Response 200 (Ok) { identifier (string), Label (string), VehicleSet { Trucks [{ Number (uint), Capacity (uint) }], Wagons [{ Number (uint), Capacity (uint), SubType (string) }], GenericVehicles [{ Number (uint), Type (string) }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 159/722 Response 404 (NotFound) Example { "identifier": "Composition01", "label": "C01", "vehicleSet":{ "trucks": [ { "number": 1, "capacity": 5 } ], "wagons": [ { "number": 1, "capacity": 10, "subType": "testWagon1" }, { "number": 1, "capacity": 20, "subType": "testWagon2" } ], "genericVehicles": [ { "number": 1, "type": "locomotive" } ] } } GetAll Allow client to retrieve all compositions Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 160/722 HTTP Request GET /instrasite/scheduling-api/v1/compositions Responses Response 200 (Ok) [ { identifier (string), VehicleSet { Trucks [{ Number (uint), Capacity (uint) }], Wagons [{ Number (uint), Capacity (uint), SubType (string) }], GenericVehicles [{ Number (uint), Type (string) }] } }, … ] Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 161/722 [ { "identifier": "Composition01", "label": "C01", "vehicleSet":{ "trucks": [ { "number": 1, "capacity": 5 } ], "wagons": [ { "number": 1, "capacity": 10, "subType": "testWagon1" }, { "number": 2, "capacity": 20, "subType": "testWagon2" } ], "genericVehicles": [ { "number": 1, "type": "locomotive" } ] } }, { "identifier": "Composition02", "label": "C02", "vehicleSet":{ "trucks": [ { "number": 1, "capacity": 5 } ], "wagons": [ { "number": 2, "capacity": 10, "subType": "testWagon1" }, { "number": 2, "capacity ": 20, "subType": "testWagon2" Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 162/722 } ], "genericVehicles": [ { "number": 2, "type": "locomotive" } ] } } ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 163/722 Delete Allow client to delete a composition. HTTP Request DELETE /intrasite/scheduling-api/v1/compositions /{identifier} Request Body { } Responses Response 200 (Ok) Response 403 (Forbidden) 30040 Composition has one or more availabilities Response 404 (NotFound) Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 164/722 Availability Save (add or update) Allows to create or modify an availability for a composition. HTTP Request PUT /intrasite/scheduling-api/v1/availabilities/{identifier} Request Body { … scheduledAt { start (DateTimeOffset), end (DateTimeOffset) }, shiftIdentifier (string, optional), compositionIdentifier (string), VehicleSet { Trucks [{ Number (uint), Capacity (uint) }], Wagons [{ Number (uint), Capacity (uint), SubType (string) }], GenericVehicles [{ Number (uint), Type (string) }] } } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) 30034 Repeated vehicle Response 403 (Forbidden) 30052 Vehicle is not part of the composition 30041 A composition for the availability was not found 30053 An availability for the same composition in the same time frame already exists Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 165/722 Example { …, "scheduledAt": { "start": "2021-05-25T11:45:05.692Z", "end": "2021-05-25T11:45:05.692Z" }, "shiftIdentifier": "Morning", "compositionIdentifier": "Composition01", "vehicleSet":{ "trucks": [ { "number": 1, "capacity": 5 } ], "wagons": [ { "number ": 1, "capacity": 10, "subType": "testWagon1" }, { "number": 2, "capacity": 20, "subType": "testWagon2" } ], "genericVehicles": [ { "number ": 1, "type": "locomotive" } ] } } Get availability shift by custom filter 0.0.46.0 Retrieve a shift by query. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 166/722 HTTP Request POST /intrasite/scheduling-api/v1/availability/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … } } Examples Get an availability by start and end: Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 167/722 { "Query": { "Body": { “Operator":"equal", "Left":{ "Name":"CompositionIdentifier", "Left":{ "Type":"Availability", "Name":"s", "nodeType":"parameter" }, "nodeType":"property" }, "Right":{ "Value":"Composition01", "Type":"String", "nodeType":"constant"}, "nodeType":"binary" }, "Parameters":["s"], "nodeType":"lambda" }, "Select":null, "Paging":null, "OrderBy":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 168/722 Responses Response 200 (Ok) Example { "totalPages": 1, "items": [ { "scheduledAt": { "start": "2021-05-25T12:03:06+00:00", "end": "2021-05-26T12:03:06+00:00" }, "compositionIdentifier": "Composition01", "excludedVehiclesIdentifiers": [] }, { "scheduledAt": { "start": "2021-05-26T13:03:06+00:00", "end": "2021-05-27T12:03:06+00:00" }, "compositionIdentifier": "Composition01", "vehicleSet": { "trucks": [], "wagons": [], "genericVehicles": [] } } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 169/722 Delete 0.0.44.0 Allow client to delete an availability for a composition. HTTP Request DELETE /intrasite/scheduling-api/v1/availability /{identifier} Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 170/722 4.5. Bay Create 0.0.44.0 Allow client to create a bay. This method is triggered by the local system to describe the local structure of the site HTTP Request POST /location-api/v1/bays Request Body { … bay : { identifier (string), label (string), metadata (json, optional), associatedLocations [ (string), …], associatedPrinter (string), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional), maxNumberOfEquipments (int), bayTransportModes [ { transportMode (string) = [‘Truck’, ‘Wagon’, ‘Vessel’], capacity (int), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional) }, …] } } Responses Response 201 (Created) Response 403 (Forbidden) One or more associated locations doesn’t exist. Response 409 (Conflict) Bay with identifier '{0}' already exists Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 171/722 Example { …, "bay": { "identifier": "ID000000", "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.6646296+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "maxNumberOfEquipments": 0 } } Notification(s) { "notificationType": "Create" "resourceType": "bay", "scope": "LIE", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 172/722 Update 0.0.44.0 Allow client to update bay information. This method is triggered by the local system to describe the local structure of the site HTTP Request PUT /location-api/v1/bays/{identifier} Request Parameters identifier (string) Request Body { … bay : { label (string), metadata (json, optional), associatedLocations [ (string), …], associatedPrinter (string), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional), maxNumberOfEquipments (int), bayTransportModes [ { transportMode (string) = [‘Truck’, ‘Wagon’, ‘Vessel’], capacity (int), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional) }, …] } } Responses Response 200 (Ok) Response 201 (Created) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 173/722 Example { …, "bay": { "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.4246253+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "state": "Open", "maxNumberOfEquipments": 0, "identifier": "ID000000", "associatedLocations" : ["ID000000"] } } Notification(s) { "notificationType": "Update" "resourceType": "bay", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 174/722 Partial Update 0.0.44.0 Allow client to partially update bay information. This method is triggered by the local system to describe the local structure of the site HTTP Request PATCH /location-api/v1/bays/{identifier} Request Parameters identifier (string) Request Body { … bay: [ { value (json), path (string), op (string) }, … ] } Responses Response 204 (No Content) Response 404 (NotFound) Example { … "bay": [ { "value": “Closed”, "path": "state", "op": "replace", }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 175/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "bay", "scope": "", "sender": "Artemis.Material", "data": { "id": "ID000000", "context": { "Date": "2020-10-15T23:45:51.4590818+02:00" } } } } Change bay state When a client needs to update the bay state (open or closed), it has to call the partial update method of the location. To do that, it needs to call the PATCH method of the location (see Update location) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 176/722 Get by identifier 0.0.44.0 Allow client to retrieve a bay by its reference HTTP Request GET /location-api/v1/bays/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { identifier (string), label (string), creationDate (datetime), 0.0.69.0 lastModificationDate (datetime), 0.0.69.0 metadata (json, optional), associatedLocations [ (string), …], associatedPrinter (string), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional), maxNumberOfEquipments (int), bayTransportModes [ { transportMode (string) = [‘Truck’, ‘Wagon’, ‘Vessel’], capacity (int), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional) }, …] } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 177/722 Example { "label": "ID000000", "creationDate": "2020-10-15T11:14:56.7566605+00:00", "lastModificationDate": "2020-10-15T11:14:56.7566605+00:00", "metadata": { "Prop1": "2020-10-15T23:31:24.4246253+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "associatedLocations": [ "ID000000" ], "associatedPrinter": null, "state": "Open", "stateMetadata": {}, "maxNumberOfEquipments": 0, "bayTransportModes": [], "identifier": "ID000000" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 178/722 Get by custom filter 0.0.44.0 Allow client to retrieve a(some) bay(s) responding to one or several criterias and ordered by one or several properties. HTTP Request POST /location-api/v1/bays/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 179/722 Examples Get all Bay(s) with identifier ‘ID000000’ { "query": { "operator": "equal", "left": { "name": "identifier", "nodeType": "property" }, "right": { "value": "ID000000", "nodeType": "constant" }, "nodeType": "binary" }, "select": null, "paging": null, "orderBy": null } Get all Bay(s) in WarehouseLocation ‘ID01’ { "query": { "nodeType":"call", "methodName":"InLocation", "arguments":[ { "nodeType":"constant", "value":"ID01" } ] } } Result(s): Bays ‘B01’ and ‘B03’ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 180/722 Get all Bay(s) in WarehouseLocation ‘ID01’ and with transport mode ‘Vessel’ { "query": { "nodeType":"binary", "operator":"andAlso", "left":{ "nodeType":"call", "methodName":"InLocation", "arguments":[ { "nodeType":"constant", "value":"ID01" } ] }, "right":{ "nodeType":"call", "methodType":"Enumerable", "methodName":"Any", "arguments":[ { "nodeType":"property", "name":"BayTransportModes" }, { "nodeType":"lambda", "body":{ "nodeType":"binary", "operator":"equal", "left":{ "nodeType":"property", "name":"TransportMode", "left":{ "nodeType":"parameter", "type": "BayTransportModeResult", "name":"t" } }, "right":{ "nodeType":"constant", "value":"Vessel" } }, "parameters":[ "t" ] } ] } } } Result(s): Bays ‘B01’ and ‘B03’ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 181/722 Get all Bay(s) in WarehouseLocation ‘ID01’ and with transport mode ‘Vessel’ and state ‘Open’ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 182/722 { "query":{ "nodeType":"binary", "operator":"andAlso", "left":{ "nodeType":"call", "methodName":"InLocation", "arguments":[ { "nodeType":"constant", "value":"ID01" } ] }, "right":{ "nodeType":"binary", "operator":"andAlso", "left":{ "nodeType":"call", "methodType":"Enumerable", "methodName":"Any", "arguments":[ { "nodeType":"property", "name":"BayTransportModes", "left":null }, { "nodeType":"lambda", "body":{ "nodeType":"binary", "operator":"equal", "left":{ "nodeType":"property", "name":"TransportMode", "left":{ "nodeType":"parameter", "type": "BayTransportModeResult", "name":"t" } }, "right":{ "nodeType":"constant", "value":"Vessel", } }, "parameters":[ "t" ] } ] }, "right":{ "nodeType":"call", "methodType":"Enumerable", "methodName":"Any", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 183/722 "arguments":[ { "nodeType":"property", "name":"BayTransportModes" }, { "nodeType":"lambda", "body":{ "nodeType":"binary", "operator":"equal", "left":{ "nodeType":"property", "name":"State", "left":{ "nodeType":"parameter", "type": "BayTransportModeResult", "name":"t" } }, "right":{ "nodeType":"constant", "value":"Open", } }, "parameters":[ "t" ] } ] } } } } Result(s): Bays ‘B01’ and ‘B03’ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 184/722 Responses Response 200 (Ok) { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), label (string), metadata (json, optional), associatedLocations [ (string), …], associatedPrinter (string), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional), maxNumberOfEquipments (int), bayTransportModes [ { transportMode (string) = [‘Truck’, ‘Wagon’, ‘Vessel’], capacity (int), state (string) = [‘Open’, ‘Closed’], stateMetadata (json, optional) }, …] }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 185/722 Example { "totalPages": 1, "items": [ { "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.4246253+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "associatedLocations": [], "associatedPrinter": null, "state": "Open", "stateMetadata": {}, "maxNumberOfEquipments": 0, "bayTransportModes": [], "identifier": "ID000000" } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 186/722 Transport modes allowed & maximum number of equipments 0.0.44.0 This method is used to configure a bay according to the transport modes allowed on it and the maximum number of equipments per transport mode allowed. HTTP Request PUT /location-api/v1/bays/{identifier}/transport-modes/{mode} Request Parameters identifier (string) mode (string) Request Body { … bayTransportMode : { capacity (int), state (string, optional) = [‘Open’, ‘Closed’], stateMetadata (int, optional) } } Responses Response 200 (Ok) Response 204 (NotFound) Response 400 (BadRequest) Example { …, "bayTransportMode": { "capacity": 10, "state": "Open", "stateMetadata": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 187/722 Delete 0.0.44.0 Allow client to delete a bay. This method is triggered by the local system to describe the local structure of the site If a vehicle is on the bay, the vehicle is not deleted but is no more localized HTTP Request DELETE /location-api/v1/bays/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) If a Vehicle is on the bay, the Vehicle is not deleted but is no more localized. If this request encounters an error, a ‘Forbidden’ is sent. 0.0.57.0 It is forbidden to delete a bay when linked to a gate. Call 0.562 Create or update and remove the bay from the “associatedBays” list before deleting the bay. Response 404 (NotFound) Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 188/722 Notification { "notificationType": "Delete" "resourceType": "bay", "scope": "", "sender": "Artemis.Material", "data": { "context": { "key": "value" }, "id": "ID000000" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 189/722 4.6. Gate Create or update 0.0.57.0 Allow client to create a gate. This method is triggered by the local system to describe the local structure of the site. A gate can be linked to multiple bays. HTTP Request PUT /location-api/v1/gates Request Body { … identifier (string), label (string), metadata (json, optional), associatedBays [ (string), …], //List of bay identifiers linked to the gate } Responses Response 200 (OK) Response 403 (Forbidden) One or more associated bays doesn’t exist. Example { …, "identifier": "ID000000", "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.6646296+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "associatedBays": ["bay1", "bay2"] } } Delete 0.0.57.0 Allow client to delete a gate. This method is triggered by the local system to describe the local structure of the site. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 190/722 HTTP Request DELETE /location-api/v1/gates/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Get by identifier 0.0.57.0 Allow client to retrieve a gate by its reference HTTP Request GET /location-api/v1/gates/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { identifier (string), label (string), metadata (json, optional), associatedBays [ (string), …], } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 191/722 Example { "label": "ID000000", "metadata": { "Prop1": "2020-10-15T23:31:24.4246253+02:00", "Prop2": "Me Against the world", "Prop3": 2018 }, "associatedBays": [ "ID000000" ], "identifier": "ID000000" } Get by custom filter 0.0.57.0 Allow client to retrieve a(some) bay(s) responding to one or several criterias and ordered by one or several properties. HTTP Request POST /location-api/v1/gates/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 192/722 4.7. Production Line Save (add or update) 0.0.44.0 This method is used to save (add or update) a production line. HTTP Request PUT /material-api/v1/production-lines/{identifier} Request Parameters identifier (string) Request Body { … name (string), inputWarehouseLocations ( [ { identifier (string) }, … ], optional), outputWarehouseLocations ( [ { identifier (string) }, … ], optional), metadata (json, optional) } Responses Response 200 (Ok) Response 400 (BadRequest) Warehouse location does not exists Response 409 (Conflict) Production Line with identifier '{0}' already exists Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 193/722 Example { …, "name": "string", "inputWarehouseLocations": [ { "identifier": "string" } ], "outputWarehouseLocations": [ { "identifier": "string" } ], "metadata": {} } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 194/722 Search gates by location { "query":{ "nodeType":"call", "methodName":"Any", "arguments":[ { "nodeType":"property", "name":"Bays" }, { "nodeType":"lambda", "body":{ "nodeType":"call", "methodName":"InLocation", "arguments":[ { "nodeType":"parameter", "name":"b" }, { "nodeType":"constant", "value":"LocationId" } ] }, "parameters":[ "b" ] } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 195/722 Notification(s) { "notificationType": "Created / Updated" "resourceType": "productionLine", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "identifier": "ID000000", "name": "name" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 196/722 Get by identifier 0.0.44.0 This method is used to get a production line. HTTP Request GET /material-api/v1/production-lines/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { name (string), inputWarehouseLocations ( [ { identifier (string) }, … ], optional), outputWarehouseLocations ( [ { identifier (string) }, … ], optional), inputSequence ( [ { index (int), lmiContext (string), lmiNumber (string) }, … ], optional), metadata (json, optional) } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 197/722 Example { "name": "name", "inputWarehouseLocations": [ { "identifier": "ID000000" }, { "identifier": "ID000001" } ], "outputWarehouseLocations": [ { "identifier": "ID000002" }, { "identifier": "ID000003" } ], "inputSequence": [], "metadata": { "date": "2020-10-20T15:26:32.060015+02:00", "prop1": "value1", "prop2": 5.35 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 198/722 Get occupancies of input locations 0.0.44.0 This method is used to get a production line. HTTP Request GET /material-api/v1/production-lines/{identifier}/input-warehouse-locations Request Parameters identifier (string) Responses Response 200 (Ok) { productionLineName (string), inputLocations : [ { identifier (string), occupancy (int), occupancyInGrossTons (long), occupancyInNetTons (long), availableForInternalTransport (int), availableForInternalTransportInGrossTons (long), scheduledOnProductionLine (int), scheduledOnProductionLineInGrossTons (long), blocked (int), blockedInGrossTons (long), unavailable (int), unavailableInGrossTons (long), leafLocations (int), emptyLeafLocations (int), fullLeafLocations (int), partiallyFilledLeafLocations (int), upperThresholdInGrossTons (long), lowerThresholdInGrossTons (long), capacity (long) }, … ] } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 199/722 Example { "productionLineName": "name", "inputLocations": [ { "identifier": "ID000000", "label": "ID000000", "occupancy": 0, "occupancyInGrossTons": 0, "occupancyInNetTons": 0, "availableForInternalTransport": 0, "availableForInternalTransportInGrossTons": 0, "scheduledOnProductionLine": 0, "scheduledOnProductionLineInGrossTons": 0, "blocked": 0, "blockedInGrossTons": 0, "unavailable": 0, "unavailableInGrossTons": 0, "leafLocations": 3, "emptyLeafLocations": 3, "fullLeafLocations": 0, "partiallyFilledLeafLocations": 0, "upperThresholdInGrossTons": 0, "lowerThresholdInGrossTons": 0, "capacity": 1000 }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 200/722 Save Input Sequence 0.0.44.0 Allow to set the input sequence. HTTP Request PUT /material-api/v1/production-lines/{identifier}/input-sequence Request Parameters identifier (string) Request Body { … materials [ { lmiContext (string), lmiNumer (string), sequence { value (datetime) => DateSequence or order (string), => FabricationOrderSequence orderSequence (int), orderMaterialSequence (int) or value (long) => NumberSequence } }, … ] } Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) When sequenced materials are not sequenced with the same sequence type Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 201/722 Example { "materials":[ { "lmiContext":"Ctx", "lmiNumber":"00", "sequence":{ "order":"Order0", "orderSequence":0, "orderMaterialSequence":0 } }, { "lmiContext":"Ctx", "lmiNumber":"01", "sequence":{ "order":"Order1", "orderSequence":1, "orderMaterialSequence":1 } }, … ] } Notification(s) { "notificationType": "Updated" "resourceType": "productionLine", "scope": "", "sender": "", "data": { "identifier": "PL01", "name": "name", "originalRequestInfo": { "requestedAt": "0001-01-01T01:00:00+01:00", "requestedBy": null }, "context": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 202/722 Get Input Sequence 0.0.44.0 This method is used to get an input sequence HTTP Request GET /material-api/v1/production-lines/{identifier}/input-sequence Request Parameters identifier (string) Responses Response 200 (Ok) { materials [ { locationStatus (string), location { identifier (string), parents [ (string), … ] }, netWeight (int, optional), grossWeight (int), length (double, optional), width (double), thickness (double), lmiContext (string), lmiNumer (string), sequence { value (datetime) => DateSequence or order (string), => FabricationOrderSequence orderSequence (int), orderMaterialSequence (int) or value (long) => NumberSequence } }, … ] } Response 404 (NotFound) Production line does not exist Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 203/722 Example { "materials":[ { "locationStatus":"OnCorrectYard", "location":{ "identifier":"L01", "parents":[ "LParent" ] }, "netWeight":101, "grossWeight":201, "length":301.0, "width":401.0, "thickness":501.0, "lmiContext":"Ctx", "lmiNumber":"00", "sequence":{ "value":"2020-10-20T16:46:23.3540804+02:00" } }, { "locationStatus":"OnCorrectYard", "location":{ "identifier":"L01", "parents":[ "LParent" ] }, "netWeight":102, "grossWeight":202, "length":302.0, "width":402.0, "thickness":502.0, "lmiContext":"Ctx", "lmiNumber":"01", "sequence":{ "value":"2020-10-20T16:46:23.3540804+02:00" } }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 204/722 Remove input sequence 0.0.44.0 Allow to remove an input sequence HTTP Request DELETE /material-api/v1/production-lines/{identifier}/input-sequence Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Production line does not exist Example { … } Notification { "notificationType": "Updated" "resourceType": "productionLine", "scope": "", "sender": "Artemis.Material", "data": { "identifier": "ID000000", "name": "name" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 205/722 Save Sequenced Material 0.0.44.0 Allow to insert a material inside the current input sequence. HTTP Request PUT /material-api/v1/production-lines/{identifier}/input-sequence/sequenced-materials Request Parameters identifier (string) Request Body { … lmiContext (string), lmiNumer (string), sequence { value (datetime) => DateSequence or order (string), => FabricationOrderSequence orderSequence (int), orderMaterialSequence (int) or value (long) => NumberSequence } } Responses Response 200 (Ok) Response 400 (BadRequest) 502 Material unit does not exist Response 403 (Forbidden) 600 When the sequence type is different from existing Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 206/722 Example { "lmiContext":"Ctx", "lmiNumber":"01", "sequence":{ "value":"2020-10-20T16:31:38.2559937+02:00" } } Notification(s) { "notificationType": "Updated" "resourceType": "productionLine", "scope": "", "sender": "", "data": { "identifier": "PL01", "name": "name", "originalRequestInfo": { "requestedAt": "0001-01-01T01:00:00+01:00", "requestedBy": null }, "context": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 207/722 Remove Sequenced Material 0.0.44.0 Allow to remove sequenced material from an input sequence HTTP Request DELETE /material-api/v1/production-lines/{identifier}/input-sequence/sequencedmaterials/context={context}&number={number} Request Parameters identifier (string) context (string) number (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Production line does not exist, material unit does not exist or material unit is not in the input sequence Example { … } Notification { "notificationType": "Updated" "resourceType": "productionLine", "scope": "", "sender": "Artemis.Material", "data": { "identifier": "ID000000", "name": "name" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 208/722 Delete 0.0.44.0 This method is used to delete a production line. HTTP Request DELETE /material-api/v1/production-lines/{identifier} Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) Example { … } Notification { "notificationType": "Deleted" "resourceType": "productionLine", "scope": "", "sender": "Artemis.Material", "data": { "identifier": "ID000000", "name": "name", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 209/722 4.8. Transport Save for a loading site (Create / Update) 0.0.34.0 If optional field ‘IsChartered’ is set to null (or not set), the LI state will be ‘Created’. Once this field is changed to ‘false’, the LI will be ‘Ordered’. Otherwise (IsChartered is ‘true’), the state will be ‘Confirmed’. Whenever the field ‘IsChartered’ of LI is set to ‘true’, there is no way to change it back to ‘false’ neither ‘null’, as the Transport is actually ready for being executed. Note that field ‘IsChartered’ of LI can be changed from null to ‘false’ and vice versa, as long as it is not set to ‘true’. 0.0.47.0 See section 4.16 for more explanation about transport states. HTTP Request PUT /transport-api/v1/transports/{identifier} 0.0.39.0 Request Parameters identifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Request Body Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 210/722 { … transport { owner (string), type (string) = [‘shipment’, ’intrasite’], mode (string) = [‘truck’, ‘wagon’, ‘barge’, ‘vessel’, ‘airplane’], urgent (bool), supplierIdentifier (string, optional), metadata (json, optional), lastTmsMesUpdateTimestamp (datetime, optional), 0.0.63.0 lastTmsMesUpdateBy (string, optional), 0.0.63.0 shuttle (bool), 0.0.50.0 internalMetadata (json, optional), 0.0.57.0 constraints [ { constraintType (string) = [FullTrain, MaximumLength, CustomsDocumentsRequired, MaxAuthorizedMass, MaxAuthorizedChargePerWagon, MaxAuthorizedChargePerVehicle 0.0.69.0, DerogationMaxAuthorizedMass, MaximumTonnage, EquipmentTypeNotToUse, EquipmentTypeToUse, MaximumNumberOfVehicles, RequestedNumberOfVehicles, MinimumNumberOfVehicles, MaxMaterialUnitWeight, DeadFreightMinimumWeight, MinimumDistanceCoilsCradle, FreeText, MaxTrainGrossWeight, … 0.0.70.0] 0.0.53.0 constraintValue (string), constraintUnit (string), 0.0.71.0 requestedVehicleTypeIdentifier (string, optional) } ], equipments [ { 0.0.78.0 identifier (string), vehicleTypeIdentifier (string, optional), vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional), unloadingLocationIdentifiers (string[], optional) 1.84.0 }, …], shipmentAsWork (bool) 1.84.0 loadingInstruction { identifier (string), arrivalTimeSlotStrict (bool, optional), arrivalTimeSlotEarliestDateTime (datetime, optional), arrivalTimeSlotEarliestTimeIgnored (bool, optional), arrivalTimeSlotLatestDateTime (datetime, optional), arrivalTimeSlotLatestTimeIgnored (bool, optional), estimatedDepartureDateTime (datetime, optional), estimatedDepartureTimeIgnored (bool, optional), adjustedDepartureDateTime (datetime, optional), 0.0.72.0, shuntingDateTime (datetime, optional), shuntingTimeIgnored (bool, optional), isChartered (bool, optional), 0.0.47.0 remarks (string[], optional), deprecated 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 211/722 internalMetadata (json, optional), 0.0.56.0, metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string) = [CustomsDocumentsRequired, EquipmentTypeNotToUse, EquipmentTypeToUse, FreeText, MaxAuthorizedMass, DerogationMaxAuthorizedMass, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], materialGroups [ { identifier (string), earliestStartLoadingDateTime (datetime, optional), earliestStartLoadingTimeIgnored (bool, optional), latestEndLoadingDateTime (datetime, optional), latestEndLoadingTimeIgnored (bool, optional), materialSelectionCriteriumProperty (string, optional) = [‘ScaleUpArticleId’, ‘OrderItemId’, ‘ScheduledAgreementId’, ‘ShipmentInstructionId’, ‘ShipmentProgramId’, …], materialSelectionCriteriumValue (string, optional), materialSelectionCriteriumRemark (string, optional), logisticProductTypeIdentifier (string), isLocked (bool), remarks (string[], optional), deprecated 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 metadata (json, optional), 0.0.61.0 equipmentIdentifiers (string[], optional), 0.0.78.0 constraints [ 0.0.53.0 { constraintType (string) = [EquipmentTypeNotToUse, EquipmentTypeToUse, MaxMaterialUnitWeight, MinimumDistanceCoilsCradle, FreeText, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], unloadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string) }, requestedWeight { min (int, optional), max (int, optional), target (int, optional) } (optional), requestedNumberOfUnits { min (int, optional), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 212/722 max (int, optional), target (int, optional) } (optional), materialUnits [ { lmiContext (string), lmiNumber (string), mustLoad (bool, optional), locationLabel (string, optional) }, … ], equipmentGroup { identifier (string), sequence (int, optional), unloadingTransportLocationIdentifier (string), 0.0.78.0 loadingTransportLocationIdentifier (string), 0.0.78.0 targetEquipmentPublicIdentifier (string, optional), remarks (string[], optional), deprecated 0.0.53.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string) = [MaximumLength, CustomsDocumentsRequired, MaxAuthorizedChargePerWagon, MaxAuthorizedChargePerVehicle 0.0.69.0, MaxAuthorizedMass, MaximumTonnage, EquipmentTypeNotToUse, EquipmentTypeToUse, MaximumNumberOfVehicles, RequestedNumberOfVehicles, MinimumNumberOfVehicles, MaxMaterialUnitWeight, MinimumDistanceCoilsCradle, FreeText, MaxTrainGrossWeight, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ] } (optional), }, … ], loadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string), }, }, preregistration 0.0.48.0 (optional) { type (string)= ['truck', 'ship'] executingSupplierIdentifier (string, optional), 0.0.74.0 driverOrCaptainNames [ (string), … ] (optional), tractorName (string, optional), trailerName (string, optional), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 213/722 trailerType (string, optional), carrier (string, optional), tare (string, optional), derogationMass (long, optional), derogationCertificateNumber (string, optional), grossVehicleWeightRating (long, optional), shipName (string, optional), imo (string, optional), vin (string, optional), eni (string, optional) } } } Transport â–ª owner (string) Name of TMS owner of the transport here the TMS which created and updates the loading instructions on the transport â–ª type (string) Define the type of transport as Shipment or Intrasite â–ª mode (string) Transport mode â–ª urgent (bool) Specify if the transport is urgent or not â–ª shipmentAsWork (bool) 1.84.0 â–ª supplierIdentifier (string, optional) Identifier of the supplier in the TMS â–ª metadata (json, optional) â–ª lastTmsUpdateTimestamp (datetime, optional) Timestamp when the last update of the loading instruction has been done in the TMS owner. Only a newer timestamp may update a TRS. This is done to avoid updating a TRS with an old LI message received from a TMS â–ª lastTmsUpdateBy (string, optional) User who has done the last update of the loading instruction in the TMS owner. â–ª shuttle (bool), 0.0.50.0 Supply Chain can book shuttles. These are vehicles that will go back and forth between 2 places. For example in FOS there are ship shuttles between Fos and Sagunto and there are truck shuttles Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 214/722 with one of their customer. Local teams/systems have a need to if a tranport is part of this "shuttle contract" or not, as different rules might apply to loading them. Constraint (available on levels Transport, LoadingInstruction, MaterialGroup and EquipmentGroup) â–ª constraintType (string): see definition of DTO above â–ª constraintValue (string) â–ª constraintUnit (string) â–ª requestedVehicleTypeIdentifier (string, optional): only available on Transport constraint level LoadingInstruction â–ª arrivalTimeSlotStrict (bool, optional) Defined if the time slot must be strictly respected (true) or not (false). If the control was strict, the truck VMS can refuse the entry of the truck, that's just the difference â–ª arrivalTimeSlotEarliestDateTime (datetime, optional) Date and time of the earliest arrival expected for the transport on the loading site Set the UTC date at the Loading Location e.g. January 5, 2021 or January 5, 2021 10.30'15’’ Whatever the time zone where the HMI is (Belgium or USA for example) the date and time displayed is ALWAYS the same. Note that 00:00 and 23:59 are also valid hours â–ª arrivalTimeSlotEarliestTimeIgnored (bool, optional) Ignore time of previous field. Indicate if the hour of arrivalTimeSlotEarliestDateTime should be displayed or not. When TimeIgnored is True, ArrivalTimeSlotEarliest is displayed as '5 jan 21:10' When TimeIgnored is not defined or false, ArrivalTimeSlotEarliest is displayed as '5 jan' â–ª arrivalTimeSlotLatestDateTime (datetime, optional) Date and time of the latest arrival expected for the transport on the loading site See field “arrivalTimeSlotEarliestDateTime” â–ª arrivalTimeSlotLatestTimeIgnored (bool, optional) See field “arrivalTimeSlotEarliestTimeIgnored” â–ª estimatedDepartureDateTime (datetime, optional) Date and time of estimated departure from the loading site See field “arrivalTimeSlotEarliestDateTime” â–ª estimatedDepartureTimeIgnored (bool, optional) See field “arrivalTimeSlotEarliestTimeIgnored” â–ª adjustedDepartureDateTime (datetime, optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 215/722 â–ª shuntingDateTime (datetime, optional) Date and time of end of operation when the local railway is made available Only defined if Mode is equal to Wagon See field “arrivalTimeSlotEarliestDateTime” â–ª shuntingTimeIgnored (bool, optional) See field “arrivalTimeSlotEarliestTimeIgnored” â–ª RequestedWeight (Mandatory if ‘requestedNumberOfUnits’ is not specified, else not allowed) Specify the requested weights for the material group. o o o â–ª Target: Target weight for the material group Min: Minimum weight for the material group Max: Maximum weight for the material group RequestedNumberOfUnits (Mandatory if ‘requestedWeight’ is not specified, else not allowed) Specify the requested number of units for the material group. Target: Target number of units for the material group Min: Minimum number of units for the material group Max: Maximum number of units for the material group Following rules are applied to RequestedWeight/RequestedNumberOfUnits settings: o Requested*Min may be empty or should be >= 0 (cannot be negative) o Requested*Target may be empty or should be >= 0 (cannot be negative) o Requested*Max may be empty or should be >=1 (cannot be negative) o It is not allowed to have Requested*Min == Requested*Target == Requested*Max == 0 o At least, Requested*Min or Requested*Target or Requested*Max should be defined and >= 0 (Min, Target) or >=1 (Max) o It is not allowed to have Requested*Min == Requested*Target == 0 AND Requested*Max == empty o When both are defined, Requested*Min should be <= Requested*Max o When both are defined, Requested*Min should be <= Requested*Target Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 216/722 o â–ª MaterialsSelectionCriterion Specify the selection criterion for the material group o o o â–ª When both are defined, Requested*Target should be <= Requested*Max Property Specify on which property the criterion is based Value Specify the value of the property to do the selection Remark Free text remark materialUnits o lmiContext (string) o lmiNumber (string) o mustLoad (bool, optional) o locationLabel (string, optional) â–ª internalMetadata (json) Used by Artemis Core to store and forward useful info (ex: for OTM) â–ª metadata (json) Used by Artemis Core to store and forward useful info (ex: for OTM) Can contain totalPlannedWeight (int), and loadingHalls (string[]) for road transports. MaterialGroup â–ª identifier Unique business identifier of the material group given by the TMS owner â–ª earliestStartLoadingDateTime (datetime, optional) Earliest start date and time of loading See field “arrivalTimeSlotEarliestDateTime” â–ª earliestStartLoadingTimeIgnored (bool, optional) Ignore time of previous field See field “arrivalTimeSlotEarliestTimeIgnored” â–ª latestEndLoadingDateTime (datetime, optional) Loading date and time at the latest See field “arrivalTimeSlotEarliestDateTime” â–ª latestEndLoadingTimeIgnored (bool, optional) Ignore time of previous field Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 217/722 â–ª See field “arrivalTimeSlotEarliestTimeIgnored” â–ª remarks (string[], optional) â–ª internalMetadata (json) Used by Artemis Core to store and forward useful info (ex: for OTM) â–ª equipmentGroup (object) The equipmentGroup a materialGroup belongs to. (rail only) â–ª metadata (json) EquipmentGroup â–ª identifier (string) â–ª sequence (int, optional) â–ª â–ª unloadingTransportLocationIdentifier (string) 0.0.78.0 Since version 0.0.78.0 this information is no longer needed since it can actually be deduced from the unloadingLocation of the materialGroup to which the EG belongs. loadingTransportLocationIdentifier (string) 0.0.78.0 Since version 0.0.78.0 this information is no longer needed since it can actually be deduced from the loadingLocation of the loading instruction to which the EG belongs. targetEquipmentPublicIdentifier (string, optional) â–ª internalMetadata (json, optional) â–ª metadata (json, optional) Can contain totalPlannedWeight (int) constraints (json, optional) see definition of DTO above â–ª â–ª Loading / unloading TransportLocation â–ª identifier (string) Unique business identifier of the loading location given by the TMS owner â–ª name (string) Business name of the loading location given by the TMS owner â–ª streetNameAndNumber (string) Street name and number â–ª postalCode (string) Postal code â–ª cityName (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 218/722 City name â–ª countryIsoCode (string) Country ISO Code â–ª warehouseLocationIdentifier (string, optional) â–ª origin (string) Preregistration (optional) It is possible for the to register trucks or ships in advance (before arriving at the mill). The VMS can use this information to create the vehicle when needed. â–ª type (string) = ['truck', 'ship'] The type of preregistration â–ª executingSupplierIdentifier (string, optional) In the pre-registration one could register the "supplier" (affreteur) and the "real executing supplier" (The Real company that will execute the transport). This can be the same or different from the supplier company. This will then be used by the VMS to pre-fill some fields during the registration of the truck when it arrives at the mill. â–ª driverOrCaptainNames [ (string), … ] (optional), The list of driver names â–ª tractorName (string, optional, truck specific) Platenumber of truck â–ª trailerName (string, optional, truck specific) Platenumber of trailer â–ª trailerType (string, optional, truck specific) â–ª carrier (string, optional, truck specific) â–ª tare (string, optional, truck specific), â–ª derogationMass (long, optional, truck specific), The mass that will override the MAM if given. â–ª derogationCertificateNumber (string, optional, truck specific), â–ª grossVehicleWeightRating (long, optional, truck specific), Truck specific properties â–ª shipName (string, optional, ship specific), â–ª imo (string, optional, ship specific), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 219/722 â–ª vin (string, optional, ship specific), â–ª eni (string, optional, ship specific) Equipments (optional) â–ª identifier (string) Provided by TMS â–ª vehicleTypeIdentifier (string, optional) Must exist as VehicleType (ex: carrier, tractor, barge, vessel, trailer, …) â–ª vehicleName (string, optional) Wagon number (will in most cases not be known) â–ª medata (json, optional) â–ª internalMetadata (json, optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 220/722 Constraints Constraint Name Unit FullTrain Boolean (Yes/No) MaximumLength Meters (0 numbers after ",") CustomsDocumentsRequired Boolean (Yes/No) MaxAuthorizedChargePerWagon Kg (up to 3 numbers after ",") MaxAuthorizedMassPerVehicle Kg (up to 3 numbers after ",") MaxAuthorizedMass Kg (up to 3 numbers after ",") DerogationMaxAuthorizedMass Kg(up to 3 numbers after ",") MaximumTonnage Kg (up to 3 numbers after ",") EquipmentTypeNotToUse Equipment Type PublicIdentifier EquipmentTypeToUse Equipment Type PublicIdentifier MaximumNumberOfVehicles Number (integer) RequestedNumberOfVehicles Number (integer) MinimumNumberOfVehicles Number (integer) MaxMaterialUnitWeight Kg, up to 3 numbers after "," DeadFreightMinimumWeight Kg, up to 3 numbers after "," MinimumDistanceCoilsCradle Meters, Up to 3 numbers after "," FreeText Text (No unit) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 221/722 Responses Response 200 (Ok) Response 400 (BadRequest) 28 Transport without LoadingInstruction At least one MaterialGroup item is required in the LoadingInstruction MaterialGroup are duplicated in the LoadingInstruction Predefined MaterialUnit is repeated in two MaterialGroups in the same LoadingInstruction ‘UnloadingTransportLocationIdentifier’ specified in MaterialGroup is not the same than the one given in related EquipmentGroup ‘LoadingTransportLocationIdentifier’ specified in EquipmentGroup not found in the LoadingInstruction ‘RequestedNumberOfUnits’ and ‘RequestedWeight’ cannot be defined at the same time At least Min, Target or Max of ‘RequestedNumberOfUnits’ or ‘RequestedWeight’ should be defined ‘RequestedNumberOfUnits’ or ‘RequestedWeight’ data unconsistency – see rules here above in properties description ‘MaterialSelectionCriteriumProperty’ set without ‘MaterialSelectionCriteriumValue’ ‘MaterialSelectionCriteriumValue’ set without ‘MaterialSelectionCriteriumProperty’ Any mandatory fields not specified in Transport/LoadingInstruction/MaterialGroup/EquipmentGroup Response 403 (Forbidden) 19 Transport ‘{0}' is closed or completed 28 ‘UnloadingTransportLocationIdentifier’ cannot be updated on MaterialGroup 28 Different ‘UnloadingTransportLocationIdentifier’ on the same EquipmentGroup within a Transport 29 Transport mode cannot be changed 34 Operation not allowed on Transport '{0}' when one LI is locked 36 Transport '{0}' could not be updated, because it is more recent than the request 0.0.51.0 49 Multiple LoadingInstructions not allowed on same Transport with bulk method 50 MaterialUnit(s) are marked for deletion 51 MaterialUnit(s) not found 2733 Could not update LoadingInstruction because it's closed 2734 Could not update LoadingInstruction because it’s locked 2736 Could not update LoadingInstruction because it is in 'confirmed' state. 1.71.0 3001 Equipment: ‘{0}’ does not exist in transport 1.78.0 3002 Cannot delete equipment because it is linked to one or multiple material groups 1.78.0 3003 Cannot delete equipment because it is linked to one or multiple unloading material unit 1.81.0 68 Loading TransportLocation (site) cannot be updated (previous: '{0}' / new: '{1}') for Transport '{2}' 1.81.0 69 Equipment(s) are already linked to Transport '{0}' on site '{1}': {2} 1.81.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 222/722 Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 223/722 { … "transport": { "owner": "string", "type": "string", "mode": "string", "urgent": true, "supplierIdentifier": "string", "metadata": {}, "lastTmsUpdateTimestamp": "2020-03-31T11:23:09.481Z", "lastTmsUpdateBy": "string", "shuttle": true, "constraints": [ { "constraintType": "MaxAuthorizedMass", "constraintValue": "22000", "constraintUnit": "kg" }, { "constraintType": "DerogationMaxAuthorizedMass", "constraintValue": "22500", "constraintUnit": "kg" } ], "loadingInstruction": { "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-03-31T11:23:09.481Z", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-03-31T11:23:09.481Z", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-03-31T11:23:09.481Z", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-03-31T11:23:09.481Z", "shuntingTimeIgnored": true, "constraints": [], "miscRemarks": { }, "internalMetadata": {}, "materialGroups": [ { "identifier": "string", "earliestStartLoadingDateTime": "2020-03-31T11:23:09.481Z", "earliestStartLoadingTimeIgnored": true, "latestEndLoadingDateTime": "2020-03-31T11:23:09.481Z", "latestEndLoadingTimeIgnored": true, "metadata": "string", "unloadingTransportLocation": { "identifier": "string", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 224/722 "countryIsoCode": "string", "warehouseLocationIdentifier": "string", "origin": "string" }, "requestedWeight": { "min": 0, "max": 0, "target": 0 }, "requestedNumberOfUnits": { "min": 0, "max": 0, "target": 0 }, "remarks": [“remark”] "miscRemarks": { }, "materialUnits": [ { "lmiContext": "string", "grossWeight": 0, "lmiNumber": "string", "scaleUpMaterialUnitIdentifier": "string", "mustLoad": true, "locationLabel": "string" } ], "materialSelectionCriteriumProperty": "scaleUpArticleId", "materialSelectionCriteriumValue": "string", "materialSelectionCriteriumRemark": "string", "logisticProductTypeIdentifier": "string", "isLocked": true, "constraints": [], "internalMetadata": {}, "equipmentGroup": { "identifier": "string", "sequence": 0, "unloadingTransportLocationIdentifier": "string", "loadingTransportLocationIdentifier": "string", "targetEquipmentPublicIdentifier": "string", "remarks": [“remark”], "miscRemarks": { }, "internalMetadata": {}, "constraints": [] } } ], "shipmentAsWork": false, "loadingTransportLocation": { "identifier": "string", "name": "string", "streetNameAndNumber": "string", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 225/722 "postalCode": "string", "cityName": "string", "countryIsoCode": "string", "warehouseLocationIdentifier": "string", "origin": "string" }, "identifier": "string" }, "preregistration": { "type": "truck", "driverOrCaptainNames": [ "string" ], "vehicleName": "string", "trailerName": "string", "trailerType": "string", "tare": 0, "grossVehicleWeightRating": 0, "derogationMass": 0, "derogationCertificateNumber": "string", }, } } Notification(s) { "resourceType": "transport", "notificationType": "StateChanged" "scope": "", "sender": "Artemis.Core.Execution", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "oldValue": null, "newValue": "Confirmed", "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 226/722 For information, theses other notifications are also sent by micro services. { "resourceType": "transport", "notificationType": "Create" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": "ID000000", "type": "Shipment | Intrasite", 0.0.58.0 "originalRequestInfo": { "requestedAt": "2020-04-02T15:24:18.9494552+02:00", "requestedBy": "owner" }, "owner": "TMS", "instructions": null, "mode": "truck", "equipments” : [ { 0.0.78.0 "identifier" : "EQ0001", "vehicleTypeIdentifier" : "vehicleType1", "vehicleName" : "vehicleName1", "metadata" : {}, "internalMetadata" : {} }] } Or Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 227/722 { "resourceType": "transport", "notificationType": "Update" "scope": "", "sender": "Artemis.Core.Transport", "data": { "id": "ID000000", "type": "Shipment | Intrasite", 0.0.58.0 "context": { "key": "value" }, "owner": "ownerNEW", "mam": { "value": "22000", "derogation": "22200" }, "instructions": [ { "id": "72d444bc-c667-eb11-9360-10e7c6313bdb", "identifier": "ID111111.ID000000", 0.0.58.0 "transportIdentifier": "ID000000", "siteIdentifier": "ID111111", "materialGroups": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "equipmentIdentifiers": ["EQ0001"] }, { "identifier": "ID111111", "targetNumberOfUnits": 2, "equipmentIdentifiers": ["EQ0001"] } ] } ] }, "mode": "airplane", "equipments” : [ { 0.0.78.0 "identifier" : "EQ0001", "vehicleTypeIdentifier" : "vehicleType1", "vehicleName" : "vehicleName1", "metadata" : {}, "internalMetadata" : {} }], "previousData": { "materialGroups": { 1.73.0 "updated": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 228/722 "mustLoad": true, "weight": 10000 }, { "lmiContext": "LIE", "lmiNumber": "ID111111", "mustLoad": true, "weight": 10000 } ] }, { "identifier": "ID111111", "targetNumberOfUnits": 2, "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID222222", "mustLoad": true, "weight": 10000 }, { "lmiContext": "LIE", "lmiNumber": "ID333333", "mustLoad": true, "weight": 11111 } ] } ], "removed": [] }, "mam": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 229/722 { "resourceType": "loadingInstruction", "notificationType": "Create/Update" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 }, "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } } } { "resourceType": "loadingInstruction", "notificationType": "LoadingInstructionStateChanged", "sender": "Artemis.Core.Transport", "scope": "xxx", "data": { "identifier": "ID111111.ID000000", 0.0.58.0 "transportIdentifier": "ID000000", "transportType": "Shipment", 0.0.58.0 "siteIdentifier": "ID111111", "owner": "owner", "oldValue": "Created", "newValue": "Confirmed", "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "originalRequestInfo": { "requestedAt": "2020-04-15T17:12:34.5+02:00", "requestedBy": "Requester-33.0TMCSW" }, "context": {} } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 230/722 { "resourceType": "transport", "notificationType": "PartialUpdate" "scope": "", "sender": "Artemis.Core.Transport", "data": { "id": "ID000000", "type": "Shipment | Intrasite", 0.0.58.0 "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-02T15:30:11.741817+02:00", “requestedBy": "TMS" }, "definitionLevel": "fullyDefined", "instructions": [], "mode": "truck", "materialGroups": [{ "identifier": "ID000000", "targetWeight": null "targetNumberOfUnits": 1, "equipmentIdentifiers": ["EQ0001"] }] } } The notification ‘TransportFullyDefined’ is sent only when DefinitionLevel is updated from ‘Draft’ to ‘Fully’. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 231/722 { "resourceType": "transport", "notificationType": "TransportFullyDefined", "sender": "Artemis.Core.Transport", "scope": "xxx", "data": { "id": "TransportA-33.0TMCSW", "type": "Shipment | Intrasite", 0.0.58.0 "context": {}, "originalRequestInfo": { "requestedAt": "2020-04-15T17:12:34.5+02:00", "requestedBy": "Requester-33.0TMCSW" }, "owner": "MES-Owner", "instructions": [ { "id": "98db1a1c-ff7f-eb11-a2f0-001dd8b7466b", "siteIdentifier": "LIE", "mam": { 0.0.62.0 "value": 33333, "derogation": 44444 }, "materialGroups": [ { "identifier": "materialGroupA-33.0TMCSW", "targetNumberOfUnits": 4, "targetWeight": 40, 0.0.65.0 "materials": [ 0.0.65.0 { "lmiContext" : "LIE", "lmiNumber" : "ID000000", "mustLoad" : true, "Weight" : 10 } ], "equipmentIdentifiers": ["EQ0001"] } ] } ], "unloadingInstructions": [ 0.0.65.0 { "id": "1d32ace4-f36e-ec11-9377-10e7c6313bdb", "unloadingTransportLocation": { "siteIdentifier": "LIE", "locationIdentifier": "ID000000" }, "identifier": "ID000000", "materialGroups": [ { "loadingInstructionIdentifier": "ID000000", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 232/722 "materialGroupIdentifier": "ID000000" } ], "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "weight": 40, "equipmentIdentifier": “EQ0” 1.81.0 } ] } ], "equipments” : [ { 0.0.78.0 "identifier" : "EQ0001", "vehicleTypeIdentifier" : "vehicleType1", "vehicleName" : "vehicleName1", "metadata" : {}, "internalMetadata" : {} }], "mode": "wagon", "mam": { 0.0.62.0 "value": 11111, "derogation": 22222 } } ExecutionUpdated 1.84.0 This notification is being triggered after a transport instruction has been properly integrated in the execution context whenever a transport, a loading instruction or unloading inststruction has been changed in the instruction context. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 233/722 { "resourceType": "transport", "notificationType": "ExecutionUpdated" "scope": "", "sender": "Artemis.Core.Execution", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road", "transportType": "Shipment" } } Create Transport 0.0.61.0 HTTP Request POST /transport-api/v1/transport-headers/ 1.61.0 Request Body Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 234/722 { … transport { identifier (string), owner (string), type (string) = [‘shipment’, ’intrasite’], definitionLevel (string) = [‘Draft’, ‘FullyDefined’], mode (string) = [‘truck’, ‘wagon’, ‘barge’, ‘vessel’, ‘airplane’], urgent (bool), supplierIdentifier (string, optional), metadata (json, optional), lastTmsMesUpdateTimestamp (datetime, optional), 0.0.63.0 lastTmsMesUpdateBy (string, optional), 0.0.63.0 shuttle (bool), 0.0.50.0 internalMetadata (json, optional), 0.0.57.0 constraints [ { constraintType (string) = [FullTrain, MaximumLength, CustomsDocumentsRequired, MaxAuthorizedMass, MaxAuthorizedChargePerWagon, MaxAuthorizedChargePerVehicle 0.0.69.0, DerogationMaxAuthorizedMass, MaximumTonnage, EquipmentTypeNotToUse, EquipmentTypeToUse, MaximumNumberOfVehicles, RequestedNumberOfVehicles, MinimumNumberOfVehicles, MaxMaterialUnitWeight, DeadFreightMinimumWeight, MinimumDistanceCoilsCradle, FreeText, …] constraintValue (string), constraintUnit (string), 0.0.71.0 requestedVehicleTypeIdentifier (string, optional) } ], equipments [ { 0.0.78.0 identifier (string), vehicleTypeIdentifier (string, optional), vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional), unloadingLocationIdentifiers (string[], optional) 1.84.0 }, …], shipmentAsWork (bool) 1.84.0 } } Responses Response 200 (Created) Response 400 (BadRequest) Response 409 (Conflict) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 235/722 Example { … "transport": { "identifier": "string", "owner": "string", "type": "string", "mode": "string", "urgent": true, "supplierIdentifier": "string", "metadata": {}, "lastTmsUpdateTimestamp": "2020-03-31T11:23:09.481Z", "lastTmsUpdateBy": "string", "shuttle": true, "shipmentAsWork": false, "constraints": [ { "constraintType": "MaxAuthorizedMass", "constraintValue": "22000", "constraintUnit": "kg" }, { "constraintType": "DerogationMaxAuthorizedMass", "constraintValue": "22500", "constraintUnit": "kg" } ] } } Notification(s) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 236/722 { "resourceType": "transport", "notificationType": "Create" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": "ID000000", "type": "Shipment | Intrasite", "originalRequestInfo": { "requestedAt": "2020-04-02T15:24:18.9494552+02:00", "requestedBy": "owner" }, "owner": "TMS", "instructions": null, "mode": "truck", "equipments” : [ { 0.0.78.0 "identifier" : "EQ0001", "vehicleTypeIdentifier" : "vehicleType1", "vehicleName" : "vehicleName1", "metadata" : {}, "internalMetadata" : {} }] } 1.84.0 ExecutionUpdated see chapter ExecutionUpdated 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 237/722 Update Transport 0.0.61.0 HTTP Request PUT /transport-api/v1/transport-headers/{identifier} 1.61.0 Request Parameters identifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Request Body Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 238/722 { … transport { owner (string), type (string) = [‘shipment’, ’intrasite’], mode (string) = [‘truck’, ‘wagon’, ‘barge’, ‘vessel’, ‘airplane’], urgent (bool), supplierIdentifier (string, optional), metadata (json, optional), lastTmsMesUpdateTimestamp (datetime, optional), 0.0.63.0 lastTmsMesUpdateBy (string, optional), 0.0.63.0 shuttle (bool), 0.0.50.0 internalMetadata (json, optional), 0.0.57.0 constraints [ { constraintType (string) = [FullTrain, MaximumLength, CustomsDocumentsRequired, MaxAuthorizedMass, MaxAuthorizedChargePerWagon, MaxAuthorizedChargePerVehicle 0.0.69.0, DerogationMaxAuthorizedMass, MaximumTonnage, EquipmentTypeNotToUse, EquipmentTypeToUse, MaximumNumberOfVehicles, RequestedNumberOfVehicles, MinimumNumberOfVehicles, MaxMaterialUnitWeight, DeadFreightMinimumWeight, MinimumDistanceCoilsCradle, FreeText, …] constraintValue (string), constraintUnit (string) 0.0.71.0 requestedVehicleTypeIdentifier (string, optional) } ], equipments [ { 0.0.78.0 identifier (string), vehicleTypeIdentifier (string, optional), vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional), unloadingLocationIdentifiers (string[], optional) 1.84.0 }, …], shipmentAsWork (bool) 1.84.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 239/722 Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) 28 Transport without LoadingInstruction Response 403 (Forbidden) 19 Transport ‘{0}’ is closed or completed 0.0.72.0 29 Transport mode cannot be changed 34 Operation not allowed on Transport '{0}' when one LI is locked 36 Transport '{0}' could not be updated, because it is more recent than the request 0.0.51.0 49 Multiple LoadingInstructions not allowed on same Transport with bulk method 2733 Could not update LoadingInstruction because it's closed 2734 Could not update LoadingInstruction because it’s locked 2736 Could not update LoadingInstruction because it is in 'confirmed' state. 0.0.47.0 3002 Cannot delete equipment because it is linked to one or multiple material groups 1.78.0 3003 Cannot delete equipment because it is linked to one or multiple unloading material unit 1.81.0 69 Equipment(s) are already linked to Transport '{0}' on site '{1}': {2} 1.81.0 Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 240/722 { … "transport": { "identifier": "string", "owner": "string", "type": "string", "mode": "string", "urgent": true, "supplierIdentifier": "string", "metadata": {}, "lastTmsUpdateTimestamp": "2020-03-31T11:23:09.481Z", "lastTmsUpdateBy": "string", "shuttle": true, "shipmentAsWork": false, "constraints": [ { "constraintType": "MaxAuthorizedMass", "constraintValue": "22000", "constraintUnit": "kg" }, { "constraintType": "DerogationMaxAuthorizedMass", "constraintValue": "22500", "constraintUnit": "kg" } ] } } Notification(s) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 241/722 { "resourceType": "transport", "notificationType": "Update" "scope": "", "sender": "Artemis.Core.Transport", "data": { "id": "ID000000", "type": "Shipment | Intrasite", 0.0.58.0 "context": { "key": "value" }, "owner": "ownerNEW", "mam": { "value": "22000", "derogation": "22200" }, "instructions": [ { "id": "72d444bc-c667-eb11-9360-10e7c6313bdb", "identifier": "ID111111.ID000000", 0.0.58.0 "transportIdentifier": "ID000000", "siteIdentifier": "ID111111", "materialGroups": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "equipmentIdentifier": ["EQ0001"] }, { "identifier": "ID111111", "targetNumberOfUnits": 2, "equipmentIdentifier": ["EQ0001"] }, "mam": { "value": "22000", "derogation": "22200" } ] } ] }, "equipments” : [ { 0.0.78.0 "identifier" : "EQ0001", "vehicleTypeIdentifier" : "vehicleType1", "vehicleName" : "vehicleName1", "metadata" : {}, "internalMetadata" : {} }], "mode": "Truck" Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 242/722 } The notification ‘TransportFullyDefined’ is sent only when DefinitionLevel is updated from ‘Draft’ to ‘Fully’. 1.84.0 ExecutionUpdated see chapter ExecutionUpdated 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 243/722 Partial update 0.0.43.0 To be able to change Transport ‘DefinitionLevel’ to ‘FullyDefined’, every LI(s) within it should have the ‘Confirmed’ state. Otherwise, Artemis Core wil return back Forbidden (403) (see responses). 0.0.47.0 HTTP Request PATCH /transport-api/v1/transport-headers/{identifier} 1.61.0 Request Parameters identifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 244/722 Request Body { … transport: [ { value (Json), path (string), op (string) }, … ] } Responses Response 204 (NoContent) Response 403 (Forbidden) 19 Transport ‘{0}’ is closed or completed 0.0.72.0 261 Transport mode cannot be changed 35 Cannot change DefinitionLevel to FullyDefined because at least one loading instruction is not in 'Confirmed' state 0.0.47.0 3002 Cannot delete equipment because it is linked to one or multiple material groups 1.78.0 3003 Cannot delete equipment because it is linked to one or multiple unloading material unit 1.81.0 Response 404 (NotFound) Transport not found Example PATCH /transport-api/v1/transports/ID000000 { … "transport": [ { "value": { "metadata1":"value1"}, "path": "metadata", "op": "replace", }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 245/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "id": "ID000000", "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-02T15:30:11.741817+02:00", requestedBy": "TMS" }, "metadata": { "metadata1":"value1"}, "instructions": [], "mode": "truck", "equipments” : [ { 0.0.78.0 "identifier" : "EQ0001", "vehicleTypeIdentifier" : "vehicleType1", "vehicleName" : "vehicleName1", "metadata" : {}, "internalMetadata" : {} }] } } The notification ‘TransportFullyDefined’ is sent only when DefinitionLevel is updated from ‘Draft’ to ‘Fully’. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 246/722 { "resourceType": "transport", "notificationType": "TransportFullyDefined", "sender": "Artemis.Core.Transport", "scope": "xxx", "data": { "id": "TransportA-33.0TMCSW", "type": "Shipment | Intrasite", 0.0.58.0 "context": {}, "originalRequestInfo": { "requestedAt": "2020-04-15T17:12:34.5+02:00", "requestedBy": "Requester-33.0TMCSW" }, "owner": "MES-Owner", "instructions": [ { "id": "98db1a1c-ff7f-eb11-a2f0-001dd8b7466b", "siteIdentifier": "loadingTransportLocationA-33.0TMCSW", "mam": { 0.0.62.0 "value": 33333, "derogation": 44444 }, "materialGroups": [ { "identifier": "materialGroupA-33.0TMCSW", "targetNumberOfUnits": 4, "targetWeight": 40, 0.0.65.0 "materials": [ 0.0.65.0 { "lmiContext" : "LIE", "lmiNumber" : "ID000000", "mustLoad" : true, "Weight" : 10 } ] } ] } ], "unloadingInstructions": [ 1.65.0 { "id": "1d32ace4-f36e-ec11-9377-10e7c6313bdb", "unloadingTransportLocation": { "siteIdentifier": "LIE", "locationIdentifier": "ID000000" }, "identifier": "ID000000", "materialGroups": [ { "loadingInstructionIdentifier": "ID000000", "materialGroupIdentifier": "ID000000" Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 247/722 } ], "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "weight": 40 } ] } ], "mode": "wagon", "mam": { 0.0.62.0 "value": 11111, "derogation": 22222 } } 1.84.0 ExecutionUpdated see chapter ExecutionUpdated 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 248/722 Get by identifier Since version 0.0.71 we recommend to use the Artemis.Transport.Query service to retrieve this resource. The documentation is available directly in Swagger (http://+:5505/swagger) but is rather close to this one although some addititional information is available. 0.0.44.0 Retrieve a transport by identifier HTTP Request GET /transport-api/v1/transports/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 249/722 { identifier (string), owner (string), type (string), mode (string), definitionLevel (string) = [‘Draft’, ‘FullyDefined’], urgent (bool), supplierIdentifier (string), driverOrCaptainNames (string[]) = [‘’, ‘’, ‘’, …], derogationMass (int), derogationCertificateNumber (string), metadata (Json), grossVehicleWeightRating (int), lastTmsMesUpdateTimestamp (datetime, optional), 0.0.63.0 lastTmsMesUpdateBy (string, optional), 0.0.63.0 shuttle (bool), 0.0.50.0 constraints [ { constraintType (string) = [FullTrain, MaximumLength, CustomsDocumentsRequired, MaxAuthorizedChargePerWagon, MaxAuthorizedChargePerVehicle 0.0.69.0, MaxAuthorizedMass, DerogationMaxAuthorizedMass, MaximumTonnage, EquipmentTypeNotToUse, EquipmentTypeToUse, MaximumNumberOfVehicles, RequestedNumberOfVehicles, MinimumNumberOfVehicles, MaxMaterialUnitWeight, DeadFreightMinimumWeight, MinimumDistanceCoilsCradle, FreeText, …] constraintValue (string), constraintUnit (string), 0.0.71.0 requestedVehicleTypeIdentifier (string, optional) } ], equipments [ 0.0.78.0 identifier (string), vehicleTypeIdentifier (string, optional), vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional), unloadingLocationIdentifiers (string[], optional) 1.84.0 ], toRegularize (bool), isActive (bool), shipmentAsWork (bool) 1.84.0 loadingInstructions : [ { … , localTransportId (string, optional) } ], preregistration 0.0.48.0 { type (string) = ['truck', 'ship'] vehicleName (string), driverOrCaptainNames [ (string), … ], trailerName (string), trailerType (string), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 250/722 tare (long), derogationMass (long), derogationCertificateNumber (string), grossVehicleWeightRating (long), imo (string, optional), vin (string, optional), eni (string, optional) } ], unloadingInstructions : [ 1.65.0 { id (Guid), identifier (string), unloadingTransportLocation { siteIdentifier (string), locationIdentifier (string, optional) }, materialGroups ([ { loadingInstructionIdentifier (string), materialGroupIdentifier (string) }, …], optional), materialUnits ([ { lmiContext (string), lmiNumber (string) }, …], optional) }, … ] } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 251/722 Example { "identifier": "Transport-1.0LP", "owner": "string", "type": "Shipment", "mode": "Truck", "definitionLevel": "FullyDefined", "urgent": true, "supplierIdentifier": "string", "driverOrCaptainNames": [], "derogationMass": 0, "derogationCertificateNumber": "string", "metadata": {}, "grossVehicleWeightRating": 0, "lastTmsUpdateTimestamp": "2020-04-15T15:12:34.5+00:00", "lastTmsUpdateBy": "string", "shuttle": true, "constraints": [], "state": "Draft", "toRegularize": false, "isActive": false, "loadingInstructions": [ { … }, "unloadingInstructions": [ { … } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 252/722 Get by custom filter Since version 0.0.71 we recommend to use the Artemis.Transport.Query service to retrieve this resource. The documentation is available directly in Swagger (http://+:5505/swagger) but is rather close to this one although some addititional information is available. 0.0.44.0 Retrieve a transport on site by custom filter HTTP Request POST /transport-api/v1/transports/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 253/722 Example Get Transport with LoadingInstruction identifier equal to ‘637480064’ { "query":{ "nodeType":"call", "methodType":"Enumerable", "methodName":"Any", "arguments":[ { "nodeType":"property", "name":"loadingInstructions" }, { "nodeType":"lambda", "body":{ "nodeType":"binary", "operator":"equal", "left":{ "nodeType":"property", "name":"identifier", "left":{ "nodeType":"parameter", "type":"LoadingInstructionResult", "name":"t" } }, "right":{ "nodeType":"constant", "value":"637480064" } }, "parameters":[ "t" ] } ] }, "includes": [ { "nodeType": "property", "name": "loadingInstructions" }], "select":null, "paging":null, "orderBy":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 254/722 Get Transport with MaterialGroup identifier equal to ‘671900001’ { "MethodType":"Enumerable", "MethodName":"Any", "Left":{ "Name":"loadingInstructions", "nodeType":"property" }, "Arguments":[ { "Body":{ "MethodType":"Enumerable", "MethodName":"Any", "Left":{ "Name":"materialGroups", "Left":{ "Type":"LoadingInstructionResult", "Name":"t", "nodeType":"parameter" }, "nodeType":"property" }, "Arguments":[ { "Body":{ "Operator":"equal", "Left":{ "Name":"identifier", "Left":{ "Type":"MaterialGroupResult", "Name":"m", "nodeType":"parameter" }, "nodeType":"property" }, "Right":{ "Value":"671900001", "nodeType":"constant" }, "nodeType":"binary" }, "Parameters":[ "m" ], "nodeType":"lambda" } ], "nodeType":"call" }, "Parameters":[ "t" ], "nodeType":"lambda" } ], "nodeType":"call" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 255/722 Sum material unit weight for each tansport { "select": [{ "fieldName": "Sum", "node": { "nodeType": "unary", "operator": "convert", "operand": { "nodeType": "call", "methodType": "Enumerable", "methodName": "Sum", "arguments": [{ "nodeType": "call", "methodType": "Enumerable", "methodName": "SelectMany", "arguments": [{ "nodeType": "call", "methodType": "Enumerable", "methodName": "SelectMany", "arguments": [{ "nodeType": "property", "name": "LoadingInstructions", "left": { "nodeType": "parameter", "name": "e" } }, { "nodeType": "lambda", "body": { "nodeType": "property", "name": "MaterialGroups", "left": { "nodeType": "parameter", "name": "l" } }, "parameters": [ "l" ] } ] }, { "nodeType": "lambda", "body": { "nodeType": "property", "name": "MaterialUnits", "left": { "nodeType": "parameter", "name": "m" } }, "parameters": [ "m" ] } ] }, { "nodeType": "lambda", "body": { "nodeType": "property", "name": "GrossWeight", "left": { "nodeType": "parameter", "name": "p" } }, "parameters": [ "p" ] } ] }, "type": "Object", "isNullable": false } } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 256/722 Get Transport with EquipmentGroup identifier equal to ‘671900001’, select ‘Identifier’ and ‘Owner’ of Transport and order by ‘Identifier’. { "query":{ "MethodType":"Enumerable", "MethodName":"Any", "Left":{ "Name":"loadingInstructions", "nodeType":"property" }, "Arguments":[ { "Body":{ "MethodType":"Enumerable", "MethodName":"Any", "Left":{ "Name":"materialGroups", "Left":{ "Type":"LoadingInstructionResult", "Name":"t", "nodeType":"parameter" }, "nodeType":"property" }, "Arguments":[ { "Body":{ "Operator":"equal", "Left":{ "Name":"identifier", "Left":{ "Name":"EquipmentGroup", "Left":{ "Type":"MaterialGroupResult", "Name":"m", "nodeType":"parameter" }, "nodeType":"property" }, "nodeType":"property" }, "Right":{ "Value":"671900001", "nodeType":"constant" }, "nodeType":"binary" }, "Parameters":[ "m" ], "nodeType":"lambda" } ], "nodeType":"call" }, "Parameters":[ "t" ], "nodeType":"lambda" } ], "nodeType":"call" }, "select":[ { "fieldName":"identifier", "node":{ "nodeType":"property", "name":"identifier" } }, { "fieldName":"owner", "node":{ "nodeType":"property", "name":"owner" } } ], "paging":{ "pageSize":20, "pageNumber":1 }, "orderBy":{ "fields":[ { "expression":{ "nodeType":"property", "name":"identifier" }, "order":"descending" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 257/722 Responses Response 200 (Ok) { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { owner (string), mode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], type (string), definitionLevel (string) = [‘Draft’, ‘FullyDefined’], urgent (bool), supplierIdentifier (string), metadata (Json), lastTmsMesUpdateTimestamp (datetime, optional), 0.0.63.0 lastTmsMesUpdateBy (string, optional), 0.0.63.0 shuttle (bool), 0.0.50.0 constraints (string) = [‘’, ‘’, ‘’, …], toRegularize (bool), isActive (bool), loadingInstructions : [ { … } ] } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 258/722 Example { "totalPages": 1, "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1, "items": [ { "owner": "string", "type": "Shipment", "mode": "Truck", "definitionLevel": "FullyDefined", "urgent": true, "supplierIdentifier": "string", "driverOrCaptainNames": [], "derogationMass": 0, "derogationCertificateNumber": "string", "metadata": {}, "grossVehicleWeightRating": 0, "lastTmsUpdateTimestamp": "2020-04-15T15:12:34.5+00:00", "lastTmsUpdateBy": "string", "shuttle": true, "constraints": [], "identifier": "Transport13.0Snap", "toRegularize": false, "isActive": false, "loadingInstructions": [ { "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-04-15T15:12:34.5+00:00", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-04-15T15:12:34.5+00:00", "shuntingTimeIgnored": true, "miscRemarks": { }, "materialGroups": [], "loadingTransportLocation": null, "identifier": "Transport13.0Snap.loadingTransportLocation13.0Snap", "id": "fbe818dc-e9e2-ea11-a2e6-001dd8b7466b", "state": "Confirmed", "isChartered": true, "locked": false, "internalMetadata": {}, }] }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 259/722 Get by identifier of global transport (LI) 0.0.45.0 Retrieve all transport(s) (Loading Instruction(s)) on site by global transport identifier HTTP Request GET /transport-api/v1/transports/{transportIdentifier}/loadinginstructions Request Parameters transportIdentifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 260/722 [ { identifier (string), id (Guid), state (string) = [‘Created’, ‘FullyDefined’, ‘Ordered’, ‘Confirmed’, ‘Arrived’, ‘Executed’, ‘Closed’, ‘Canceled’], 0.0.47.0 locked (bool), arrivalTimeSlotStrict (bool, optional), arrivalTimeSlotEarliestDateTime (datetime, optional), arrivalTimeSlotEarliestTimeIgnored (bool, optional), arrivalTimeSlotLatestDateTime (datetime, optional), arrivalTimeSlotLatestTimeIgnored (bool, optional), estimatedDepartureDateTime (datetime, optional), estimatedDepartureTimeIgnored (bool, optional), adjustedDepartureDateTime (datetime, optional), 0.0.72.0, shuntingDateTime (datetime, optional), shuntingTimeIgnored (bool, optional), isChartered (bool, optional), 0.0.47.0 remarks (string[], optional), 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 cimStatus (string, optional) = [‘requested’, ‘cancelled’, ‘accepted’, ‘notNeeded’, ‘refused’], 0.0.51.0 constraints [ { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], departureAllowed (bool, optional), 0.0.54.0 materialGroups [ { identifier (string), isLocked (bool), earliestStartLoadingDateTime (datetime, optional), earliestStartLoadingTimeIgnored (bool, optional), latestEndLoadingDateTime (datetime, optional), latestEndLoadingTimeIgnored (bool, optional), materialSelectionCriteriumProperty (string, optional) = [‘ScaleUpArticleId’, ‘OrderItemId’, ‘ScheduledAgreementId’, ‘ShipmentInstructionId’, ‘ShipmentProgramId’, …], materialSelectionCriteriumValue (string, optional), materialSelectionCriteriumRemark (string, optional), logisticProductTypeIdentifier (string), isLocked (bool), remarks (string[], optional), 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 equipments [ 0.0.78.0 identifier (string), vehicleTypeIdentifier (string, optional), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 261/722 vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional) ], constraints [ { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], unloadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string) }, requestedWeight { min (int, optional), max (int, optional), target (int, optional) } (optional), requestedNumberOfUnits { min (int, optional), max (int, optional), target (int, optional) } (optional), materialUnits [ { lmiContext (string), lmiNumber (string), mustLoad (bool, optional), locationLabel (string, optional) }, … ], equipmentGroup { identifier (string), dummy (bool), sequence (int, optional), unloadingTransportLocationIdentifier (string), loadingTransportLocationIdentifier (string), targetEquipmentPublicIdentifier (string, optional), remarks (string[], optional), 0.0.53.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 constraints [ { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 262/722 constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ] }, … ], loadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string), } } ] Response 404 (NotFound) Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 263/722 [ { "identifier": "Transport-0.1Snap.loadingTransportLocation-0.1Snap", "id": "55185b0f-e6e2-ea11-a2e6-001dd8b7466b", "state": "Confirmed", "isChartered": true, "locked": false, "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-04-15T15:12:34.5+00:00", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-04-15T15:12:34.5+00:00", "shuntingTimeIgnored": true, "isChartered": null, "internalMetadata": {}, "materialGroups": [ { "identifier": "materialGroupA-0.1Snap", "earliestStartLoadingDateTime": "2020-04-15T15:12:34.5+00:00", "earliestStartLoadingTimeIgnored": true, "latestEndLoadingDateTime": "2020-04-15T15:12:34.5+00:00", "latestEndLoadingTimeIgnored": true, "unloadingTransportLocation": { "identifier": "unloadingTransportLocation-0.1Snap", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "BE", "warehouseLocationIdentifier": "string", "origin": "string" }, "internalMetadata": {}, "requestedWeight": { "min": null, "max": null, "target": null }, "requestedNumberOfUnits": { "min": 1, "max": 3, "target": 2 }, "materialUnits": [ { "lmiContext": "LIE", "grossWeight": null, "lmiNumber": "MU-Snap0.1.1", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 264/722 "scaleUpMaterialUnitIdentifier": null, "mustLoad": true, "locationLabel": "Hall" } ], "totalMaterialWeight": null, "materialCount": 0, "materialSelectionCriteriumProperty": "ScaleUpArticleId", "materialSelectionCriteriumValue": "string", "materialSelectionCriteriumRemark": "string", "logisticProductTypeIdentifier": "string", "isLocked": true, "equipmentGroup": { "sequence": 0, "unloadingTransportLocationIdentifier": "unloadingTransportLocation-0.1Snap", "loadingTransportLocationIdentifier": "loadingTransportLocation-0.1Snap", "targetEquipmentPublicIdentifier": null, "identifier": "EquipmentGroup-0.1Snap", "dummy": true, "remarks": [“remark”], "miscRemarks": { }, "internalMetadata": {}, } } ], "loadingTransportLocation": { "identifier": "loadingTransportLocation-0.1Snap", "name": "loadingTrsLocationName-0.1Snap", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "BE", "warehouseLocationIdentifier": "string", "origin": "string" } } ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 265/722 Get by identifier for a loading site (LI) 0.0.44.0 Retrieve a transport on site by identifier HTTP Request GET /transport-api/v1/transports/{transportIdentifier}/loadinginstructions/{identifier} Request Parameters transportIdentifier (string) identifier (string) LI identifier Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 266/722 { identifier (string), id (Guid), state (string) = [‘Created’, ‘Ordered’, ‘Confirmed’, ‘Arrived’, ‘Executed’, ‘Closed’, ‘Canceled’], 0.0.48.0 locked (bool), arrivalTimeSlotStrict (bool, optional), arrivalTimeSlotEarliestDateTime (datetime, optional), arrivalTimeSlotEarliestTimeIgnored (bool, optional), arrivalTimeSlotLatestDateTime (datetime, optional), arrivalTimeSlotLatestTimeIgnored (bool, optional), estimatedDepartureDateTime (datetime, optional), estimatedDepartureTimeIgnored (bool, optional), adjustedDepartureDateTime (datetime, optional), 0.0.72.0, shuntingDateTime (datetime, optional), shuntingTimeIgnored (bool, optional), isChartered (bool, optional), 0.0.47.0 remarks (string[], optional), 0.0.49.0 miscRemarks (string[], optional), 0.0.58.0 internalMetadata (json, optional), 0.0.56.0, metadata (json, optional), 0.0.60.0 cimStatus (string, optional) = [‘requested’, ‘cancelled’, ‘accepted’, ‘notNeeded’, ‘refused’], 0.0.51.0 constraints [ { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], departureAllowed (bool, optional), 0.0.54.0 materialGroups [ { identifier (string), isLocked (bool), earliestStartLoadingDateTime (datetime, optional), earliestStartLoadingTimeIgnored (bool, optional), latestEndLoadingDateTime (datetime, optional), latestEndLoadingTimeIgnored (bool, optional), materialSelectionCriteriumProperty (string, optional) = [‘ScaleUpArticleId’, ‘OrderItemId’, ‘ScheduledAgreementId’, ‘ShipmentInstructionId’, ‘ShipmentProgramId’, …], materialSelectionCriteriumValue (string, optional), materialSelectionCriteriumRemark (string, optional), logisticProductTypeIdentifier (string), isLocked (bool), remarks (string[], optional), 0.0.49.0 miscRemarks (string[], optional), 0.0.58.0 internalMetadata (json, optional), 0.0.56.0 equipments [ 0.0.78.0 identifier (string), vehicleTypeIdentifier (string, optional), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 267/722 vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional) ], constraints [ { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], unloadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string) }, requestedWeight { min (int, optional), max (int, optional), target (int, optional) } (optional), requestedNumberOfUnits { min (int, optional), max (int, optional), target (int, optional) } (optional), materialUnits [ { lmiContext (string), lmiNumber (string), mustLoad (bool, optional), locationLabel (string, optional) }, … ], equipmentGroup { identifier (string), dummy (bool), sequence (int, optional), unloadingTransportLocationIdentifier (string), loadingTransportLocationIdentifier (string), targetEquipmentPublicIdentifier (string, optional), remarks (string[], optional), 0.0.53.0 miscRemarks (string[], optional), 0.0.58.0 internalMetadata (json, optional), 0.0.56.0 metadata, (json, optional), 0.0.60.0 constraints [ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 268/722 { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ] }, … ], loadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string), } } Response 404 (NotFound) Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 269/722 { "identifier": "Transport-0.1Snap.loadingTransportLocation-0.1Snap", "id": "55185b0f-e6e2-ea11-a2e6-001dd8b7466b", "state": "Confirmed", "isChartered": true, "locked": false, "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-04-15T15:12:34.5+00:00", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-04-15T15:12:34.5+00:00", "shuntingTimeIgnored": true, "isChartered": null, "internalMetadata": {}, "materialGroups": [ { "identifier": "materialGroupA-0.1Snap", "earliestStartLoadingDateTime": "2020-04-15T15:12:34.5+00:00", "earliestStartLoadingTimeIgnored": true, "latestEndLoadingDateTime": "2020-04-15T15:12:34.5+00:00", "latestEndLoadingTimeIgnored": true, "unloadingTransportLocation": { "identifier": "unloadingTransportLocation-0.1Snap", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "BE", "warehouseLocationIdentifier": "string", "origin": "string" }, "internalMetadata": {}, "requestedWeight": { "min": null, "max": null, "target": null }, "requestedNumberOfUnits": { "min": 1, "max": 3, "target": 2 }, "materialUnits": [ { "lmiContext": "LIE", "grossWeight": null, "lmiNumber": "MU-Snap0.1.1", "scaleUpMaterialUnitIdentifier": null, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 270/722 "mustLoad": true, "locationLabel": "Hall" } ], "totalMaterialWeight": null, "materialCount": 0, "materialSelectionCriteriumProperty": "ScaleUpArticleId", "materialSelectionCriteriumValue": "string", "materialSelectionCriteriumRemark": "string", "logisticProductTypeIdentifier": "string", "isLocked": true, "equipmentGroup": { "sequence": 0, "unloadingTransportLocationIdentifier": "unloadingTransportLocation-0.1Snap", "loadingTransportLocationIdentifier": "loadingTransportLocation-0.1Snap", "targetEquipmentPublicIdentifier": null, "identifier": "EquipmentGroup-0.1Snap", "dummy": true, "remarks": [“remark”], "miscRemarks": {}, "internalMetadata": {}, } } ], "loadingTransportLocation": { "identifier": "loadingTransportLocation-0.1Snap", "name": "loadingTrsLocationName-0.1Snap", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "BE", "warehouseLocationIdentifier": "string", "origin": "string" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 271/722 Get by identifier for a loading site identifier (LI) 1.65.0 Retrieve a transport on site by identifier HTTP Request GET /transport-api/v1/transports/{transportIdentifier}/loadinginstructions/siteIdentifier={siteIdentifier} Request Parameters transportIdentifier (string) siteIdentifier (string) Responses Response 200 (Ok) See 0.562 Get by identifier for a loading site (LI) Response 404 (NotFound) Example See 0.562 Get by identifier for a loading site (LI) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 272/722 Add "Local Transport ID" in Loading Instruction 0.0.50.0 In some mills, the local systems produce an additional local identifier for transports. Business wants this local ID to be communicated to Sultan so that in Sultan they can perform queries and lookup transports by this local ID. The local TMS/MES will generate this ID when receiving the LI. HTTP Request PUT /transport-api/v1/transports/{identifier}/local-transport-id Request Parameters identifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Request Body { … value (string) } Responses Response 200 (Ok) Response 404 (NotFound) 5 Transport not found 32 Transport not found on site Example { … "value": "localTransportIdValue" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 273/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "id": "ID000000", "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-02T15:30:11.741817+02:00", requestedBy": "TMS" }, "metadata": { "metadata1":"value1"}, "instructions": [], "mode": "truck" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 274/722 Lock/Unlock for a loading site 0.0.34.0 - Manual lock/unlock - Automatic unlock: • when the last vehicle is deallocated (‘VehicleDeallocated’ notification) • when the loading is refused HTTP Request POST /transport-api/v1/transports/{identifier}/lock-requests 0.0.39.0 Request Parameters identifier (string) Request Body { … value (bool), reason (string, mandatory if value = false) = [MaterialNotFound, MaterialDamaged, MaterialBlocked, MaterialOutOfStock, TooFewMaterials, MaterialUnreachable, MaterialNotCompatibleWithVehicle, LoadPlanNotComptabileWithVehicle, MaterialNotReadyToShip, LoadingPlaceClosedOrOngoingMaintenance, Other, …], 0.0.70.0 comment (string, optional) } List of reasons (non-exhaustive) â–ª MaterialNotFound => Material cannot be found â–ª MaterialDamaged => Damage is discovered on the material; in consequence it cannot be shipped. â–ª MaterialBlocked => There is a quality blocking on the material, in consequence it cannot be shipped. â–ª MaterialOutOfStock => Case of ‘free loading’; there is no material for the criteria (order, article, … ) â–ª TooFewMaterials => Case where a minimum target of weight needs to be reached and it is not possible to reach it with the available materials. â–ª MaterialUnreachable => The material that needs to be loaded is not reachable : not linked to an open bay, no crane or other handling equipment is available to reach or move it, … Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 275/722 â–ª MaterialNotCompatibleWithVehicle => It is not possible to load the material on the vehicle that showed up. â–ª LoadPlanNotCompatibleWithVehicle => It is not possible to make a load plan with the given materials/criteria and the vehicle that showed up. Can be because there is no good combination of materials, or because they all don’t respect the security rules or loading constraints â–ª MaterialNotReadyToShip => The material is not ready to ship. In consequence it cannot be shipped. â–ª LoadingPlaceClosedOrOngoingMaintenance => The loading place where the materials are is closer or is under maintenance (a crane is broken for example). The difference with ‘material unreachable’ is that in this case it’s a large area that is concerned and all materials in this area might also not be loaded (so if updated LI is sent, it needs to take this into account). â–ª Other => No other reason describes the problem. Comment is used to describe the problem. Responses Response 200 (Ok) Response 403 (Forbidden) 19 Operation is forbidden because transport is closed or completed 0.0.61.0 263 Operation is forbidden because transport is cancelled 0.0.61.0 36 Transport is not fully defined 2700 Could not lock/unlock current transport because it is in not valid state. Current state :'{0} 52 Operation is not allowed on Transport '{0}' on site 58 Transport '{0}' is not chartered 0.0.61.0 Response 404 (NotFound) 32 Loading Instruction not found on site 5 Transport '{0}' not found 0.0.61.0 Example { … "value": false, "comment": "…" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 276/722 Notification(s) { "notificationType": "LoadingInstructionLocked" "resourceType": "loadingInstruction", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "owner": "TMS", "identifier": "ID000000", 0.0.58.0 "transportIdentifier": "ID000000", "transportType": "Shipment", 0.0.58.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier": "LIE", "mode": "truck | wagon | barge | vessel | airplane", 0.0.51.0 "previousLockedStatus": false } } Or { "notificationType": "LoadingInstructionUnlocked" "resourceType": "loadingInstruction", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "owner": "TMS", "identifier": "ID000000", 0.0.58.0 "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier": "LIE", "mode": "truck | wagon | barge | vessel | airplane", 0.0.51.0 "comment": "test", "previousLockedStatus": true } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 277/722 Save list of material(s) impossible to load 0.0.50.0 Allows to create a list of material(s) impossible to load for a transport. If previous list of material(s) impossible to load was present, this method adds the saved list of materials to the other materials. If the materials are present in a loadplan of a vehicle in that transport, the materials will move to the list ‘materialUnitsImpossibleToLoad’ of the loadplan. If a new loadplan is saved with this material in it, the material will also move to that list so that it is no longer in the ‘toLoad’ list. Saving impossible to load materials has no impact on the materials ‘toCheck’ in a loadplan. HTTP Request PUT /transport-api/v1/transports/{identifier}/impossible-to-load Request Parameters identifier (string) Request Body { … impossibleToLoads: [ { lmiContext (string), lmiNumber (string), reason (string) } } Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 295 Saving material '{0}' as impossible to load is forbidden because the material is already loaded. Response 404 (NotFound) 32 Loading Instruction not found on site Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 278/722 Example { … "impossibleToLoads": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "reason": "reason…" }, { "lmiContext": "LIE", "lmiNumber": "ID000001", "reason": "reason…" }, … ] } Anomaly See ImpossibleToLoad (AnomalyDetected) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 279/722 Load Determination Process 0.0.66.0 Here is an overview of the complete load-determination process in Artemis. Step 1 : Selection of materials to load (see 0.562) All the materials that can be used to load the transport are selected based on the used material selection criteria from the LI or the pre defined materials in the LI. Materials are listed per material group. Step 2 : Filtering of the materials to load (see 0.562 & 0.562) Artemis automatically filters out materials that cannot be loaded. The result of this step is a filtered list of materials for each material group. The list indicates for each material unit in the list if it’s filtered out the reason why it was filtered out. A Hook is made available for integrators so they can extend or override this filtering. Artemis automatically filters out materials for the following reasons: UnknownMaterial : Material is not known NoLocation : The materials is unlocated or lost NotReachable : The material is on a closed location or only reachable from a closed bay NotCharacterized: The material is not characterized NotReadyToBeShipped : The material is not ready to be shipped. BlockedForShipment : The material is blocked for shipment. WrongTypeForTransportMean : The transport mean type is not compatible with the logistic product type of the material (not yet implemented) ReservedByTransport : The material is already planned and/or loaded on another transport. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 280/722 Step 3 : Prioritization of the materials to load (see 0.562 & 0.562) Artemis automatically prioritizes the materials based on some global rules. There is a Hook provided for the integrator so he can do his own prioritization instead of the standard Artemis Core prioritization. By definition, a lower priority is more urgent, in a first phase Artemis juste gives the sequence as priority. This will evolve in the future. These are the standard prioritization rules for Artemis : • Customer Shipments : o Sort by age: Oldest materials first • IntraSite Shipments : o If material is boosted, take it first o Else If material has a planned next production date; take it o Else if material has a scheduled next production date; take it o Else if material has a shipping date, take it o Append all other materials (without those dates), sorted by age: oldest materials last. Step 4 : Load Determination itself (Will be done and described later) The goal is that the Load Determination results in a Save Loadplan. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 281/722 Select material(s) to load 0.0.66.0 HTTP Request POST /transport-api/v1/transports/{identifier}/load-determination/material-selection-requests Request Parameters identifier (string) Request Body { … } Example { … } Responses Response 200 (Ok) { candidates : [ { materialGroupIdentifier (string), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool) }, … ] candidatesNotFound : [ { materialGroupIdentifier (string), materialUnit : { lmiContext (string), lmiNumber (string), } }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 282/722 Example { "candidates" : [ { "materialGroupIdentifier": "MG0", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true }, … ] } Response 400 (BadRequest) Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 283/722 Filter material(s) to load 0.0.66.0 HTTP Request POST /transport-api/v1/transports/{identifier}/load-determination/material-filter-requests Request Parameters identifier (string) Request Body { … } Example { … } Responses Response 200 (Ok) { candidates : [ { materialGroupIdentifier (string), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool), excluded (bool), exclusionReasons (string) = [‘UnknownMaterial‘, ‘NoLocation‘, ‘NotReachable‘, ‘NotCharacterized‘, ‘NotReadyToBeShipped‘,‘BlockedForShipment‘, ‘WrongTypeForTransportMean‘, ‘ReservedByTransport’] 0.0.66.0 }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 284/722 Example { "candidates" : [ { "materialGroupIdentifier": "MG0", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true, "excluded": true, "exclusionReasons" : ["NotCharacterized", "NotReadyToBeShipped"] }, … ] 0.0.66.0 } Response 400 (BadRequest) Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 285/722 Filter material(s) to load (Hook) 0.0.66.0 HTTP Request POST /transport-api/v1/load-determination/custom-material-filter-requests Request Parameters identifier (string) Request Body { transportIdentifer (string), loadingInstructionIdentifer (string), siteIdentifer (string), candidates : [ { materialGroupIdentifier (string), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool), excluded (bool), exclusionReasons (string) = [‘UnknownMaterial‘, ‘NoLocation‘, ‘NotReachable‘, ‘NotCharacterized‘, ‘NotReadyToBeShipped‘, ‘BlockedForShipment‘, ‘WrongTypeForTransportMean‘, ‘ReservedByTransport’] 0.0.66.0 }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 286/722 Example { "transportIdentifier": "T0", "loadingInstruction": "LI0", "siteIdentifier": "LIE", "candidates" : [ { "materialGroupIdentifier": "MG0", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true, "excluded": true, "exclusionReasons" : ["NotCharacterized", "NotReadyToBeShipped"] }, … ] 0.0.66.0 } Responses Response 200 (Ok) { transportIdentifer (string), loadingInstructionIdentifer (string), siteIdentifer (string), candidates : [ { materialGroupIdentifier (string), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool), excluded (bool), exclusionReasons (string) = [‘UnknownMaterial‘, ‘NoLocation‘, ‘NotReachable‘, ‘NotCharacterized‘, ‘NotReadyToBeShipped‘,‘BlockedForShipment‘, ‘WrongTypeForTransportMean‘, ‘ReservedByTransport’] 0.0.66.0 }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 287/722 Example { "transportIdentifier": "T0", "loadingInstruction": "LI0", "siteIdentifier": "LIE", "candidates" : [ { "materialGroupIdentifier": "MG0", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true, "excluded": true, "exclusionReasons" : ["NotCharacterized", "NotReadyToBeShipped"] }, … ] 0.0.66.0 } Response 400 (BadRequest) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 288/722 Prioritize material(s) to load 0.0.67.0 ‘Priority’ should be increasing (smallest = most urgent) HTTP Request POST /transport-api/v1/transports/{identifier}/load-determination/material-prioritizationrequests Request Parameters identifier (string) Request Body { … } Example { … } Responses Response 200 (Ok) { candidates : [ { materialGroupIdentifier (string), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool), priority (int) }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 289/722 Example { "candidates" : [ { "materialGroupIdentifier": "MG0", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true, "priority": 1 }, … ] } Response 400 (BadRequest) Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 290/722 Prioritize material(s) to load (Hook) 0.0.67.0 ‘Priority’ should be increasing (smallest = most urgent) HTTP Request POST /transport-api/v1/load-determination/custom-material-prioritization-requests Request Parameters identifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 291/722 Request Body { transportIdentifer (string), loadingInstructionIdentifer (string), siteIdentifer (string), candidates : [{ materialGroupIdentifier (string), earliestStartLoadingDateTime (datetime?), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool), priority (int) }, … ] 0.0.67.0 } Example { "transportIdentifier": "T0", "transportType" : "Intrasite", "loadingInstruction": "LI0", "siteIdentifier": "LIE", "candidates" : [ { "materialGroupIdentifier": "MG0", "earliestStartLoadingDateTime": "2020-04-15T09:45:58.7051112+00:00", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true, "priority":1 }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 292/722 Responses Response 200 (Ok) { transportIdentifer (string), loadingInstructionIdentifer (string), siteIdentifer (string), candidates : [{ materialGroupIdentifier (string), earliestStartLoadingDateTime (datetime?), materialUnit : { lmiContext (string), lmiNumber (string), … }, mustLoad (bool), priority (int) }, … ] } 0.0.67.0 Example { "transportIdentifier": "T0", "transportType" : "Intrasite", "loadingInstruction": "LI0", "siteIdentifier": "LIE", "candidates" : [ { "materialGroupIdentifier": "MG0", "earliestStartLoadingDateTime": "2020-04-15T09:45:58.7051112+00:00", "materialUnit" : { "lmiContext" : "LIE", "lmiNumber" : "ID000000", … }, "mustLoad": true, "priority":1 }, … ] } Response 400 (BadRequest) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 293/722 Departure (Truck, Convoy or Vessel) 0.0.42.0 By default, all the mobile container(s) of the Transport are considered to leave. Please unallocate beforehand all the mobile container(s) that do not leave ! HTTP Request DELETE /transport-api/v1/transports/{identifier} Request Parameters identifier (string) Request Body { … reason (string) = ['departure'] } Responses Response 200 (Ok) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 403 (Forbidden) 261 Could not change '{0}' state from '{1}' to '{2}'. 19 Operation is forbidden because transport is closed or completed 0.0.61.0 263 Operation is forbidden because transport is cancelled 0.0.61.0 264 Operation is forbidden because transport is confirmed 0.0.61.0 52 Operation is not allowed on Transport '{0}' on site 0.0.61.0 58 Transport '{0}' is not 'Confirmed' 0.0.61.0 Response 404 (NotFound) 5 Transport '{0}' not found 0.0.61.0 32 Loading Instruction not found on site 36 Transport '{0}' is not 'FullyDefined' 0.0.61.0 Example { … "reason": "departure" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 294/722 Notification(s) If transport is not empty, the notification below will be sent: { "notificationType": "TransportDeparted" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "previousState": “InProgress”, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road | rail | ship", "transportType": "Shipment", 1.84.0 "vehicles": [ 0.0.47.0 { “identifier”: “vehicleA”, “name”: “vehicleNameA” }, … ] } } Else, if transport is empty, the notification below will be sent: Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 295/722 { "notificationType": "TransportArrivalCancelled" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "previousState": “InProgress”, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road" "vehicleNames": [ 0.0.47.0 { “identifier”: “vehicleA”, “name”: “vehicleNameA” }, … ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 296/722 Departure Allowed / Not Allowed 0.0.51.0 HTTP Request PUT /transport-api/v1/transports/{identifier}/departure-authorization-check Request Parameters identifier (string) Request Body { …, allowed (bool), reason (string, optional), } Responses Response 200 (Ok) Response 404 (NotFound) 32 Loading Instruction not found on site Example { …, "allowed": false, "reason": "reason" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 297/722 Notification(s) { "notificationType": "TransportDepartureAuthorizationChecked" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road | rail | maritime" "allowed": "false", "reason": "reason" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 298/722 Refuse Loading 0.0.55.0 Method to refuse a loading on transport of type truck. Refusal can happen after it is allocated to a transport. Otherwise, it’s forbidden. This method is equivalent to the Refuse Loading on the truck directly. HTTP Request POST /transport-api/v1/transports/{identifier}/refuse-loading-requests Request Parameters identifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Request Body { … reason (enumeration: MaterialUnitNotFound, PossibleQualityProblem, EverythingOrNothing, EmptyOrder, MaterialUnitNonShippable, ToolFailures, NotEnoughProductsToLoad, Other), comment (string, optional) } Reason (enum, mandatory) The reason of refusal of the truck. Following values are defined: MaterialUnitNotFound: PossibleQualityProblem: EverythingOrNothing: EmptyOrder: MaterialUnitNonShippable: ToolFailures: NotEnoughProductsToLoad: Other: reason is not present in this list Comment (text, optional) Additional optional comment Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 299/722 Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 52 Operation is not allowed on Transport '{0}' on site (Close or Cancelled) 54 Operation not allowed on transport of this transport mode 265 Operation is forbidden because transport is loaded 266 Operation is forbidden because transport is loading Response 404 (NotFound) 5 Transport '{0}' not found Example { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", "context": { "key":"value" }, "reason": "MaterialUnitNotFound", "comment": "comment" } Notification { "notificationType": "LoadingRefused", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road", "reason": "MaterialUnitNotFound", "comment": "comment" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 300/722 Anomalies See LoadingRefused (AnomalyDetected) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 301/722 Request Departure 0.0.51.0 Request departure is used when a transport has finished loading and we need trigger some process in other systems (eg TMS) that are needed before the transport can actually leave. The most common example is the request of custom documents that need to be printed before the transport leaves. If this request is done the transport is automatically set to executed. Beware that this request is only possible for transports that are at least partially loaded and is not allowed in status Confirmed or Arrived [see US 33372] HTTP Request POST /transport-api/v1/transports/{identifier}/departure-requests Request Parameters identifier (string) Request Body { … } Responses Response 200 (Ok) Response 404 (NotFound) 32 Loading Instruction not found on site 601 1.84 Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 302/722 Notification(s) For Road/Maritime, the following notification is always sent. For Rail, only if CIM has been sent, the following notification will be sent. Otherwise, if the CIM is not requested or refused, the notification “TransportDepartureAuthorizationChecked” (see after) will be sent instead of the following notification. { "notificationType": "TransportDepartureRequested" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road | rail | maritime" , "customsDocumentsRequired": false, "sendDepartureAuthorizationCheck": true, 0.0.71.0 "transportType": "Shipment", 1.84.0 } } NB: The property “CustomsDocumentsRequired” in notification is equal to the constraint “CustomsDocumentsRequired” retrieved in LoadingInstruction of current site. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 303/722 { "notificationType": "TransportDepartureAuthorizationChecked" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "rail", "allowed": "false", "reason": "CIM Missing" } } If the transport departure is allowed, and customs documents are not required, the following notification will be sent: 0.0.71.0 { "notificationType": "TransportDepartureAuthorizationChecked" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "rail", "allowed": "true", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 304/722 Request CIM 0.0.51.0 Integrator can request Artemis to send a request to create a CIM to TMS or other systems. It triggers a notification ‘CimRequested’ to which can be subscribed. Request to for a CIM is only possible for rail transports. This will put the "CimStatus" in a LoadingInstruction to "requested". HTTP Request POST /transport-api/v1/transports/{identifier}/cim-requests Request Parameters identifier (string) Request Body { … } Example { … } Responses Response 200 (Ok) Response 403 (Forbidden) 54 Operation not allowed on transport of this transport mode. 273 Operation is forbidden because mobile container is not allocated Response 404 (NotFound) 32 Loading Instruction not found on site Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 305/722 Notification(s) { "notificationType": "CimRequested" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "rail", "transportType": "Shipment", 1.84.0 "vehicles": [ 0.0.71.0 { “identifier”: “vehicleA”, “name”: “vehicleNameA”, “numberOfLoadedMaterialUnits”: 4 0.0.74.0 } … ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 306/722 CIM Acceptance (CIMA) 0.0.51.0 Integrator can request Artemis to handle a CIM Acceptance response. This request is only possible for rail transports. It triggers a notification ‘CimAcceptance’ to which can be subscribed. This will put the "CimStatus" in a LoadingInstruction to "accepted", "notNeeded" or "refused". HTTP Request PUT /transport-api/v1/transports/{identifier}/cim-responses Request Parameters identifier (string) Request Body { status (string) = [accepted, notNeeded, refused], reason (string, optional), } Example { … "status": "accepted", "reason": "reason", } Responses Response 200 (Ok) Response 403 (Forbidden) 54 Operation not allowed on transport of this transport mode. 273 Operation is forbidden because mobile container is not allocated Response 404 (NotFound) 32 Loading Instruction not found on site Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 307/722 Notification(s) { "notificationType": "CimAcceptance" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "rail", "status": "refused", "reason": "reason", "transportType": "Shipment", 1.84.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 308/722 Cancel CIM Request 0.0.51.0 Integrator can request Artemis to cancel a previous CIM request. It triggers a notification ‘CimRequestCancelled’ to which can be subscribed. A request to cancel a CIM request is only possible for rail transports. This will put the "CimStatus" in a LoadingInstruction to "cancelled". HTTP Request DELETE /transport-api/v1/transports/{identifier}/cim-requests Request Parameters identifier (string) Request Body { reason (string, optional), } Example { … "reason": "reason", } Responses Response 200 (Ok) Response 403 (Forbidden) 54 Operation not allowed on transport of this transport mode. 273 Operation is forbidden because mobile container is not allocated Response 404 (NotFound) 32 Loading Instruction not found on site Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 309/722 Notification(s) { "notificationType": "CimRequestCancelled" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "rail" "reason": "reason", "transportType": "Shipment", 1.84.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 310/722 Safety Checks 0.0.46.0 HTTP Request POST /transport-api/v1/transports/{identifier}/safety-checks 0.0.46.0 Request Parameters identifier (string) Request Body { … safetyChecks: [ { safetyCheckType (string) [ ‘LoadLashing’, ‘LoadSecuring’, ‘KnowledgeOfTheInstructions’, ‘PresenceOfSafetyClothes’, ‘PresenceOfSafetyShoes’, ‘PresenceOfSafetyGlasses’, ‘PresenceOfHelmet’ ], safetyCheckResult (string) = [‘Ok’, ‘Nok’] } ] } Responses Response 200 (Ok) Response 404 (NotFound) 32 Loading Instruction not found on site Example { … "safetyChecks": [ { "safetyCheckType": "loadLashing", "safetyCheckResult": "ok" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 311/722 Notification(s) { "resourceType": "transport", "notificationType": "SafetyChecked", "sender": "Artemis.Transport.Execution", "data": { "type": "road", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "owner": "TMS", "transportType": "Shipment", 1.84.0 "safetyChecks": [ { "safetyCheckType": "loadLashing", "safetyCheckResult": "nok" } ], "originalRequestInfo": { "requestedAt": "2020-11-30T14:49:31.150248+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Anomaly See SafetyCheckFailed Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 312/722 Request loading execution detail (LED) 0.0.50.0 Integrator can request Artemis to send the LED to the TMS. It triggers a notification ‘LedRequested’ to which the Artemis-OTM connector will subscribe in order to send the LED to OTM/Sultan. Request to send the LED should only be possible from the moment at least one vehicle is allocated to the transport. HTTP Request POST /transport-api/v1/transports/{identifier}/led-requests Request Parameters identifier (string) Request Body { … } Example { … } Responses Response 200 (Ok) Response 403 (Forbidden) 273 Operation is forbidden because mobile container is not allocated Response 404 (NotFound) 32 Loading Instruction not found on site Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 313/722 Notification(s) { "notificationType": "LedRequested", "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road | rail | ship" } } Change state of loading execution detail (LED) 0.0.72.0 Integrator can change the state of the LED. ‘Requested’ state requests Artemis to send the LED to the TMS. Same as 0.562. It triggers a notification ‘LedRequested’ to which the Artemis-OTM connector will subscribe in order to send the LED to OTM/Sultan. ‘Finished’ state to specify the LED has been sent to the TMS. Called by Artemis Connector when a LED a been sent to OTM. Artemis then triggers a ’LedFinished’ notification Only be possible from the moment at least one vehicle is allocated to the transport. HTTP Request POST /transport-api/v1/transports/{identifier}/led/state-transitions Request Parameters identifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 314/722 Request Body { nextState: “requested | finished” … } Example { nextState : “finished” … } Responses Response 200 (Ok) Response 403 (Forbidden) 273 Operation is forbidden because mobile container is not allocated Response 404 (NotFound) 32 Loading Instruction not found on site Notification(s) { "notificationType": "LedRequested | LedFinished", "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road | rail | ship", "transportType": "Shipment", 1.84.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 315/722 Remove one material impossible to load 0.0.50.0 Allows to remove a material impossible to load on a transport. HTTP Request DELETE /transport-api/v1/transports/{identifier}/impossible-toload/context={context}&number={number} Request Parameters identifier (string) context (string) number (string) Request Body { … } Responses Response 200 (Ok) Response 400 (BadRequest) Response 404 (NotFound) 32 Loading Instruction not found on site Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 316/722 Finish loading a transport in progress 0.0.43.0 HTTP Request POST /transport-api/v1/transports/{identifier}/state-transitions 0.0.43.0 Request Parameters identifier (string) Request Body { … nextState (string) = ['executed'] } Responses Response 200 (Ok) Response 403 (Forbidden) 36 Transport is not confirmed 261 Could not change execution transport state from '{0}' to '{1}' 262 Could not change execution transport state to '{0}' because it is locked Response 404 (NotFound) 32 Loading Instruction not found on site Example { … "nextState": "executed" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 317/722 Notification(s) { "notificationType": "StateChanged" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "oldValue": "InProgress", "newValue": "Executed", "transportIdentifier": "T0", "siteIdentifier": "LIE", "owner": "TMS", "type": "road" } } Anomaly See 0.562 MuUnloadedFromClosedTransport 0.0.61.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 318/722 { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "source": { "id": "ID000000", "businessEntityName": "Transport" }, "siteIdentifier": "LIE", "type": "muUnloadedFromClosedTransport", "metadata": { "__arguments": { "materialUnitIdentifier": "11-11" } }, "senderId": "ID000000", "timeStamp": "637716988255045380", "originalRequestInfo": { "requestedAt": "2021-11-05T09:45:32.9668862+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 319/722 MuNotLoaded - If one or more MaterialUnit(s) expected are not loaded: “AnomalyDetected” - If these expected MaterialUnit(s) are loaded after: “AnomalyFixed” See 0.562 MuNotFinalChecked - If one or more MaterialUnit(s) expected are not checked: “AnomalyDetected” - If these expected MaterialUnit(s) are checked after: “AnomalyFixed” See MuFinalCheckError - If one or more MaterialUnit(s) expected has checked result failed : “AnomalyDetected” - If these expected MaterialUnit(s) have checked result successful after: “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 320/722 Close a transport confirmed for a loading site 0.0.34.0 A transport that is closed using this API is removed from the execution context of Artemis. It will be automatically removed from the instruction after X days. (X is configuration parameter) HTTP Request POST /transport-api/v1/transports/{identifier}/state-transitions 0.0.39.0 Request Parameters identifier (string) Request Body { … nextState (string) = ['closed'] } Responses Response 200 (Ok) Response 403 (Forbidden) 52 Operation is not allowed on Transport (i.e. Transport already Closed) 0.0.61.0 46 Cannot close transport when current state is not ordered or confirmed 0.0.71.0 Response 404 (NotFound) 5 Transport '{0}' not found 0.0.61.0 32 Loading Instruction not found on site Example { … "nextState": "closed" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 321/722 Notification(s) { "notificationType": "stateChanged" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "oldValue": "Confirmed", "newValue": "Closed", "transportIdentifier": "T0", "siteIdentifier": "LIE", "owner": "TMS", "type": "road" } } 0.0.61.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 322/722 { "resourceType":"transport", "notificationType":"TransportCompleted", "sender":"Artemis.Transport.Instruction", "data":{ "identifier":"ID000000", "owner":"Syltram", "instructionIds":[ 0.0.68.0 { "id": "d594d89d-bb71-42c2-9cb9-827db83f532f", "identifier": "ID000000", "siteIdentifier": "LIE", }, … ], "unloadingInstructionIds":[ 0.0.68.0 { "id": "d594d89d-bb71-42c2-9cb9-827db83f532f", "identifier": "ID000000", "siteIdentifier": "LIE", }, … ], "context":{ "key":"value" }, "originalRequestInfo":{ "requestedAt":"2021-11-03T16:29:06.4157111+00:00", "requestedBy":"owner" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 323/722 { "resourceType": "transport", "notificationType": "TransportRemoved", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "type": "road", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "owner": "Syltram", "previousState": "Closed", "transportType": "Shipment", 1.84.0 "vehicles": [ { "identifier": "ID000000", "name": "trailerID000000" } ], "originalRequestInfo": { "requestedAt": "2021-11-03T17:43:36.3124816+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 324/722 Cancel a transport confirmed for a loading site 0.0.34.0 A transport that is cancelled using this API is removed from the execution context of Artemis. It will be automatically removed from the instruction after X days. (X is configuration parameter) HTTP Request POST /transport-api/v1/transports/{identifier}/state-transitions 0.0.39.0 Request Parameters identifier (string) Request Body { … nextState (string) = ['cancelled'] } Responses Response 200 (Ok) Response 403 (Forbidden) 52 Operation is not allowed on Transport (i.e. Transport already Cancelled) 0.0.61.0 261 Could not change execution transport state from '{0}' to '{1}' 262 Could not change execution transport state to '{0}' because it is locked Response 404 (NotFound) 5 Transport '{0}' not found 0.0.61.0 32 Loading Instruction & Unloading Instruction not found on site 0.0.66.0 Example { … "nextState": "cancelled" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 325/722 Notification(s) { "notificationType": "stateChanged" "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "oldValue": "Confirmed", "newValue": "Cancelled", "transportIdentifier": "T0", "siteIdentifier": "LIE", "owner": "TMS", "type": "road" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 326/722 Delete for all loading sites 1.0.74 This method completely removes the transport from Artemis. It is only allowed when all LI's and ULI's are closed, completed or cancelled. HTTP Request DELETE /transport-api/v1/transport-headers/{identifier} Request Parameters identifier (string) Request Body { … reason (string) = ['Deletion'] } Responses Response 200 (Ok) Response 403 (Forbidden) 52 Operation is not allowed on Transport (i.e. Transport already Cancelled) 2750 Could not delete unloading instruction because it is in 'cancelled' state 2752 Could not delete unloading instruction because it is in 'executed' state 2753 Could not delete unloading instruction because it is locked 2754 Could not delete loading instruction because it is locked 2755 Could not delete unloading instruction because it is in ‘confirmed’ state 2756 Could not delete unloading instruction because it is in ‘created’ state 2757 Could not delete unloading instruction because it is in ‘ordered’ state 2748 Deletion not allowed on loading instruction Response 404 (NotFound) 5 Transport '{0}' not found Example { …, "reason": "Deletion" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 327/722 Notification { "resourceType":"transport", "notificationType":"Deleted", "sender":"Artemis.Transport.Instruction", "data":{ "identifier":"ID000000", "owner":"Syltram", "instructionIds":[ { "id": "d594d89d-bb71-42c2-9cb9-827db83f532f", "identifier": "ID000000", "siteIdentifier": "LIE", }, … ], "unloadingInstructionIds":[ { "id": "d594d89d-bb71-42c2-9cb9-827db83f532f", "identifier": "ID000000", "siteIdentifier": "LIE", }, … ], "context":{ "key":"value" }, "originalRequestInfo":{ "requestedAt":"2021-11-03T16:29:06.4157111+00:00", "requestedBy":"owner" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 328/722 4.9. Loading Instruction Create 1.61.0 HTTP Request POST /transport-api/v1/transports/{transportIdentifier}/loadinginstructions Request Parameters transportIdentifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Request Body Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 329/722 { … loadingInstruction { identifier (string), arrivalTimeSlotStrict (bool, optional), arrivalTimeSlotEarliestDateTime (datetime, optional), arrivalTimeSlotEarliestTimeIgnored (bool, optional), arrivalTimeSlotLatestDateTime (datetime, optional), arrivalTimeSlotLatestTimeIgnored (bool, optional), estimatedDepartureDateTime (datetime, optional), estimatedDepartureTimeIgnored (bool, optional), adjustedDepartureDateTime (datetime, optional), 0.0.72.0, shuntingDateTime (datetime, optional), shuntingTimeIgnored (bool, optional), isChartered (bool, optional), 0.0.47.0 remarks (string[], optional), deprecated 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0, metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string) = [CustomsDocumentsRequired, EquipmentTypeNotToUse, EquipmentTypeToUse, FreeText, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], materialGroups [ { identifier (string), earliestStartLoadingDateTime (datetime, optional), earliestStartLoadingTimeIgnored (bool, optional), latestEndLoadingDateTime (datetime, optional), latestEndLoadingTimeIgnored (bool, optional), materialSelectionCriteriumProperty (string, optional) = [‘ScaleUpArticleId’, ‘OrderItemId’, ‘ScheduledAgreementId’, ‘ShipmentInstructionId’, ‘ShipmentProgramId’, …], materialSelectionCriteriumValue (string, optional), materialSelectionCriteriumRemark (string, optional), logisticProductTypeIdentifier (string), isLocked (bool), remarks (string[], optional), deprecated 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 metadata (json, optional), 0.0.61.0 equipmentIdentifiers (string[], optional), 0.0.78.0 constraints [ 0.0.53.0 { constraintType (string) = [EquipmentTypeNotToUse, EquipmentTypeToUse, MaxMaterialUnitWeight, MinimumDistanceCoilsCradle, FreeText, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 330/722 unloadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string) }, requestedWeight { min (int, optional), max (int, optional), target (int, optional) } (optional), requestedNumberOfUnits { min (int, optional), max (int, optional), target (int, optional) } (optional), materialUnits [ { lmiContext (string), lmiNumber (string), mustLoad (bool, optional), locationLabel (string, optional) }, … ], equipmentGroup { identifier (string), sequence (int, optional), unloadingTransportLocationIdentifier (string), 0.0.78.0 loadingTransportLocationIdentifier (string), 0.0.78.0 targetEquipmentPublicIdentifier (string, optional), remarks (string[], optional), deprecated 0.0.53.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string) = [MaximumLength, CustomsDocumentsRequired, MaxAuthorizedChargePerWagon, MaxAuthorizedChargePerVehicle 0.0.69.0, MaxAuthorizedMass, MaximumTonnage, EquipmentTypeNotToUse, EquipmentTypeToUse, MaximumNumberOfVehicles, RequestedNumberOfVehicles, MinimumNumberOfVehicles, MaxMaterialUnitWeight, MinimumDistanceCoilsCradle, FreeText, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ] } (optional), }, … ], Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 331/722 loadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string), }, }, preregistration 0.0.48.0 (optional) { type (string)= ['truck', 'ship'] driverOrCaptainNames [ (string), … ] (optional), tractorName (string, optional), trailerName (string, optional), trailerType (string, optional), carrier (string, optional), tare (string, optional), derogationMass (long, optional), derogationCertificateNumber (string, optional), grossVehicleWeightRating (long, optional), shipName (string, optional), imo (string, optional), vin (string, optional), eni (string, optional) } } Responses Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 332/722 Responses Response 200 (Created) Response 400 (BadRequest) 28 At least one MaterialGroup item is required in the LoadingInstruction MaterialGroup are duplicated in the LoadingInstruction Predefined MaterialUnit is repeated in two MaterialGroups in the same LoadingInstruction ‘UnloadingTransportLocationIdentifier’ specified in MaterialGroup is not the same than the one given in related EquipmentGroup ‘LoadingTransportLocationIdentifier’ specified in EquipmentGroup not found in the LoadingInstruction ‘RequestedNumberOfUnits’ and ‘RequestedWeight’ cannot be defined at the same time At least Min, Target or Max of ‘RequestedNumberOfUnits’ or ‘RequestedWeight’ should be defined ‘RequestedNumberOfUnits’ or ‘RequestedWeight’ data unconsistency – see rules here above in properties description ‘MaterialSelectionCriteriumProperty’ set without ‘MaterialSelectionCriteriumValue’ ‘MaterialSelectionCriteriumValue’ set without ‘MaterialSelectionCriteriumProperty’ Any mandatory fields not specified in Transport/LoadingInstruction/MaterialGroup/EquipmentGroup Response 403 (Forbidden) 28 ‘UnloadingTransportLocationIdentifier’ cannot be updated on MaterialGroup 28 Different ‘UnloadingTransportLocationIdentifier’ on the same EquipmentGroup within a Transport 33 Operation not allowed on Transport '{0}' with DefinitionState 'FullyDefined 1.81.0 34 Operation not allowed on Transport '{0}' when one LI is locked 49 Multiple LoadingInstructions not allowed on same Transport with bulk method 50 MaterialUnit(s) are marked for deletion 51 MaterialUnit(s) not found 2733 Could not update LoadingInstruction because it's closed or completed 1.81.0 2734 Could not update LoadingInstruction because it’s locked 2736 Could not update LoadingInstruction because it is in 'confirmed' state. 0.0.47.0 3001 Equipment: ‘{0}’ does not exist in transport 1.78.0 Response 409 (Conflict) 65 Duplicated transport '{0}' on site '{1}' 1.81.0 2763 A predefinedMaterialUnit in LoadingInstruction with identifier '{0}' on transport '{1}' already exists on another LoadingInstruction in same Transport 1.81.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 333/722 Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 334/722 { … "loadingInstruction": { "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-03-31T11:23:09.481Z", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-03-31T11:23:09.481Z", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-03-31T11:23:09.481Z", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-03-31T11:23:09.481Z", "shuntingTimeIgnored": true, "constraints": [], "internalMetadata": {}, "miscRemarks": { }, "materialGroups": [ { "identifier": "string", "earliestStartLoadingDateTime": "2020-03-31T11:23:09.481Z", "earliestStartLoadingTimeIgnored": true, "latestEndLoadingDateTime": "2020-03-31T11:23:09.481Z", "latestEndLoadingTimeIgnored": true, "metadata": "string", "unloadingTransportLocation": { "identifier": "string", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "string", "warehouseLocationIdentifier": "string", "origin": "string" }, "requestedWeight": { "min": 0, "max": 0, "target": 0 }, "requestedNumberOfUnits": { "min": 0, "max": 0, "target": 0 }, "remarks": [“remark”], "miscRemarks": { }, "materialUnits": [ { "lmiContext": "string", "grossWeight": 0, "lmiNumber": "string", "scaleUpMaterialUnitIdentifier": "string", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 335/722 "mustLoad": true, "locationLabel": "string" } ], "materialSelectionCriteriumProperty": "scaleUpArticleId", "materialSelectionCriteriumValue": "string", "materialSelectionCriteriumRemark": "string", "logisticProductTypeIdentifier": "string", "isLocked": true, "constraints": [], "internalMetadata": {}, "equipmentGroup": { "identifier": "string", "sequence": 0, "unloadingTransportLocationIdentifier": "string", "loadingTransportLocationIdentifier": "string", "targetEquipmentPublicIdentifier": "string", "remarks": [“remark”], "miscRemarks": { }, "internalMetadata": {}, "constraints": [] } } ], "loadingTransportLocation": { "identifier": "string", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "string", "warehouseLocationIdentifier": "string", "origin": "string" }, }, "preregistration": { "type": "truck", "driverOrCaptainNames": [ "string" ], "vehicleName": "string", "trailerName": "string", "trailerType": "string", "tare": 0, "grossVehicleWeightRating": 0, "derogationMass": 0, "derogationCertificateNumber": "string", }, } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 336/722 Notification(s) { "resourceType": "loadingInstruction", "notificationType": "Create " "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier": "LIE", }, "owner": "OTM", "mode": "truck | wagon | barge | vessel | airplane", 0.0.76.0 "materialGroups": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "materialUnits": [ {"lmiContext": "LIE", "lmiNumber":"ID000000", "mustLoad":true, “weight”: 50 } ], "equipmentIdentifiers": ["EQ0001"] }, { "identifier": "ID111111", "targetWeight": 20000, "equipmentIdentifiers": ["EQ0001"] }, "mam": { "value": "22000", "derogation": "22200" } 0.0.63.0, "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 337/722 Update 1.61.0 HTTP Request PUT /transport-api/v1/transports/{transportIdentifier}/loadinginstructions/{identifier} Request Parameters transportIdentifier (string) Unique identifier of the transport used in the TMS owner and all over the sites identifier (string) Request Body Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 338/722 { … loadingInstruction { arrivalTimeSlotStrict (bool, optional), arrivalTimeSlotEarliestDateTime (datetime, optional), arrivalTimeSlotEarliestTimeIgnored (bool, optional), arrivalTimeSlotLatestDateTime (datetime, optional), arrivalTimeSlotLatestTimeIgnored (bool, optional), estimatedDepartureDateTime (datetime, optional), estimatedDepartureTimeIgnored (bool, optional), adjustedDepartureDateTime (datetime, optional), 0.0.72.0, shuntingDateTime (datetime, optional), shuntingTimeIgnored (bool, optional), isChartered (bool, optional), 0.0.47.0 remarks (string[], optional), deprecated 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0, metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string) = [CustomsDocumentsRequired, EquipmentTypeNotToUse, EquipmentTypeToUse, FreeText, …], constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], materialGroups [ { identifier (string), earliestStartLoadingDateTime (datetime, optional), earliestStartLoadingTimeIgnored (bool, optional), latestEndLoadingDateTime (datetime, optional), latestEndLoadingTimeIgnored (bool, optional), materialSelectionCriteriumProperty (string, optional) = [‘ScaleUpArticleId’, ‘OrderItemId’, ‘ScheduledAgreementId’, ‘ShipmentInstructionId’, ‘ShipmentProgramId’, …], materialSelectionCriteriumValue (string, optional), materialSelectionCriteriumRemark (string, optional), logisticProductTypeIdentifier (string), isLocked (bool), remarks (string[], optional), deprecated 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 metadata (json, optional), 0.0.61.0 equipmentIdentifiers (string[], optional), 0.0.78.0 constraints [ 0.0.53.0 { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], unloadingTransportLocation { identifier (string), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 339/722 name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string) }, requestedWeight { min (int, optional), max (int, optional), target (int, optional) } (optional), requestedNumberOfUnits { min (int, optional), max (int, optional), target (int, optional) } (optional), materialUnits [ { lmiContext (string), lmiNumber (string), mustLoad (bool, optional), locationLabel (string, optional) }, … ], equipmentGroup { identifier (string), sequence (int, optional), unloadingTransportLocationIdentifier (string), 0.0.78.0 loadingTransportLocationIdentifier (string), 0.0.78.0 targetEquipmentPublicIdentifier (string, optional), remarks (string[], optional), deprecated 0.0.53.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0 metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ] } (optional), }, … ], loadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 340/722 countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string), }, }, preregistration 0.0.48.0 (optional) { type (string)= ['truck', 'ship'] driverOrCaptainNames [ (string), … ] (optional), tractorName (string, optional), trailerName (string, optional), trailerType (string, optional), carrier (string, optional), tare (string, optional), derogationMass (long, optional), derogationCertificateNumber (string, optional), grossVehicleWeightRating (long, optional), shipName (string, optional), imo (string, optional), vin (string, optional), eni (string, optional) } } Responses Response 200 (Ok) Response 201 (Created) Response 400 (BadRequest) 28 At least one MaterialGroup item is required in the LoadingInstruction MaterialGroup are duplicated in the LoadingInstruction Predefined MaterialUnit is repeated in two MaterialGroups in the same LoadingInstruction ‘UnloadingTransportLocationIdentifier’ specified in MaterialGroup is not the same than the one given in related EquipmentGroup ‘LoadingTransportLocationIdentifier’ specified in EquipmentGroup not found in the LoadingInstruction ‘RequestedNumberOfUnits’ and ‘RequestedWeight’ cannot be defined at the same time At least Min, Target or Max of ‘RequestedNumberOfUnits’ or ‘RequestedWeight’ should be defined ‘RequestedNumberOfUnits’ or ‘RequestedWeight’ data unconsistency – see rules here above in properties description ‘MaterialSelectionCriteriumProperty’ set without ‘MaterialSelectionCriteriumValue’ ‘MaterialSelectionCriteriumValue’ set without ‘MaterialSelectionCriteriumProperty’ Any mandatory fields not specified in Transport/LoadingInstruction/MaterialGroup/EquipmentGroup Response 403 (Forbidden) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 341/722 28 28 ‘UnloadingTransportLocationIdentifier’ cannot be updated on MaterialGroup Different ‘UnloadingTransportLocationIdentifier’ on the same EquipmentGroup within a Transport 33 Operation not allowed on Transport '{0}' with DefinitionState 'FullyDefined 1.81.0 34 Operation not allowed on Transport '{0}' when one LI is locked 49 Multiple LoadingInstructions not allowed on same Transport with bulk method 50 MaterialUnit(s) are marked for deletion 51 MaterialUnit(s) not found 2733 Could not update LoadingInstruction because it's closed or completed 0.0.72.0 2734 Could not update LoadingInstruction because it’s locked 2736 Could not update LoadingInstruction because it is in 'confirmed' state. 1.71.0 3001 Equipment: ‘{0}’ does not exist in transport 1.78.0 2764 MaterialGroup(s) already linked: '{0}' 1.81.0 Response 409 (Conflict) 2761 LoadingInstruction with identifier '{0}' on transport '{1}' already exists 1.81.0 2763 A predefinedMaterialUnit in LoadingInstruction with identifier '{0}' on transport '{1}' already exists on another LoadingInstruction in same Transport 1.81.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 342/722 Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 343/722 { … "loadingInstruction": { "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-03-31T11:23:09.481Z", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-03-31T11:23:09.481Z", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-03-31T11:23:09.481Z", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-03-31T11:23:09.481Z", "shuntingTimeIgnored": true, "constraints": [], "internalMetadata": {}, "miscRemarks": { }, "materialGroups": [ { "identifier": "string", "earliestStartLoadingDateTime": "2020-03-31T11:23:09.481Z", "earliestStartLoadingTimeIgnored": true, "latestEndLoadingDateTime": "2020-03-31T11:23:09.481Z", "latestEndLoadingTimeIgnored": true, "metadata": "string", "unloadingTransportLocation": { "identifier": "string", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "string", "warehouseLocationIdentifier": "string", "origin": "string" }, "requestedWeight": { "min": 0, "max": 0, "target": 0 }, "requestedNumberOfUnits": { "min": 0, "max": 0, "target": 0 }, "remarks": [“remark”], "miscRemarks": { }, "materialUnits": [ { "lmiContext": "string", "grossWeight": 0, "lmiNumber": "string", "scaleUpMaterialUnitIdentifier": "string", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 344/722 "mustLoad": true, "locationLabel": "string" } ], "materialSelectionCriteriumProperty": "scaleUpArticleId", "materialSelectionCriteriumValue": "string", "materialSelectionCriteriumRemark": "string", "logisticProductTypeIdentifier": "string", "isLocked": true, "constraints": [], "internalMetadata": {}, "equipmentGroup": { "identifier": "string", "sequence": 0, "unloadingTransportLocationIdentifier": "string", "loadingTransportLocationIdentifier": "string", "targetEquipmentPublicIdentifier": "string", "remarks": [“remark”], "miscRemarks": { }, "internalMetadata": {}, "constraints": [] } } ], "loadingTransportLocation": { "identifier": "string", "name": "string", "streetNameAndNumber": "string", "postalCode": "string", "cityName": "string", "countryIsoCode": "string", "warehouseLocationIdentifier": "string", "origin": "string" }, }, "preregistration": { "type": "truck", "driverOrCaptainNames": [ "string" ], "vehicleName": "string", "trailerName": "string", "trailerType": "string", "tare": 0, "grossVehicleWeightRating": 0, "derogationMass": 0, "derogationCertificateNumber": "string", }, } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 345/722 Notification(s) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 346/722 { "resourceType": "loadingInstruction", "notificationType": "Update" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0, "siteIdentifier": "LIE", }, "owner": "OTM", "mode": "truck | wagon | barge | vessel | airplane", 0.0.76.0 "materialGroups": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "materialUnits": [ {"lmiContext": "LIE", "lmiNumber":"ID000000", "mustLoad":true, “weight”: 50 } ], "equipmentIdentifiers": ["EQ0001"] }, { "identifier": "ID111111", "targetWeight": 20000, "equipmentIdentifiers": ["EQ0001"] }, "mam": { "value": "22000", "derogation": "22200" } 0.0.63.0, "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } }, "previousData": { "materialGroups": { 1.73.0 "updated": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "mustLoad": true, "weight": 10000 }, { "lmiContext": "LIE", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 347/722 "lmiNumber": "ID111111", "mustLoad": true, "weight": 10000 } ] }, { "identifier": "ID111111", "targetNumberOfUnits": 2, "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID222222", "mustLoad": true, "weight": 10000 }, { "lmiContext": "LIE", "lmiNumber": "ID333333", "mustLoad": true, "weight": 11111 } ] } ], "added": [], "removed": [] }, "mam": null } } 1.84.0 ExecutionUpdated see chapter ExecutionUpdated 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 348/722 Partial update 0.0.78.0 Property ‘Metadata’ can also be updated but has merge functionality: • • when patching a metadata key that does not exist : add key and value when patching a metadata key that exists : update value for key Keys that are not mentioned in the patch are not modified. HTTP Request PATCH /transport-api/v1/transports/{transportIdentifier}/loadinginstructions/{identifier} Request Parameters identifier (string) Request Body { … loadingInstruction: [ { value (Json), path (string), op (string) }, … ] } Responses Response 204 (NoContent) Response 403 (Forbidden) 2734 LoadingInstruction is locked 28 ValidationFailed (ex: Loading TransportLocation cannot be updated) Response 404 (NotFound) 2758 Transport not found 2759 LoadingInstruction not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 349/722 Example { … "loadingInstruction": [ { "value": { "metadata1":"value1"}, "path": "metadata", "op": "replace", }, … ] } Notification(s) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 350/722 { "resourceType": "loadingInstruction", "notificationType": "PartialUpdate" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0, "siteIdentifier": "LIE", }, "owner": "OTM", "mode": "truck | wagon | barge | vessel | airplane", 0.0.76.0 "materialGroups": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "materialUnits": [ {"lmiContext": "LIE", "lmiNumber":"ID000000", "mustLoad":true, “weight”: 50 } ], "equipmentIdentifiers": ["EQ0001"] }, { "identifier": "ID111111", "targetWeight": 20000, "equipmentIdentifiers": ["EQ0001"] }, "mam": { "value": "22000", "derogation": "22200" } 0.0.63.0, "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } }, "previousData": { "materialGroups": { 1.73.0 "updated": [ { "identifier": "ID000000", "targetNumberOfUnits": 2, "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "mustLoad": true, "weight": 10000 }, { "lmiContext": "LIE", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 351/722 "lmiNumber": "ID111111", "mustLoad": true, "weight": 10000 } ] }, { "identifier": "ID111111", "targetNumberOfUnits": 2, "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID222222", "mustLoad": true, "weight": 10000 }, { "lmiContext": "LIE", "lmiNumber": "ID333333", "mustLoad": true, "weight": 11111 } ] } ], "added": [], "removed": [] }, "mam": null } } 1.84.0 ExecutionUpdated see chapter Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 352/722 Delete 1.0.76 This method is used to delete a loading instruction. HTTP Request DELETE /transport-api/v1/transports/{transportIdentifier}/loadinginstructions/{identifier} Request Parameters identifier (string) Request Body { … reason (string) } Responses Response 200 (Ok) Response 403 (Forbidden) 2754 Could not delete loading instruction because it is locked 2748 Deletion not allowed on loading instruction Response 404 (NotFound) 5 Transport '{0}' not found Example { …, "reason": "Deletion" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 353/722 Notification { "resourceType":"loadingInstruction", "notificationType":"Deleted", "sender":"Artemis.Transport.Instruction", "data":{ "identifier":"ID000000", "transportIdentifier":"ID000000", "siteIdentifier":"LIE", "owner":"Syltram", "mode": "truck | wagon | barge | vessel | airplane", 0.0.76.0 "context":{ "key":"value" }, "originalRequestInfo":{ "requestedAt":"2021-11-03T16:29:06.4157111+00:00", "requestedBy":"owner" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 354/722 Get by custom filter Since version 0.0.71 we recommend to use the Artemis.Transport.Query service to retrieve this resource. The documentation is available directly in Swagger (http://+:5505/swagger) but is rather close to this one although some addititional information is available. 0.0.65.0 Retrieve a transport on site by custom filter HTTP Request POST /transport-api/v1/loadinginstructions/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 355/722 Example { "Includes":[ { "Name":"transport", "nodeType":"property" } ], "Query":{ "Body":{ "Operator":"lessThanOrEqual", "Left":{ "Name":"ArrivalTimeSlotEarliestDateTime", "Left":{ "Type":"LoadingInstructionResult", "Name":"t", "nodeType":"parameter" }, "nodeType":"property" }, "Right":{ "Operator":"convert", "Operand":{ "Value":"2022-01-25T18:04:58.7271554+00:00", "nodeType":"constant" }, "type":"DateTimeOffset", "isNullable":"true", "nodeType":"unary" }, "nodeType":"binary" }, "Parameters":[ "t" ], "nodeType":"lambda" }, "Select":null, "Paging":null, "OrderBy":null } Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 356/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), arrivalTimeSlotStrict (bool, optional), arrivalTimeSlotEarliestDateTime (datetime, optional), arrivalTimeSlotEarliestTimeIgnored (bool, optional), arrivalTimeSlotLatestDateTime (datetime, optional), arrivalTimeSlotLatestTimeIgnored (bool, optional), estimatedDepartureDateTime (datetime, optional), estimatedDepartureTimeIgnored (bool, optional), adjustedDepartureDateTime (datetime, optional), 0.0.72.0, shuntingDateTime (datetime, optional), shuntingTimeIgnored (bool, optional), isChartered (bool, optional), 0.0.47.0 remarks (string[], optional), 0.0.49.0 miscRemarks (json, optional), 0.0.68.0 internalMetadata (json, optional), 0.0.56.0, metadata (json, optional), 0.0.60.0 constraints [ 0.0.53.0 { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], materialGroups [ { identifier (string), miscRemarks (json, optional), 0.0.68.0 … constraints [ 0.0.53.0 { constraintType (string), constraintValue (string), constraintUnit (string) 0.0.71.0 }, … ], unloadingTransportLocation { … }, requestedWeight { … } (optional), requestedNumberOfUnits { … } (optional), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 357/722 materialUnits [ { … }, … ], equipmentGroup { miscRemarks (json, optional), 0.0.68.0 … }, … ], loadingTransportLocation { identifier (string), name (string), streetNameAndNumber (string), postalCode (string), cityName (string), countryIsoCode (string), warehouseLocationIdentifier (string, optional), origin (string), }, }, preregistration (optional) { type (string)= ['truck', 'ship'] driverOrCaptainNames [ (string), … ] (optional), tractorName (string, optional), trailerName (string, optional), trailerType (string, optional), carrier (string, optional), tare (string, optional), derogationMass (long, optional), derogationCertificateNumber (string, optional), grossVehicleWeightRating (long, optional), shipName (string, optional), imo (string, optional), vin (string, optional), eni (string, optional) } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 358/722 Example { "totalPages": 1, "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1, "items": [ { "arrivalTimeSlotStrict": true, "arrivalTimeSlotEarliestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotEarliestTimeIgnored": true, "arrivalTimeSlotLatestDateTime": "2020-04-15T15:12:34.5+00:00", "arrivalTimeSlotLatestTimeIgnored": true, "estimatedDepartureDateTime": "2020-04-15T15:12:34.5+00:00", "estimatedDepartureTimeIgnored": true, "shuntingDateTime": "2020-04-15T15:12:34.5+00:00", "shuntingTimeIgnored": true, "materialGroups": [], "loadingTransportLocation": null, "identifier": "ID000000", "id": "fbe818dc-e9e2-ea11-a2e6-001dd8b7466b", "state": "Confirmed", "isChartered": true, "locked": false, "internalMetadata": {}, }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 359/722 4.10. Unloading Instruction Create 1.65.0 HTTP Request POST /transport-api/v1/transports/{transportIdentifier}/unloadinginstructions Request Parameters transportIdentifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Request Body { … identifier (string), unloadingTransportLocation { siteIdentifier (string), locationIdentifier (string, optional) }, materialGroups ([ { loadingInstructionIdentifier (string), materialGroupIdentifier (string) }, …], optional), materialUnits ([ { lmiContext (string), lmiNumber (string), equipmentIdentifier (string) 1.81.0 }, …], optional) } Responses Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 360/722 Responses Response 200 (Created) Response 400 (BadRequest) 2739 A minimum of one or more MaterialGroup(s) or MaterialUnit(s) is required 2741 MaterialGroups are duplicated in the UnloadingInstruction 2742 MaterialUnits are duplicated in the UnloadingInstruction Response 403 (Forbidden) 33 Operation not allowed on Transport '{0}' with DefinitionState 'FullyDefined 1.81.0 34 Operation not allowed on Transport '{0}' when one LI is locked 49 Multiple UnloadingInstructions not allowed on same Transport 50 MaterialUnit(s) are marked for deletion 51 MaterialUnit(s) not found 2733 Could not update UnloadingInstruction because it's closed or completed 1.81.0 2734 Could not update UnloadingInstruction because it’s locked 2736 Could not update UnloadingInstruction because it is in 'confirmed' state. Response 409 (Conflict) 2740 UnloadingInstruction with identifier '{0}' already exists on Transport. UnloadingInstruction with on same unloading location '{0}' already exists on Transport. 2765 UnloadingInstruction with identifier '{0}' on transport '{1}' already exists 1.81.0 Example { … "identifier": "ID000000", "materialGroups": [ { "loadingInstructionIdentifier": "string", "materialGroupIdentifier": "string", }], "materialUnits": [ { "lmiContext": "string", "lmiNumber": "string", }], "unloadingTransportLocation": { "siteIdentifier": "LIE", "locationIdentifier": "WL0" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 361/722 Notification(s) { "resourceType": "unloadingInstruction", "notificationType": "Create" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "id": "123e4567-e89b-12d3-a456-426614174000", 1.81.0 "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite" }, "owner": "OTM", "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "materialGroups": [ { "loadingInstructionIdentifier": "ID000000", "materialGroupIdentifier": 2, }], "materialUnits": [ { "lmiContext": "LIE", "lmiNumber":"ID000000", “weight”: 50, "equipmentIdentifier": “EQ0” 1.81.0 } ], "unloadingTransportLocation" : { "siteIdentifier" : "LIE", "locationIdentifier" : "WL0", }, "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 362/722 Update 1.65.0 HTTP Request PUT /transport-api/v1/transports/{transportIdentifier}/unloadinginstructions/{identifier} Request Parameters transportIdentifier (string) Unique identifier of the transport used in the TMS owner and all over the sites identifier (string) Request Body { … unloadingTransportLocation { siteIdentifier (string), locationIdentifier (string, optional) }, materialGroups ([ { loadingInstructionIdentifier (string), materialGroupIdentifier (string) }, …], optional), materialUnits ([ { lmiContext (string), lmiNumber (string), equipmentIdentifier (string) 1.81.0 }, …], optional) } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 363/722 Responses Response 200 (Created) Response 400 (BadRequest) 2739 A minimum of one or more MaterialGroup(s) or MaterialUnit(s) is requireds 2741 MaterialGroups are duplicated in the UnloadingInstruction 2742 MaterialUnits are duplicated in the UnloadingInstruction Response 403 (Forbidden) ValidationFailed (ex: Unloading TransportLocation cannot be updated) 1.84.0 34 Operation not allowed on Transport '{0}' when one LI is locked 49 Multiple UnloadingInstructions not allowed on same Transport 50 MaterialUnit(s) are marked for deletion 51 MaterialUnit(s) not found 2733 Could not update UnloadingInstruction because it's closed 1.81.0 2743 Could not update UnloadingInstruction because it's closed or completed 1.81.0 2734 Could not update UnloadingInstruction because it’s locked 2736 Could not update UnloadingInstruction because it is in 'confirmed' state. 1.81.0 2767 UnloadingInstruction '{0}': Unloading LocationIdentifier cannot be updated (old: '{1}' / new: '{2}' 1.84.0 2768 UnloadingInstruction '{0}': Unloading SiteIdentifier cannot be updated (old: '{1}' / new: '{2}') 1.84.0 Response 404 (NotFound) Transport not found Response 409 (Conflict) UnloadingInstruction with on same unloading location '{0}' already exists on Transport. Example { … "materialGroups": [ { "loadingInstructionIdentifier": "string", "materialGroupIdentifier": "string", }], "materialUnits": [ { "lmiContext": "string", "lmiNumber": "string", }], "unloadingTransportLocation": { "siteIdentifier": "string", "locationIdentifier": "string" }, } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 364/722 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 365/722 Notification(s) { "resourceType": "unloadingInstruction", "notificationType": "Udpated" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "id": "123e4567-e89b-12d3-a456-426614174000", 1.81.0 "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite" }, "owner": "OTM", "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "materialGroups": [ { "loadingInstructionIdentifier": "ID000000", "materialGroupIdentifier": 2, }], "materialUnits": [ { "lmiContext": "LIE", "lmiNumber":"ID000000", “weight”: 50, "equipmentIdentifier": “EQ0” 1.81.0 } ], "unloadingTransportLocation" : { "siteIdentifier" : "LIE", "locationIdentifier" : "WL0", }, "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } } } 1.84.0 ExecutionUpdated see chapter ExecutionUpdated 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 366/722 Partial update 1.84.0 HTTP Request PATCH /transport-api/v1/transports/{transportIdentifier}/unloadinginstructions/{identifier} Request Parameters identifier (string) Request Body { … unloadingInstruction: [ { value (Json), path (string), op (string) }, … ] } Responses Response 204 (NoContent) Response 403 (Forbidden) 2734 UnloadingInstruction is locked ValidationFailed 2767 UnloadingInstruction '{0}': Unloading LocationIdentifier cannot be updated (old: '{1}' / new: '{2}' 1.84.0 2768 UnloadingInstruction '{0}': Unloading SiteIdentifier cannot be updated (old: '{1}' / new: '{2}') 1.84.0 Response 404 (NotFound) Transport or UnloadingInstruction not found 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 367/722 Example { … "unloadingInstruction": [ { "path": "materialGroups", "op": "replace", "value": [ { "loadingInstructionIdentifier": "string", "materialGroupIdentifier": "string" }, …] }, { "path": "materialUnits", "op": "replace", "value": [ { "lmiContext": "string", "lmiNumber": "string" }, …] }, … ] } Notification(s) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 368/722 { "resourceType": "unloadingInstruction", "notificationType": "PartialUpdate" "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "id": { "identifier": "ID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite" }, "owner": "OTM", "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "materialGroups": [ { "loadingInstructionIdentifier": "ID000000", "materialGroupIdentifier": 2, }], "materialUnits": [ { "lmiContext": "LIE", "lmiNumber":"ID000000", “weight”: 50, "equipmentIdentifier": “EQ0” } ], "unloadingTransportLocation" : { "siteIdentifier" : "LIE", "locationIdentifier" : "WL0", }, "originalRequestInfo": { "requestedAt": "2020-04-02T15:28:06.1045871+02:00", "requestedBy": "TMS" } } } 1.84.0 ExecutionUpdated see chapter ExecutionUpdated 1.84.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 369/722 Get by identifier Since version 0.0.71 we recommend to use the Artemis.Transport.Query service to retrieve this resource. The documentation is available directly in Swagger (http://+:5505/swagger) but is rather close to this one although some addititional information is available. 1.65.0 Retrieve an unloading instruction by identifier. HTTP Request GET /transport-api/v1/transports/{transportIdentifier}/unloadinginstructions/{identifier} Request Parameters transportIdentifier (string) Unique identifier of the transport used in the TMS owner and all over the sites identifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 370/722 { … id (Guid), identifier (string), siteIdentifier (string), 1.81.0 locked (bool), 1.81.0 state (string), 1.81.0 unloadingTransportLocation { siteIdentifier (string), locationIdentifier (string, optional) }, materialGroups ([ { loadingInstructionIdentifier (string), materialGroupIdentifier (string) }, …], optional), materialUnits ([ { lmiContext (string), lmiNumber (string), equipmentIdentifier (string) 1.81.0 equipment [ 1.84.0 identifier (string), vehicleTypeIdentifier (string, optional), vehicleName (string, optional), metadata (json, optional), internalMetadata (json, optional) ], }, …], optional) } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 371/722 Response 404 (NotFound) Example { "id": "123e4567-e89b-12d3-a456-426614174000", "identifier": "ID000000", "siteIdentifier": "ID000000", "isLocked": false, "state": "Cancelled", "materialGroups": [ { "loadingInstructionIdentifier": "string", "materialGroupIdentifier": "string", }], "materialUnits": [ { "lmiContext": "string", "lmiNumber": "string", "equipmentIdentifier": "string" }], "unloadingTransportLocation": { "siteIdentifier": "string", "locationIdentifier": "string" }, } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 372/722 Get all 1.65.0 Retrieve all unloading instruction(s) of a transport. HTTP Request GET /transport-api/v1/transports/{transportIdentifier}/unloadinginstructions Request Parameters transportIdentifier (string) Unique identifier of the transport used in the TMS owner and all over the sites Responses Response 200 (Ok) [ { … id (Guid), identifier (string), siteIdentifier (string), 1.81.0 locked (bool), 1.81.0 state (string), 1.81.0 unloadingTransportLocation { siteIdentifier (string), locationIdentifier (string, optional) }, materialGroups ([ { loadingInstructionIdentifier (string), materialGroupIdentifier (string) }, …], optional), materialUnits ([ { lmiContext (string), lmiNumber (string), equipmentIdentifier (string) 1.81.0 }, …], optional) }, … ] Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 373/722 Example [{ "id": "123e4567-e89b-12d3-a456-426614174000", "identifier": "ID000000", "siteIdentifier": "ID000000", "isLocked": false, "state": "Cancelled", "materialGroups": [ { "loadingInstructionIdentifier": "string", "materialGroupIdentifier": "string", }], "materialUnits": [ { "lmiContext": "string", "lmiNumber": "string", "equipmentIdentifier": "string" }], "unloadingTransportLocation": { "siteIdentifier": "string", "locationIdentifier": "string" }, } }, { "id": "456e4567-e89b-12d3-a456-426614174123", "identifier": "ID111111", "materialGroups": [ { "loadingInstructionIdentifier": "string", "materialGroupIdentifier": "string", }], "materialUnits": [ { "lmiContext": "string", "lmiNumber": "string", }], "unloadingTransportLocation": { "siteIdentifier": "string", "locationIdentifier": "string" }, } },] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 374/722 Cancel 0.0.67.0 1.84.0 Removed HTTP Request DELETE /transport-api/v1/transports/{identifier}/unloadinginstruction Request Parameters identifier (string) Request Body { …, reason (string) = ['Cancellation'] } Responses Response 200 (Ok) Response 400 (BadRequest) 2749 Deletion reason not allowed on unloading instruction: '{0}' 0.0.74.0 Response 403 (Forbidden) 52 Operation is not allowed on Transport (i.e. Transport already Cancelled) 2750 Could not delete unloading instruction because it is in 'cancelled' state. 2751 Could not delete unloading instruction because it is in 'closed' state. 2752 Could not delete unloading instruction because it is in 'executed' state. 2753 Could not delete unloading instruction because it is locked. Response 404 (NotFound) 5 Transport '{0}' not found 60 Unloading Instruction not found on site Example { … "reason": "Cancellation" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 375/722 Notification(s) { "notificationType": "UnloadingRemoved" "resourceType": "transport", "scope": "", "sender": "Artemis.Transport.Execution ", "data": { "context": { "key": "value" }, "type": "road", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "owner": "Syltram", "reason": "Cancellation", "transportType": "Shipment", 1.84.0 "originalRequestInfo": { "requestedAt": "2022-03-02T04:44:01.1323391+01:00", "requestedBy": "RequestedBy2d58f099-74db-4028-9d3c-68bd87e35fc0" } } { "notificationType": "Deleted" "resourceType": "unloadinginstruction", "scope": "", "sender": "Artemis.Transport.Instruction", "data": { "context": { "key": "value" }, "id": { "id": "59d40ccb-4f9a-ec11-937e-10e7c6313bdb", "identifier": "ID000000", "transportIdentifier": "T0", "transportType": "Shipment", "siteIdentifier": "ID111111" }, "owner": "owner", "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "reason": "Cancellation" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 376/722 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 377/722 Delete 1.84.0 HTTP Request DELETE /transport-api/v1/transports/{transportIdentifier}/unloadinginstructions/{identifier} Request Parameters transportIdentifier (string) identifier (string) Request Body { …, reason (string) } Responses Response 200 (Ok) Response 400 (BadRequest) 2749 Deletion reason not allowed on unloading instruction: '{0}' 0.0.74.0 Response 403 (Forbidden) 52 Operation is not allowed on Transport (i.e. Transport already Cancelled) 2752 Could not delete unloading instruction because it is in 'executed' state. 2753 Could not delete unloading instruction because it is locked. Response 404 (NotFound) 5 Transport '{0}' not found 60 Unloading Instruction not found on site Example { … "reason": "Cancellation" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 378/722 Notification(s) { "notificationType": "UnloadingRemoved" "resourceType": "transport", "scope": "", "sender": "Artemis.Transport.Execution ", "data": { "context": { "key": "value" }, "type": "road", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "owner": "Syltram", "reason": "Cancellation", "originalRequestInfo": { "requestedAt": "2022-03-02T04:44:01.1323391+01:00", "requestedBy": "RequestedBy2d58f099-74db-4028-9d3c-68bd87e35fc0" } } { "notificationType": "Deleted" "resourceType": "unloadinginstruction", "scope": "", "sender": "Artemis.Transport.Instruction", "data": { "context": { "key": "value" }, "id": { "id": "59d40ccb-4f9a-ec11-937e-10e7c6313bdb", "identifier": "ID000000", "transportIdentifier": "T0", "transportType": "Shipment", "siteIdentifier": "ID111111" }, "mode": "truck | wagon | barge | vessel | airplane", 1.0.85 "owner": "owner", "reason": "Cancellation" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 379/722 4.11. Truck Create Carrier 0.0.30.0 HTTP Request POST /transport-api/v1/carriers 0.0.39.0 Request Body { … identifier (string), gvwr (integer, optional), vmsIdentificationDate (string), metadata (json, optional), drivers ([ { identifier (string, optional), name (string) } ], optional), supplier ({ expected (boolean), name (string) }, optional), freeLocation ({ name (string, optional), type (string, optional), metadata (json, optional) }, optional), plateNumber (string), typeIdentifier (string, optional) = [carrier], siteIdentifier (string, optional), (Transport-Location-Id is used if not specified) 0.0.62.0 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 380/722 Responses Response 200 (Ok) Response 400 (BadRequest) 403 Vehicle Type not found 407 Place number is invalid 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 408 Vehicle type base name '{0}' does not match with the transport mode of the currently updated vehicle. Response 409 (Conflict) 400 Vehicle already on site or same identifierhas already been used Example { … "identifier": "string", "gvwr": 0, "siteIdentifier": "string", "vmsIdentificationDate": "2020-02-20T15:37:53.580Z", "metadata": {}, "drivers": [ { "identifier": "string", "name": "string" } ], "supplier": { "expected": true, "name": "string", "identifier": "string" }, "freeLocation": { "name": "string", "type": "string", "metadata": {} }, "plateNumber": "string", "typeIdentifier": "string" } Notifications Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 381/722 { "notificationType": "VehicleCreated", 0.0.54.0 "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "carrier", "identifier": "identifierTest", "name": "b-fb293en", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 382/722 Create Semi Trailer Truck 0.0.30.0 HTTP Request POST /transport-api/v1/semi-trailer-trucks 0.0.39.0 Request Body { … identifier (string), name (string), metadata (json, optional), gvwr (integer, optional), vmsIdentificationDate (datetime), drivers ([ { identifier (string, optional), name (string) } ], optional), supplier ({ expected (boolean), name (string) }, optional), freeLocation ({ name (string), type (string), metadata (json, optional) }, optional), tractor ({ identifier (string), plateNumber (string) }, optional), trailer { identifier (string), plateNumber (string), typeIdentifier (string, optional) = ['semiTrailer'] }, siteIdentifier (string, optional) } â–ª Identifier (text, mandatory) It is the identifier (like a GUID) of the truck given internally by the truck VMS. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 383/722 There is only one truck with that Truck.Identifier on all sites managed by an Artemis core instance. â–ª Name (text, optional) It defines the name given by the ‘user’ to the truck. There is only one truck with that Truck.Name on the site defined by SiteIdentifier. On certain site as in Liège, it is the internal number of the truck given by the VMS. It could be followed by the trailer or carrier plate number. If not defined, Truck.Name is computed by Artemis core: It is the plate number of the trailer if it is a semi-trailer It is the plate number of the carrier if it is a carrier â–ª Metadata (json, optional) Any metadata used/required by local system relatively to the truck such as phone call of the truck driver, … â–ª GVWR (long in kg, optional) It defines the Gross Vehicle Weight Rating of the truck. In the future, if the truck consists of two trailers (towed trailers), then the GVWR is for the entire hitch (and not one of the trailers). For trucks, the GVWR is required by some countries (France, …) and not needed for others (Belgium, …). When the GVWR is not defined, Artemis will not perform the controls that use the GVWR. It’s the responsibility of the local systems (VMS) or people to provide this information if it is required. â–ª SiteIdentifier (text, optional) 0.0.62.0 It defines the site in which the truck is working when it is created. A WarehouseLocation of type Site with the same identifier should exist. Value of Transport-Location-Id header is used if SiteIdentifier is not provided o VmsIdentificationDate (datetime, mandatory) This is the first timestamp at which the truck VMS detects an event on the truck on the site (or maybe outside the site) where it is created. Examples: It could be when the barrier automatically opens on plate recognition (before registration) at PEPA parking at Avilés. It could be when the driver uses first his badge to open the entrance barrier like in Liège. It could be at beginning of registration HMI. It could be at first weighing before registration. The Truck.FirstIdentificationDateByVMS will be used later by Artemis core to generate the TMS event ‘Transport arrival’. â–ª Drivers (list, optional) It defines a list of drivers and information related to each of them One or several driver’s names could be defined (4 driver’s names is a real case). Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 384/722 â–ª Identifier (text, optional) It defines the number of the badge given to the driver when he enters in the site. Note that it could also be the permanent badge of the driver. There is only one active truck with that Truck.Drivers.BadgeIdentifier on the site. â–ª â–ª â–ª Name (text, mandatory) It is a the name of the truck driver. FreeLocation (optional) â–ª Name (text, mandatory) It defines the name (a simple string) of the location on which the Truck is located when it is created. â–ª Type (text, mandatory) It defines the type (e.g. Parking, CheckIn, Weighing bridge, CheckOut, …) of free location on which the Truck is located when it is created. Artemis doesn’t check that truck VMS use only type usable by truck VMS. â–ª Metadata (text, optional) It defines the name (a simple string) of the location on which the Truck is located when it is created Tractor (optional) o Identifier (text, mandatory) It is the identifier of the vehicle given internally by the truck VMS. There is only one vehicle with that Vehicle.Identifier on all sites managed by an Artemis core instance. o PlateNumber (text, mandatory) It is the plate number of the vehicle. The plate number is always (for internal or shipment transport) stricktly formatted like this: L..L-P..P (example : B-1HFA111) with: â–ª L..L = country letters, 1 to 3 upper case letter from A to Z defined by the international vehicle letter of the matriculation country of the truck (cf. https://en.wikipedia.org/wiki/International_vehicle_registration_code ). However, Artemis core doesn’t check that it is an ISO code of a country. It is caller responsibility to check that. For trucks used only internally, instead of country code, we can have the site code (that is our recommendation) or INC (for Inconnu) or UNK (for Unknown). â–ª - = constant dash character to separate immatriculation country code and plate number â–ª P..P = license plate or internal identification, from 4 to 10 alpha characters (0 to 9 or A to Z) in uppercase and without any other character (space or . or - or ...) Within a truck, a plate number could be used only once. In other words, the plate number of the trailer and of the tractor should be different. There is only one vehicle on an active truck with that VehiclePlateNumber on the site. Version 1.84.0 Marechal Frédéric Artemis.Core Business API Documentation 385/722 As a consequence, there could be a same active Truck in in Desvres and in Mardyck at the same time. Even it is physically impossible, Artemis allow it because a user works on a site and cannot do anything on another one. â–ª Trailer (mandatory) o Identifier (text, mandatory) It is the identifier of the vehicle given internally by the truck VMS. There is only one vehicle with that Vehicle.Identifier on all sites managed by an Artemis core instance. o PlateNumber (text, mandatory) o TypeIdentifier (text, optional) The type of the vehicle. See the content of entity VehicleType. For a semi-trailer, there is only one vehicle of category Tractor and one of category Trailer. Category is a property of VehicleType For a carrier, there is only one vehicle of type ‘Carrier’. Responses Response 200 (Ok) Response 400 (BadRequest) 403 Vehicle Type not found 407 Plate number is invalid 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 408 Vehicle type base name '{0}' does not match with the transport mode of the currently updated vehicle. Response 409 (Conflict) 400 Vehicle already on site or same identifierhas already been used 410 Cannot create this truck because trailer '{0}' is already used in another truck 411 Cannot create this truck because tractor '{0}' is already used in another truck Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 386/722 Example { … "identifier": "string", "gvwr": 0, "siteIdentifier": "string", "vmsIdentificationDate": "2020-02-20T15:37:53.610Z", "metadata": {}, "drivers": [ { "identifier": "string", "name": "string" } ], "supplier": { "expected": true, "name": "string", "identifier": "string" }, "freeLocation": { "name": "string", "type": "string", "metadata": {} }, "name": "string", "tractor": { "identifier": "string", "plateNumber": "string" }, "trailer": { "identifier": "string", "plateNumber": "string", "typeIdentifier": "string" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 387/722 Notifications { "notificationType": "VehicleCreated", 0.0.54.0 "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "semiTrailerTruck", "identifier": "identifierTest", "name": "nameTest", "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 388/722 Update Truck 0.0.47.0 HTTP Request PUT /transport-api/v1/trucks/{name} 0.0.47.0 Request Body { … metadata (json, optional), gvwr (integer, optional), vmsIdentificationDate (datetime), drivers ([ { identifier (string, optional), name (string) } ], optional), supplier ({ expected (boolean), name (string) }, optional), 0.0.62.0 siteIdentifier (string, optional), (Transport-Location-Id is used if not specified) } Responses Response 200 (Ok) Response 400 (BadRequest) 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 404 (NotFound) 11 Physical Vehicle Group not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 389/722 Example { … "gvwr": 0, "vmsIdentificationDate": "2020-12-16T12:31:25.235Z", "metadata": {}, "drivers": [ { "identifier": "string", "name": "string" } ], "supplier": { "expected": true, "name": "string" } } Notification { "notificationType": "VehicleUpdated", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "carrier", "identifier": "carrierTest", "name": "myName" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 390/722 { "notificationType": "VehicleUpdated", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "semiTrailerTruck", "identifier": "semiTrailerTruckTest", "name": "myName", "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 391/722 Update Semi Trailer Truck 0.0.78.0 HTTP Request PUT /transport-api/v1/semi-trailer-trucks/{name} Request Body { … metadata (json, optional), gvwr (integer, optional), vmsIdentificationDate (datetime), drivers ([ { identifier (string, optional), name (string) } ], optional), supplier ({ expected (boolean), name (string) }, optional), trailer ({ typeIdentifier (boolean, optional), metadata (string, optional) }, optional), siteIdentifier (string, optional), (Transport-Location-Id is used if not specified) } Responses Response 200 (Ok) Response 400 (BadRequest) 403 VehicleType not found 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 66 Cannot change type identifier of an allocated vehicle '{0}' 408 Vehicle type base name '{0}' does not match with the transport mode of the currently updated vehicle. Response 404 (NotFound) 6 Physical Vehicle not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 392/722 Example { … "gvwr": 123, "vmsIdentificationDate": "2020-12-16T12:31:25.235Z", "metadata": {}, "drivers": [ { "identifier": "string", "name": "string" } ], "supplier": { "expected": true, "name": "string" }, "trailer": { "typeIdentifier": "string", "metadata": {} } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 393/722 Notification { "notificationType": "VehicleUpdated", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "semiTrailerTruck", "identifier": "semiTrailerTruckTest", "name": "myName", "tractor": { "name": "b-fb293en", "identifier": "tractorTest" }, "trailer": { "name": "b-fb293ef", "identifier": "trailerTest" }, "gvwr": 123 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 394/722 Get Truck 0.0.30.0 HTTP Request GET /transport-api/v1/trucks/{name} 0.0.39.0 GET /transport-api/v1/trucks/name={name} 0.0.70.0 GET /transport-api/v1/trucks/identifier={identifier} 0.0.70.0 Request Parameters name (string) identifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 395/722 Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 396/722 { supplier ( { expected (string), name (string), identifier (string, optional) }, optional), weighings ([ { date (datetime), weight (long), weighBridgeName (string, optional), source (string) = [‘WeighBridge’, ‘User’, ‘Historical’], metadata (json, optional), siteIdentifier (string, optional) }]), siteIdentifier (string, optional), type (string) = [‘Carrier’, ‘SemiTrailerTruck’], name (string, optional), identifier (string, optional), vmsIdentifierDate (datetime, optional), locatedOn { locationType (string) = [‘Bay’], bayIdentifier (string), label (string), name (string), requestedBy (string), requestedAt (datetime), metadata (json, optional) or 1.84.0 locationType (string) = [‘FreeLocation’], label (string), name (string), freeLocationType (string), requestedBy (string), requestedAt (datetime), metadata (json, optional) }, tagIdentifier (string, optional), gvwr (int, optional), 0.0.74.0 drivers ([ { name (string), identifier (string, optional) }], optional), crossGateEvents { entryCrossGateEvent { date (datetime), gateIdentifier (string) }, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 397/722 exitCrossGateEvent { date (datetime), gateIdentifier (string) }, }, carrierTypeIdentifier (string, optional), tractor ( { name (string, optional), tagIdentifier (string, optional), identifier (string, optional), vmsIdentificationDate (string, optional), siteIdentifier (string, optional), 0.0.74.0 metadata (json, optional) }, optional), globalTransportIdentifier (string, optional), deprecated 1.81.0 (value is specified only when transport state is not ‘Closed’ or ‘Completed’) transport { 1.81.0 identifier (string), state (string), type (string) = [‘Intrasite’, ‘Shipment’], owner (string) }, trailer ( { typeIdentifier (string, optional), name (string, optional), tagIdentifier (string, optional), identifier (string, optional), vmsIdentificationDate (string, optional), siteIdentifier (string, optional), 0.0.74.0 metadata (json, optional), equipmentIdentifier (string, optional), transportIdentifier (string, optional), 1.81.0 loadPlan: { metadata (Json, optional), toLoad: [{ material { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 398/722 }], toCheck: [{ lmiContext (string), lmiNumber (string), }], checked: [{ lmiContext (string), lmiNumber (string), success (boolean, optional), reason (string, optional), comment (string, optional) }], loaded: [{ materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) }, actualPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), expectedPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], impossibleToLoads: [{ lmiContext (string), lmiNumber (string), }], toUnload: [{ lmiContext (string), lmiNumber (string) }], unloaded: [{ lmiContext (string), lmiNumber (string) }] }, loadedMaterialUnits [{ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 399/722 materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string), spireOrientation (string) } (optional), } (optional), loadingDateTime (datetime), metadata (json, optional), siteIdentifier (string, optional }], currentState (string, optional), transportExecutionMetadata (json, optional) }, optional) } Response 404 (NotFound) Truck not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 400/722 Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 401/722 { "supplier": { "expected": true, "name": "Frisaye", "identifier": null }, "weighings": [ { "requestedBy": null, "requestedAt": "2020-02-12T15:05:27.407+00:00", "context": null, "date": "2020-02-12T15:05:27.407+00:00", "weight": 25000, "weighBridgeName": "Entry bridge", "source": "weighBridge", "metadata": {}, "siteIdentifier": "LIE" }, { "requestedBy": null, "requestedAt": "2020-02-12T17:35:27.407+00:00", "context": null, "date": "2020-02-12T17:35:27.407+00:00", "weight": 55000, "weighBridgeName": "Entry bridge", "source": "weighBridge", "metadata": {}, "siteIdentifier": "LIE" } ], "metadata": {}, "siteIdentifier": "LIE", "type": "semiTrailerTruck", "name": "SemiTrailerName-1.1TD", "identifier": "SemiTrailerId1.1TD", "vmsIdentificationDate": "2019-11-07T14:10:04.911+00:00", "locatedOn": { "locationType": "freeLocation", "bayIdentifier": null, "label": null, "name": "Parking B", "freeLocationType": "Parking", "requestedBy": "Requester-1.1TD", "requestedAt": "2019-11-07T14:10:04.911+00:00", "metadata": {} }, "tagIdentifier": null, "gvwr": 42500, "drivers": [ { "identifier": "Driver id", "name": "Driver name" Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 402/722 }], "crossGateEvents": { "entryCrossGateEvent": { "date": "2020-10-12T08:08:38.687+00:00", "gateIdentifier": "Entry Gate A26" }, "exitCrossGateEvent": { "date": "2020-10-12T08:08:38.687+00:00", "gateIdentifier": "Exit Gate U10" } }, "carrierTypeIdentifier": null, "tractor": { "name": "B-1PN12TR", "tagIdentifier": null, "identifier": "TractorId-1.1TD", "vmsIdentificationDate": null, "siteIdentifier": null, "metadata": {} }, "globalTransportIdentifier": "Transport-1.1TD", "trailer": { "typeIdentifier": null, "name": "B-1PN22TL", "tagIdentifier": null, "identifier": "TrailerId-1.1TD", "vmsIdentificationDate": null, "siteIdentifier": null, "metadata": {}, "equipmentIdentifier": null, "transportIdentifier": "Transport-1.1TD", "loadPlan": { "toLoad": [], "toCheck": [], "loaded": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "LM-1.1TD_1", "materialGroup": "materialGroupA-1.1TD" }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "expectedPosition": { "cradleFrontToRearIndex": 101, "cradleLeftToRightIndex": 102, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 403/722 "level": 103, "orientation": "axisVertical", "spireOrientation": "topToFront" } }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "LM-1.2TD_2", "materialGroup": "materialGroupB-1.1TD" }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "expectedPosition": { "cradleFrontToRearIndex": 201, "cradleLeftToRightIndex": 202, "level": 203, "orientation": "axisVertical", "spireOrientation": "topToFront" } } ], "checked": [ { "lmiContext": "LIE", "lmiNumber": "LM-1.1TD_1", "success": true, "reason": "Check OK", "comment": "RAS" }, { "lmiContext": "LIE", "lmiNumber": "LM-1.2TD_2", "success": true, "reason": "Check OK", "comment": "RAS" } ], "impossibleToLoads": [], "toUnload": [], "unloaded": [], "metadata": {} }, "loadedMaterialUnits": { "materialUnit": [ { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 404/722 "lmiContext": "LIE", "lmiNumber": "LM-1.1TD_1", "weight": 20250 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "loadingDateTime": "2019-11-12T15:36:09.411+00:00", "metadata": {}, "siteIdentifier": "LIE" }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "LM-1.2TD_2", "weight": 18250 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "loadingDateTime": "2019-11-12T15:36:09.411+00:00", "metadata": {}, "siteIdentifier": "LIE" }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "LM-1.3TD_3", "weight": 19250 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "loadingDateTime": "2019-11-12T15:36:09.411+00:00", "metadata": {}, "siteIdentifier": "LIE" } ], "currentState": "Executed", Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 405/722 "transportExecutionMetadata": {} } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 406/722 Entry or Exit cross gate 0.0.43.0 The goal of this method is to specify the date time of entry / exit cross gate. This will be mainly used for reporting (reason why ‘date’ is mandatory) HTTP Request POST /transport-api/v1/trucks/{name}/cross-gate-event Request Parameters name (string) Request Body { … type (string) = [‘entryGateCrossed’, ‘exitGateCrossed’], date (datetime), gateIdentifier (string, optional) } Responses Response 200 (Ok) Response 404 (NotFound) Truck not found Example { … "type": "entryGateCrossed”, "date": "2020-09-29T16:10:10.3424433+02:00", "gateIdentifier": "gateName” } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 407/722 Notification Example { "notificationType": "EntryGateCrossed" | "ExitGateCrossed", "resourceType": "truck", "scope": "", "sender": "", "data": { "type": "semiTrailerTruck", "identifier": "semiTrailerTruckTest", "name": "myName", "gateIdentifier": "GateIdentifier", "siteIdentifier": "LIE", 0.0.53.0 "date": "2020-09-29T16:12:50.7824043+02:00", "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } "originalRequestInfo": { "requestedAt": "2020-09-29T16:12:50.7824043+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 408/722 Truck arrived at bay 0.0.30.0 HTTP Request PUT /transport-api/v1/trucks/identifier={identifier}/bay/{bayIdentifier} 0.0.39.0 PUT/transport-api/v1/trucks/name={name}/bay/{bayIdentifier} 0.0.39.0 Request Parameters identifier (string) or name (string) bayIdentifier (string) Request Body { metadata (json, optional), } Responses Response 200 (Ok) Response 400 (BadRequest) Response 404 (NotFound) 14 Bay not found Truck not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 409/722 Notification { "notificationType": "TruckVehicleArrivedAtBay", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "semiTrailerTruck", "identifier": "semiTrailerTruckTest", "name": "myName", "location": { 0.0.48.0 "type": "bay", "bayIdentifier": "bayIdentifier" }, "previousLocation": { 0.0.48.0 "type": "freeLocation", "name": "InTransit", "freeLocationType": "InInternalTransit" }, "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "metadata":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 410/722 Truck arrival at a free Location 0.0.32.0 This method is used to locate a truck in a free location. For more details on free location, please read 5.1 FreeLocation definition. HTTP Request PUT /transport-api/v1/trucks/{name}/free-location 0.0.39.0 Request Parameters name (string) Request Body { … name (string), type (string), metadata (json, optional) } â–ª FreeLocationType (enum, mandatory) It defines the type (e.g. Parking, CheckIn, Weighing bridge, CheckOut, …) of free location on which the Truck is located. For more details, please read 5.1 FreeLocation definition. Artemis doesn’t check that truck VMS use only type usable by truck VMS. â–ª FreeLocationName (text, mandatory) It defines the name (a simple string) of the location on which the Truck is located. For more details, please read 5.1 FreeLocation definition. â–ª LocationMetaData (json, optional) Any metadata used/required by local system relatively to the location of the truck. Responses Response 200 (Ok) Response 403 (Forbidden) 405 Location change request out of date Response 404 (NotFound) Truck not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 411/722 Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "name":"T0", "type":"freeLocationType", "metadata": null } Notification(s) { "notificationType": "TruckVehicleLocatedOnFreeLocation", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "type": "carrier", "identifier": "carrierTest", "name": "b-fb293en", "location": { "type": "freeLocation", "name": "InTransit", "freeLocationType": null }, "previousLocation": { "type": "bay", "bayIdentifier": "bayIdentifier" }, "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 412/722 Truck departure from a bay 0.0.32.0 This method is used to indicate to Artemis core that a truck leaves a bay. HTTP Request DELETE /transport-api/v1/trucks/{name}/bay 0.0.39.0 Request Parameters name (string) Request Body { … bayIdentifier (string, optional), metadata (json, optional), freeLocationName (string, optional), freeLocationType (string, optional) 0.0.67.0 } â–ª Identifier (text, mandatory): it is the identifier (like a GUID) of the truck given internally by the truck VMS. There is only one truck with that Truck.Identifier on all sites managed by an Artemis core instance. â–ª BayIdentifier (text, mandatory): it defines the bay from which the Truck left. A Bay with the same identifier should exist. The Bay should be located within the same site as the Truck is. The Bay should should be the same as where the Truck is located. â–ª FreeLocationName (text, optional): it allows specific to define where the Truck will go (if VMS knows that). When empty, Artemis will initialze FreeLocationName with ‘In transit’ â–ª FreeLocationType (text, optional): It defines the type (e.g. Parking, CheckIn, Weighing bridge, CheckOut, …) of free location on which the Truck is located. For more details, please read 5.1 FreeLocation definition. Artemis doesn’t check that truck VMS use only type usable by truck VMS. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 413/722 Responses Response 200 (Ok) Response 403 (Forbidden) 405 Location change request out of date Response 404 (NotFound) 14 Bay not found 40 Truck not found Example { … "bayIdentifier": "ID000000", "metadata": null, "freeLocationName": "freeLocation", "freeLocationType": "Parking" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 414/722 Notification Example 1 { "notificationType": "TruckVehicleLeftBay", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-23T11:08:24.7984371+00:00", "requestedBy": "owner" }, "type": "carrier", "identifier": "carrierTest", "name": "b-fb293en", "location": { "type": "freeLocation", "name": "InTransit", "freeLocationType": "Parking" }, "previousLocation": { "type": "bay", "bayIdentifier": "bayIdentifier" }, "expectedBayIdentifier": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 415/722 Example 2 { "notificationType": "TruckVehicleLeftBay", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-23T11:08:24.7984371+00:00", "requestedBy": "owner" }, "type": "semiTrailerTruck", "identifier": "semiTrailerTruckTest", "name": "myName", "location": { "type": "freeLocation", "name": "InTransit", "freeLocationType": "Parking" }, "previousLocation": { "type": "bay", "bayIdentifier": "bayIdentifier" }, "expectedBayIdentifier": "unknownBay", "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 416/722 Allocate Truck to Transport 0.0.31.0 AllocateTruckToTransport business command should be used for the allocation of a Truck to a Transport at the every site. When there are several sites (muli sites loading), the registration at the other sites than the first one must also be done with this API. Before that the truck his location should be changed by uypdating the site identifier property. There are some controls done in AllocateTruckToTransport. If a control fail, the Truck simply can not be welcomed and assigned to the transport. The Truck should leave the site and there is no downgraded alternative. Artemis does not keep trace of this trial to allocate the truck to the transport in these cases of error. Of course, user will have to do a TruckRegistrationRefused. The welcome process could be done in a single wizard HMI in the truck VMS. In that case, the connector will do first a CreateTruck and after, if CreateTruck is OK, a AllocateTruckToTransport. If there is an error in AllocateTruckToTransport, we recommnd to do a DeleteTruck, so everything stays clean. HTTP Request POST /transport-api/v1/transports/{identifier}/truck 0.0.48.0 Please wait notification state changed to ‘Confirmed’ before call this uri. Request Body { … name (string), 0.0.70.0 deprecated. Use truckIdentification property instead truckIdentification ( { type (string) = [‘byName’, ‘byIdentifier’], value (string) } ), 0.0.70.0 supplier ({ expected (boolean), name (string), identifier (string, , optional) }, optional) } â–ª Identifier (text, mandatory) It is the Identifier of the Transport on which the truck will be allocated The Transport should: o Be fully defined o Its state should be ‘Confirmed’ o Transport mode should be for truck o Have a ‘Confirmed’ Loading Instruction for a loading site which is the same as the site where the Truck is located. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 417/722 â–ª TruckIdentification (mandatory) o Type (text, mandatory) Defines the which property is used to identify the truck, possible values are • ByName • ByIdentifier o Value (text, mandatory) The name or identifier (depending on the selected type) of the truck The Truck should be: o Active o Not yet allocated to a Transport â–ª Expected (enum, mandatory) It defines if the transporter is the same as the expected one in the Transport (when it is defined). Following values are defined: o Yes: it is the same transporter as expected o No: it is not the same transporter as expected o Undefined: the user has not informed the system if the transport is the same or not as the one expected â–ª Name (text, mandatory) It defines the real name of the transporter. It modify the property defined in CreateTruck. It should be fulfilled when Truck.RealExecutingSupplierAsForeseen is equal to No. Normaly, it should be an existing ExecutingSupplierName however, as the executing supplier could be unknown as supplier in ArcelorMittal database, we should accept it as free text and without any control. From a HMI point of view, truck VMS could have an autocomplete field on ExecutingSupplierName (like in Google) and allow free text. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 418/722 Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 23 Transport And Physical Vehicle mode are different 36 Transport is not fully defined 292 Allocation is forbidden because mobile container is loaded (and already allocated) Response 404 (NotFound) 5 Transport not found 11 Physical Vehicle Group not found 32 Transport ‘{0}’ not found on site Response 409 (Conflict) 12 Vehicle '{0}' is already associated to the transport '{1}' for loading site '{2}' 17 Another vehicle '{0}' is already associated to the transport '{1}' for loading site '{2}' Response 502 (BadGateway) 44 MaterialUnit '{0}' ‘{1}’ not found in MaterialUnit context If you receive a ‘Bad Gateway’, please retry to send request in few seconds. Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "truckIdentification": { “type": "byName" "value: "T0" } "supplier":[ { "expected":"xxx", "name":"yyy } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 419/722 Notifications { "notificationType": "StateChanged" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "oldValue": null, "newValue": "Confirmed", "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road" } } Transport arrived { "notificationType": "TransportArrived", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road", 0.0.51.0 "arrivalDateTime": "2019-12-23T14:53:08.6760606+00:00", "owner": "TMS", "transportType": "Shipment", 1.84.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 420/722 Truck allocated { "notificationType": "TruckVehicleAllocated", 0.0.51.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier": "LIE", "transportowner": "TMS", 0.0.52.0 "truckIdentifier": "ID000000", "truckName": "T0", "trailers": [ { "name": "trailerID000000", "identifier": "ID000000" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 421/722 Transport State changed { "notificationType": "stateChanged", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "oldValue": "Confirmed", "newValue": "InProgress", "transportIdentifier": "T0", "siteIdentifier": "LIE", "owner": "TMS", "type": "road" } } Failed to Show up If the registration is done outside the time slot [earliest;latest], then Artemis core automatically generates a business notification ‘FailedToShowUp’, whether the control is strict or not (ArrivalTimeSlotIsStrict). { "notificationType": "FailedToShowUp", "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-27T08:10:11.3042083+00:00", "requestedBy": "owner" }, "identifier": "ID000000", "name": "T0", "transportIdentifier": "ID000000", "transportowner": "TMS", 0.0.52.0 "siteIdentifier": "LIE", "reason": "late" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 422/722 Material Unit(s) not accessible { "notificationType": "NotAccessibleMaterialUnitsDetected", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-27T08:13:47.2426005+00:00", "requestedBy": "owner" }, "identifier": "ID000000", "owner": "TMS", "siteIdentifier": "LIE", "notAccessibleMaterialUnits": [ { "lmiNumber": "lmiNumber", "lmiContext": "lmiContext", "reason": "reason" } ] } } Notifications WeightChecked No weighings present Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 423/722 { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-26T16:05:25.7815253+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "NotExecuted", "message": "Cannot evaluate truck weight conformity because the truck has never been weighed." }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 424/722 No check was performed { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-26T16:05:25.7815253+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "NotExecuted", "message": "The GVWR check was skipped because GVWR was not defined." }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 425/722 Check was successful { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-26T16:07:19.4272507+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "Success", }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 426/722 Transport ‘MAM’ is too small { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:31:00.7464466+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "success": false, "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "Failure", "message": "The transport MAM '…' is too low to allow the loading of the requested material units.” }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 427/722 Transport ‘GVWR is too small { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:34:51.5105062+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "success": false, "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "Failure", "message": "The vehicle GVWR '…' is too low to allow the loading of the requested material units.” }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 428/722 Encoded derogation does not allow the transport to be loaded { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:34:51.5105062+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "success": false, "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "Failure", "message": "The derogation mass '…' does not allow the transport to be loaded.” }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 429/722 Current weight of truck is above expected (last empty truck + loaded MUs) 0.0.43.0 { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:31:00.7464466+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "Failure", "message": "The current weight value '…' is above the expected one '…' considering the current loaded material units.” }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 430/722 Current weight of truck is lower than expected (last empty truck + loaded MUs) 0.0.43.0 { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:31:00.7464466+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "state": "Failure", "message": "The current weight value '…' is below the expected one '…' considering the current loaded material units.” }] } } Anomaly See FailureToShowUp Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 431/722 Deallocate Truck from Transport 0.0.47.0 Deallocating a truck will deallocate all trailers from the truck, followed by the truck itself. HTTP Request DELETE /transport-api/v1/transports/{identifier}/truck 0.0.47.0 Request Body { … } Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 36 Transport is not fully defined 47 Truck not allocated 54 Transport mode '{0}' is not supported 55 Transport '{0}' has no allocated vehicle Response 404 (NotFound) 5 Transport not found 11 Physical Vehicle Group not found 32 Transport '{0}' not found on site Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" } } Notifications Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 432/722 { "notificationType": "EventRaised" "resourceType": "transport", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "eventType": "deallocation", "identifier": "ID000000", "name": "T0", "originalRequestInfo": { "requestedAt": "2020-10-15T11:49:38.0098233+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } 0.0.58.0 { "notificationType": "VehicleDeallocated" "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", "siteIdentifier": "LIE", "owner": "TMS", "identifier": "ID000000", "name": "T0", "trailers": [ { "name": "trailerID000000", "identifier": "ID000000" }, "lastVehicle": true, "originalRequestInfo": { "requestedAt": "2020-10-15T11:49:38.0098233+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 433/722 Record a new weighing of a truck 0.0.33.0 HTTP Request POST /transport-api/v1/trucks/{name}/weighings 0.0.69.0 POST /transport-api/v1/trucks/name={name}/weighings 0.0.69.0 POST /transport-api/v1/trucks/identifier={identifier}/weighings 0.0.69.0 Request Body { … date (datetime), weight (long), weighBridgeName (string, optional), source (enumeration: WeighBridge, User, Historical, optional), metadata (JSon, optional) 0.0.43.0 } Identifier (text, mandatory) The identifier of the truck given internally by the truck VMS. The truck should exist, but it could be not allocated to a transport. Date (datetime, mandatory) The datetime at which the weighing really took place. Weight (long in kg, mandatory) The weight of the truck. It should be greater than 500 kg. Source (enum, mandatory) The source of the weight of the truck. Following values are defined: WeighBridge: the weight has been read automatically by a dedicated system on a weighbridge. User: an operator has introduced the weight through an HMI in Artemis core or in the truck VMS. Historical: this is the last weight (for example, its last tare) for this truck. WeighBridgeName (text, optional) Name of the weighbridge where the weighing was really performed. It could be defined when Source equal to ‘WeighBridge’; otherwise, it should be empty. Artemis core do no control on that parameter. Metadata (text, optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 434/722 Responses Response 200 (Ok) Response 400 (BadRequest) 409 The weighing date cannot be in the future Response 404 (NotFound) Truck not found Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "date": "2020-02-10T14:09:48.168Z", "weight": 50, "weighBridgeName": " weighBridgeName", "source": "weighBridge", "metadata": {}, 0.0.43.0 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 435/722 Notification { "notificationType": "TruckVehicleWeighed", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-10T14:05:01.1525582+00:00", "requestedBy": "owner" }, "type": "carrier", "identifier": "carrierTest", "name": "b-fb293en", "siteIdentifier": "LIE", 0.0.56.0 "weighing": { "weight": 20000, "date": "2020-02-10T14:05:01.1525582+00:00", "source": "weighBridge", "weighBridgeName": "weighBridgeName", "metadata": {} 0.0.43.0 } } } If a Transport is defined, a check weight is made depending on the state of mobile container and a specific notification is sent (see 0.562). 0.0.44.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 436/722 Refuse Truck 0.0.43.0 This methode can be used to indicate that a truck is refused for a transport. This can be due to several reasons (see list below). There is an equivalent method for wagon. Related to this is the methode Refuse Loading. The difference is in the responsibility for the refusal. In case of truck it is the responsibility of the truck driver (company) in case of loading it is the responsibility of AM. Refusal can happen before or after it is allocated to a transport. When a it was allocated, it will be deallocated. HTTP Request POST /transport-api/v1/trucks/{name}/refuse-requests 0.0.43.0 Request Body { … reason (enumeration: Other, Damaged, NoSecurityEquipment, MaterialNotCompatible, InsufficientLoadableWeight, PpeNotConform, OtherCargoAlreadyLoaded), comment (string, optional), transportIdentifier (string, optional) } Name (text, mandatory) The name of the truck given internally by the truck VMS. The truck should exist. Reason (enum, mandatory) The reason of refusal of the truck. Following values are defined: InsufficientLoadableWeight WeightIssue: Available loadable weight is incompatible with requested weight 0.0.55.0 Large Width: 0.0.55.0 DriverBehaviour: 0.0.55.0 NoSecurityEquipment LashingOrSafetyEquipmentNotConformOrMissing: No security equipment present 0.0.55.0 LashingOrSafetyEquipmentNotConformOrMissing: 0.0.55.0 VehicleIssue: 0.0.55.0 InsufficientDriverPpe PpeNotConform: Driver has no or incomplete PPE 0.0.55.0 NotCompatible MaterialNotCompatible: Vehicle type not compatible with product type 0.0.55.0 OtherLoadedCargo OtherCargoAlreadyLoaded: Other/foreign products loaded on vehicle 0.0.55.0 Damaged: Vehicle damaged/broken 0.0.55.0 Other: reason is not present in this list Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 437/722 Comment (text, optional) Additional optional comment TransportIdentifier (text, optional) The calling system/user/integrator needs to provide the Transport ID as input, if he wants us to send a message to the TMS for this transport. Responses Response 200 (Ok) Response 400 (BadRequest) Response 404 (NotFound) Truck not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 438/722 Example { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", "context": { "key":"value" }, "reason": "NotCompatible", "comment": "comment", "transportIdentifier": "ID000000" } Notification { "notificationType": "TruckVehicleRefused", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", }, "type": "semiTrailerTruck", "identifier": "ID000000", "name": "name", "reason": "NotCompatible", "comment": "comment", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", 0.0.53.0, "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Anomalies See VehicleRefused (AnomalyDetected) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 439/722 Refuse Loading 0.0.55.0 See Refuse Truck for more explanation. Method to refuse a loading on truck. Refusal can happen after it is allocated to a transport. Otherwise, it’s forbidden. There is also an quivalent method (Refuse Loading) on the transport directly. HTTP Request POST /transport-api/v1/trucks/{name}/refuse-loading-requests Request Parameters identifier (string) or name (string) bayIdentifier (string) Request Body { … reason (enumeration: MaterialUnitNotFound, PossibleQualityProblem, EverythingOrNothing, EmptyOrder, MaterialUnitNonShippable, ToolFailures, NotEnoughProductsToLoad, Other), comment (string, optional) } Reason (enum, mandatory) The reason of refusal of the truck. Following values are defined: MaterialUnitNotFound: PossibleQualityProblem: EverythingOrNothing: EmptyOrder: MaterialUnitNonShippable: ToolFailures: NotEnoughProductsToLoad: Other: reason is not present in this list Comment (text, optional) Additional optional comment Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 440/722 Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 52 Operation is not allowed on Transport '{0}' on site (Close or Cancelled) 54 Operation not allowed on transport of this transport mode 265 Operation is forbidden because transport is loaded 266 Operation is forbidden because transport is loading Response 404 (NotFound) 5 Transport '{0}' not found 6 PhysicalVehicle '{0}' not found Example { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", "context": { "key":"value" }, "reason": "MaterialUnitNotFound", "comment": "comment" } Notification { "notificationType": "LoadingRefused", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", }, "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "road", "reason": "MaterialUnitNotFound", "comment": "comment", "transportType": "Shipment", 1.84.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 441/722 Anomalies See LoadingRefused (AnomalyDetected) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 442/722 Delete Truck 0.0.30.0 Method used to delete a truck in a unique transaction which means that all is saved correctly or nothing is saved. The Delete Truck business command is used when an Artemis specific connector wants to create a Truck and allocate it to a transport in the same transaction in the HMI. If the CreateTruck is OK but not the AllocateTruckToTransport, then, the specific connector can delete the Truck and so, nothing is left in DB. HTTP Request DELETE /transport-api/v1/trucks/{name} 0.0.39.0 Request Parameters name (string) Request Body { … 0.0.43.0 } Responses Response 200 (Ok) Response 403 (Forbidden) 19 Transport is Closed 37 MaterialUnit(s) are already loaded 38 Physical Vehicle Group already allocated 39 Physical Vehicle Group is already localized Response 404 (NotFound) 11 Physical Vehicle Group not found Example DELETE transport-api/v1/trucks/name { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 443/722 Notification { "notificationType": "VehicleDeleted", 0.0.50.0 "resourceType": "truck", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "semiTrailerTruck", "identifier": "semiTrailerTruckTest", "name": "myName", "trailer": { "name": "trailerName", "identifier": "trailerIdentifier" }, "tractor": { "name": "tractorName", "identifier": "tractorIdentifier" } } } Anomaly VehicleRefused (AnomalyFixed) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 444/722 4.12. Wagon Get Wagon 0.0.70.0 HTTP Request GET /transport-api/v1/wagons/number={number} 0.0.70.0 GET /transport-api/v1/wagons/identifier={identifier} 0.0.70.0 Request Parameters number (string) identifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 445/722 { identifier (string), number (string), metadata (json, optional), vehicleTypeIdentifier (string), convoyIdentifier (string), convoyName (string), convoyTransportMode (string), realSupplierAsRequested (string), sequenceNumberInGroup (string), refused (bool), refusedReason (string), refusedComment (string), refusedOrigin (string), vehicleType { name (string), identifier (string), label (string), subtype (string), transportMode (string), }, characteristics { 1.85.0 wagonManager (string), wagonLength (uint?, optional), wagonCategory (string) = [‘Private’, ‘Network’], coverType (string) = [‘Tarpaulin’, ‘Roof’], tare (uint?, optional), retractableArm (bool?, optional), numberOfAxles (uint?, optional), maxGrossWeight (double?, optional), maxAxleWeight (string, optional), loadingCapacity (double?, optional), cradlesCount (uint?, optional), cradles { maxTonnage (double), maxDiameter (double), minDiameter (double), maxProductWidth (double), distanceToBogieCenter (double), length (double), width (double), depth (double), metadata (json, optional) }, metadata (json, optional) }, locatedOn { locationType (string) = [‘Bay’, ‘FreeLocation’], bayIdentifier (string), label (string), name (string), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 446/722 freeLocationType (string), requestedBy (string), requestedAt (datetime), metadata (json, optional) }, weighings ([ { date (datetime), weight (long), weighBridgeName (string, optional), source (string) = [‘WeighBridge’, ‘User’, ‘Historical’], metadata (json, optional), siteIdentifier (json, optional) }]), siteIdentifier (string, optional), vmsIdentifierDate (datetime, optional), tagIdentifier (string, optional), grossVehicleWeightRating (int, optional), crossGateEvents { entryCrossGateEvent { date (datetime), gateIdentifier (string) }, exitCrossGateEvent { date (datetime), gateIdentifier (string) }, }, loadPlan: { metadata (Json, optional), toLoad: [{ material { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], toCheck: [{ lmiContext (string), lmiNumber (string), }], Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 447/722 checked: [{ lmiContext (string), lmiNumber (string), success (boolean, optional), reason (string, optional), comment (string, optional) }], loaded: [{ materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) }, actualPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), expectedPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], impossibleToLoad: [{ lmiContext (string), lmiNumber (string) }], toUnload: [{ lmiContext (string), lmiNumber (string) }], unloaded: [{ lmiContext (string), lmiNumber (string) }] }, loadedMaterialUnits [{ materialUnit { lmiContext (string), lmiNumber (string) }, position { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 448/722 cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string), spireOrientation (string) } (optional), } (optional), loadingDateTime (datetime), metadata (json, optional), siteIdentifier (string, optional }], transportIdentifier (string, optional), deprecated 1.81.0 (value is specified only when transport state is not ‘Closed’ or ‘Completed’) transport { 1.81.0 identifier (string), state (string), type (string) = [‘Intrasite’, ‘Shipment’], owner (string) }, transportExecutionMetadata (json, optional), currentState (string, optional) } Response 400 (BadRequest) Response 404 (NotFound) 60 Wagon not found Example { } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 449/722 Get Convoy by identifier 0.0.66.0 Retrieve a convoy by identifier. HTTP Request GET /transport-api/v1/convoys/identifier={identifier} Request Parameters identifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 450/722 { … name (string), identifier (string), siteIdentifier (string), vmsIdentificationDate (datetime, optional), metadata (json, optional), locatedOn { locationType (string) = [‘Bay’, ‘FreeLocation’], bayIdentifier (string), label (string), name (string), freeLocationType (string), requestedBy (string), requestedAt (datetime), metadata (json, optional) }, count (int), crossGateEvents { entryCrossGateEvent { date (datetime), gateIdentifier (string) }, exitCrossGateEvent { date (datetime), gateIdentifier (string) }, }, trainParts { type (string) = [‘Wagon’, ‘Locomotive’], weighings [ { date (datetime), weight (long), weighBridgeName (string, optional), source (enumeration: WeighBridge, User, Historical, optional), metadata (JSon, optional) }], metadata (json, optional), typeIdentifier (string), convoyIdentifier (string), sequenceNumber (int, optional), number (int), gvwr (int, optional), tagIdentifier (string), identifier (string), vmsIdentifierDate (datetime, optional), siteIdentifier (string), characteristics { 1.85.0 wagonManager (string), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 451/722 wagonLength (uint?, optional), wagonCategory (string) = [‘Private’, ‘Network’], coverType (string) = [‘Tarpaulin’, ‘Roof’], tare (uint?, optional), retractableArm (bool?, optional), numberOfAxles (uint?, optional), maxGrossWeight (double?, optional), maxAxleWeight (string, optional), loadingCapacity (double?, optional), cradlesCount (uint?, optional), cradles { maxTonnage (double), maxDiameter (double), minDiameter (double), maxProductWidth (double), distanceToBogieCenter (double), length (double), width (double), depth (double), metadata (json, optional) }, metadata (json, optional) }, equipmentIdentifier (string), transportIdentifier (string, optional), deprecated 1.81.0 transport { 1.81.0 identifier (string), state (string), type (string) = [‘Intrasite’, ‘Shipment’], owner (string) }, loadPlan: { metadata (Json, optional), toLoad: [{ material { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], toCheck: [{ lmiContext (string), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 452/722 lmiNumber (string), }], checked: [{ lmiContext (string), lmiNumber (string), success (boolean, optional), reason (string, optional), comment (string, optional) }], loaded: [{ materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) }, actualPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), expectedPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], impossibleToLoad: [{ lmiContext (string), lmiNumber (string) }], toUnload: [{ lmiContext (string), lmiNumber (string) }], unloaded: [{ lmiContext (string), lmiNumber (string) }] }, loadedMaterialUnits [{ materialUnit { lmiContext (string), lmiNumber (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 453/722 }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string), spireOrientation (string) } (optional), } (optional), loadingDateTime (datetime), metadata (json, optional), siteIdentifier (string, optional }], currentState (string), transportExecutionMetadata (json, optional) } } } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 454/722 Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 455/722 { "name": "convoy-name-1", "identifier": "convoy-1", "siteIdentifier": "site", "vmsIdentificationDate": null, "metadata": null, "locatedOn": { "locationType": "bay", "bayIdentifier": "bay-1", "label": null, "name": null, "freeLocationType": null, "requestedBy": null, "requestedAt": "0001-01-01T00:00:00+00:00", "metadata": null }, "count": 1, "crossGateEvents": null, "trainParts": [ { "type": "wagon", "weighings": null, "metadata": [], "typeIdentifier": null, "convoyIdentifier": "convoy-1", "sequenceNumber": 1, "number": "wagon1", "gvwr": null, "tagIdentifier": "convoy-tag-1", "identifier": "wagon1", "vmsIdentificationDate": null, "siteIdentifier": "site", "equipmentIdentifier": null, "transportIdentifier": "T0", "loadPlan": { "toLoad": [], "toCheck": [], "loaded": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "materialGroup": "group1", "weight": 123000 }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 456/722 }, "expectedPosition": null }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000001", "materialGroup": "group2", "weight": 123000 }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "expectedPosition": null } ], "checked": [], "impossibleToLoads": [], "toUnload": [], "unloaded": [], "metadata": [] }, "loadedMaterialUnits": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "weight": 50 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 3, "level": 2, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "loadingDateTime": "2022-03-23T11:37:24.4212071+00:00", "metadata": [], "siteIdentifier": null }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000001", "weight": 50 }, "position": { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 457/722 "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 3, "level": 2, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "loadingDateTime": "2022-03-23T11:37:24.4212071+00:00", "metadata": [], "siteIdentifier": null } ], "currentState": null, "transportExecutionMetadata": [] }, { "type": "wagon", "weighings": null, "metadata": [], "typeIdentifier": null, "convoyIdentifier": "convoy-2", "sequenceNumber": 2, "number": "wagon2", "gvwr": null, "tagIdentifier": "convoy-tag-2", "identifier": "wagon2", "vmsIdentificationDate": null, "siteIdentifier": "site", "equipmentIdentifier": null, "transportIdentifier": "T0", "loadPlan": { "toLoad": [], "toCheck": [], "loaded": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "materialGroup": "group1", "weight": 123000 }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "expectedPosition": null }, { "materialUnit": { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 458/722 "lmiContext": "LIE", "lmiNumber": "ID000001", "materialGroup": "group2", "weight": 123000 }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "expectedPosition": null } ], "checked": [], "impossibleToLoads": [], "toUnload": [], "unloaded": [], "metadata": [] }, "loadedMaterialUnits": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "weight": 50 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 3, "level": 2, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "loadingDateTime": "2022-03-23T11:37:24.4212071+00:00", "metadata": [], "siteIdentifier": null }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000001", "weight": 50 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 3, "level": 2, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 459/722 }, "loadingDateTime": "2022-03-23T11:37:24.4212071+00:00", "metadata": [], "siteIdentifier": null } ], "currentState": null, "transportExecutionMetadata": [] }, { "type": "locomotive", "weighings": null, "metadata": [], "typeIdentifier": null, "convoyIdentifier": "convoy-3", "sequenceNumber": 3, "number": "wagon3", "gvwr": null, "tagIdentifier": "convoy-tag-3", "identifier": "wagon3", "vmsIdentificationDate": null, "siteIdentifier": "site", "equipmentIdentifier": null, "transportIdentifier": "T0", "loadPlan": { "toLoad": [], "toCheck": [], "loaded": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "materialGroup": "group1", "weight": 123000 }, "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "expectedPosition": null }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000001", "materialGroup": "group2", "weight": 123000 }, Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 460/722 "actualPosition": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "expectedPosition": null } ], "checked": [], "impossibleToLoads": [], "toUnload": [], "unloaded": [], "metadata": [] }, "loadedMaterialUnits": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "weight": 50 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 3, "level": 2, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "loadingDateTime": "2022-03-23T11:37:24.4212071+00:00", "metadata": [], "siteIdentifier": null }, { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000001", "weight": 50 }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 3, "level": 2, "orientation": "axisHorizontalLengthwise", "spireOrientation": "topToFront" }, "loadingDateTime": "2022-03-23T11:37:24.4212071+00:00", "metadata": [], "siteIdentifier": null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 461/722 ], "currentState": null, "transportExecutionMetadata": [] } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 462/722 Get Convoy by wagon number or name 0.0.68.0 Retrieve a convoy by wagon identifier or name contained in this convoy. HTTP Request GET /transport-api/v1/convoys/wagon-identifier={wagonIdentifier} GET /transport-api/v1/convoys/wagon-number={wagonNumber} Request Parameters name (string) or identifier (string) Responses Response 200 (Ok) { … cf. “Get Convoy by identifier” } Response 404 (NotFound) Example { … cf. “Get Convoy by identifier” } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 463/722 Delete convoy by identifier or name HTTP Request DELETE /transport-api/v1/convoys/identifier={identifier} DELETE /transport-api/v1/convoys/name={name} Request Parameters name (string) or identifier (string) Responses Response 200 (Ok) Response 403 (Forbidden) 37 MaterialUnit(s) are already loaded 38 Physical Vehicle Group already allocated Response 404 (NotFound) Convoy not found Example { … } Notification { "notificationType": "VehicleDeleted", "resourceType": "ship", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "convoy", "identifier": "identifierTest", "name": "myName", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 464/722 Delete convoy by wagon-number contained in this convoy HTTP Request DELETE /transport-api/v1/convoys/wagon-number={wagonNumber} Request Parameters wagonNumber (string) Responses Response 200 (OK) Response 403 (Forbidden) 37 MaterialUnit(s) are already loaded 38 Physical Vehicle Group already allocated 39 Not allowed to delete because convoy contains more than one wagon Response 404 (Not found) Convoy not found Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 465/722 Notification { "notificationType": "VehicleDeleted", "resourceType": convoy", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, { "type": "convoy", "identifier":"testConvoy1", "name": "myName", "wagons": [ { "type": "wagon", "identifier": "testWagon1", "number": "21-81-2471-217-3" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 466/722 Wagon’s convoy arrival at bay 0.0.30.0 Method used to create or update a wagons convoy with one or several wagons / locos and locate it in a bay, in a unique transaction. The wagon’s VMS calls this method when a convoy of one or several wagons/locos is located in a bay. Please note that there are other business commands : to declare the departure of a wagons convoy from a bay, to declare the arrival of a wagons convoy at a free location, to link or unlink a loco to a wagons convoy, to merge wagons convoy that are in the same bay or free location, … HTTP Request PUT /transport-api/v1/convoys/{identifier}/bay/{bayIdentifier} 0.0.39.0 PUT /transport-api/v1/convoys/wagon-number={wagonNumber}/bay/{bayIdentifier} 0.0.70.0 PUT /transport-api/v1/convoys/wagon-identifier={wagonIdentifier}/bay/{bayIdentifier} 0.0.70.0 Request Parameters identifier (string) bayIdentifier (string) Request Body { … name (string, optional), siteIdentifier (string), metadata (json, optional), wagons ([ { identifier (string), number (string), typeIdentifier (string), sequenceNumberInConvoy (integer, optional), tagIdentifier (string, optional), positionLabel (string, optional), offset (long, optional), metadata (json, optional), gvwr (uint, optional), 0.0.44.0 }, … ], optional), bayInformation ({ label (string, optional)), metadata (json, optional)) }, optional) } â–ª Identifier (text, mandatory) It is the identifier of the wagons convoy given internally by the wagon VMS. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 467/722 There is only one convoy with that Convoy.Identifier on all sites managed by an Artemis core instance. â–ª Name (text, optional) Could be the name given by the user in the wagon VMS to the convoy. As an exemple, it could be the equipment group identifier or the cyclo at Aviles (cyclo, is the number of the convoy given by the wagon VMS at Aviles). When the Name is defined, there is only one active convoy with that Convoy.Name on the site defined by Convoy.SiteIdentifier. â–ª SiteIdentifier (text, mandatory) It defines the site in which the convoy is working. A WarehouseLocation with the same identifier should exist. â–ª MetaData (json, optional) Any metadata used/required by local system relatively to the convoy. For each vehicle, following information is provided: o Identifier (text, mandatory) It is the identifier of the wagon or loco given internally by the wagon VMS. There is only one active wagon / loco with that Identifier on all sites managed by an Artemis core instance. o Number (text, mandatory) It is the Number of the wagon or loco: For wagon, it is the wagon number For loco, it is the loco number Within a convoy, a wagon/loco Number could be used only once. In other words, the number of all wagons and locos should be different in a convoy. There is only one active wagon / loco with that Number on the site defined by Convoy.SiteIdentifier. o TypeIdentifier (text, mandatory) The type of the vehicle. See the content of entity VehicleType. For wagon, it is the wagon’s type such as C44 (in the future TypeIdentifier and VehicleType will be defined from MDM) For loco, it is always ‘Loco’. o SequenceNumberInConvoy (int, optional) This is the sequence of the wagon/loco within the Convoy. When defined, the SequenceNumberInConvoy should be unique within a convoy. If SequenceNumberInConvoy is not defined, in Artemi HMI, the wagons list will be presented in a random way without any correspondence to the reality. We strongly recommend to always define a SequenceNumberInConvoy but some wagon’s VMS have not that information, in that very specific case, don’t invent it. o TagIdentifier (text, optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 468/722 Number of the tag (RFID) attached to the wagon/loco. It could also be a permanent tag attached to the vehicle. There is only one active wagon / loco with that TagIdentifier on the site defined by Convoy.SiteIdentifier. o MetaData (json, optional) Any metadata used/required by local system relatively to the wagon/loco. Responses Response 200 (Ok) Response 400 (BadRequest) 401 Wagon Number has an invalid checksum 402 Wagon Number is an invalid format 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 404 Cannot change wagon/locomotive type 405 Location change request out of date 406 Convoy already contains a wagon or locomotive with the same SequenceNumber. 408 Vehicle type base name '{0}' does not match with the transport mode of the currently updated vehicle. Response 404 (NotFound) 14 Bay not found 403 Vehicle Type not found Response 409 (Conflict) 400 Vehicle already on site or same identifierhas already been used Example { … "identifier": "string", "name": "string", "siteIdentifier": "string", "metadata": {}, "wagons": [ { "identifier": "string", "number": "string", "typeIdentifier": "loco", "sequenceNumberInConvoy": 0, "tagIdentifier": "string", "metadata": {}, "offset": 1 } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 469/722 Notifications { "notificationType": "VehicleCreated", 0.0.54.0 "resourceType": "convoy", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "wagons": [ { "identifier": "testWagon1", "number": "21-81-2471-217-3", "type": "wagon", 0.0.65.0 "gvwr": 30000 0.0.65.0 }, { "identifier": "testWagon2", "number": "51 80 0843 001-0", "type": "wagon", 0.0.65.0 "gvwr": 25000 0.0.65.0 }, { "identifier": "testLoco1", "number": "31-81-665 0 286-0", "type": "locomotive" 0.0.65.0 } ], "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "convoy", "identifier": "convoyIdentifier", "name": "convoyName", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 470/722 { "notificationType": "ConvoyVehicleArrivedAtBay", 0.0.50.0 "resourceType": "convoy", "scope": "", "sender": "", "data": { "identifier": "testConvoy1", "name": "myName", "location": { 0.0.48.0 "type": "bay", "bayIdentifier": "bayIdentifier" }, "wagons": [ 0.0.65.0 { "type": "wagon", "identifier": "testWagon1", "number": "21-81-2471-217-3" }, { "type": "wagon", "identifier": "testWagon2", "number": "51 80 0843 001-0" }, { "type": "locomotive", "identifier": "testLoco1", "number": "31-81-665 0 286-0" } ], "previousLocation": { 0.0.48.0 "type": "freeLocation", "name": "InTransit", "freeLocationType": "InInternalTransit" } "originalRequestInfo": { "requestedAt": "2020-01-06T14:52:23.2463036+01:00", "requestedBy": "owner" }, "context": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 471/722 Wagon's convoy arrival at a free location 0.0.33.0 This is used to create or update a wagons convoy with one or several wagons / locos, declare that it arrives in a free location and locate it in a free location, all that in a unique transaction. The wagon’s VMS calls this method when a convoy of one or several wagons/locos arrives in a free location. For more details on free location, please read 5.1 FreeLocation definition. HTTP Request PUT /transport-api/v1/convoys/{identifier}/free-location 0.0.39.0 PUT /transport-api/v1/convoys/wagon-number{wagonNumber}/free-location 0.0.70.0 PUT /transport-api/v1/convoys/wagon-identifier={wagonIdentifier}/free-location 0.0.70.0 Request Parameters identifier (string) Request Body { … name (string, optional), siteIdentifier (string), metaData (string, optional), wagons ([ { identifier (string), number (string), typeIdentifier (string), sequenceNumberInConvoy (integer, optional), tagIdentifier (string, optional), positionLabel (string, optional), 0.0.78.0 offset (long, optional), 0.0.78.0 metadata (json, optional), gvwr (uint, optional), 0.0.44.0 }, … ], optional), freeLocationName (string, optional), freeLocationType (string), freeLocationMetadata (json, optional), } â–ª Identifier (text, mandatory) It is the identifier of the wagons convoy given internally by the wagon VMS. There is only one convoy with that Convoy.Identifier on all sites managed by an Artemis core instance. â–ª Name (text, optional) Could be the name given by the user in the wagon VMS to the convoy. Version 1.84.0 Marechal Frédéric Artemis.Core Business API Documentation 472/722 As an exemple, it could be the equipment group identifier or the cyclo at Aviles (cyclo, is the number of the convoy given by the wagon VMS at Aviles). When the Name is defined, there is only one active convoy with that Convoy.Name on the site defined by Convoy.SiteIdentifier. â–ª â–ª â–ª MetaData (json, optional) Any metadata used/required by local system relatively to the convoy. SiteIdentifier (text, mandatory) It defines the site in which the convoy is working. A WarehouseLocation with the same identifier should exist. State (text, optional) It defines the state of the wagons convoy. The Convoy.State is just a litteral feedback given to the end user in HMI without any business on it. Convoy.State is managed by: o Artemis core: when certains events happen, Artemis core update Convoy.State o Local system: when certains events happen, the local system wants to have a specific Convoy.State and may override the State defined by Artemis core (see UpdateWagonsConvoyProperties). Local system may define a specific State to the convoy when it arrives at a bay. If State is not defined, then, Artemis core will initialize State to ‘Arrived at free location’. â–ª All properties to locate the wagons convoy in a free location: â–ª FreeLocationType (string, mandatory) It defines the type (e.g. Parking, CheckIn, Weighing bridge, CheckOut, …) of free location on which the wagon is located. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 473/722 Responses Response 200 (Ok) Response 400 (BadRequest) 401 Wagon Number has an invalid checksum 402 Wagon Number is an invalid format 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 404 Cannot change wagon/locomotive type 405 Location change request out of date 406 Convoy already contains a wagon or locomotive with the same SequenceNumber. 408 Vehicle type base name '{0}' does not match with the transport mode of the currently updated vehicle. Response 404 (NotFound) 403 Vehicle Type not found Response 409 (Conflict) 400 Vehicle already on site or same identifierhas already been used Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "name":"T0", "type":"freeLocationType", "metadata": null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 474/722 Notifications { "notificationType": "VehicleCreated", 0.0.54.0 "resourceType": "convoy", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "wagons": [ { "identifier": "testWagon1", "number": "21-81-2471-217-3" }, { "identifier": "testWagon2", "number": "51 80 0843 001-0" }, { "identifier": "testLoco1", "number": "31-81-665 0 286-0" } ], "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "convoy", "identifier": "convoyIdentifier", "name": "convoyName", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 475/722 { "notificationType": "TruckVehicleLocatedOnFreeLocation", 0.0.50.0 "resourceType": "convoy", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "type": "carrier", "identifier": "carrierTest", "name": "b-fb293en", "location": { "type": "freeLocation", "name": "InTransit", "freeLocationType": null }, "wagons": [ 0.0.65.0 { "type": "wagon", "identifier": "testWagon1", "number": "21-81-2471-217-3" }, { "type": "wagon", "identifier": "testWagon2", "number": "51 80 0843 001-0" }, { "type": "locomotive", "identifier": "testLoco1", "number": "31-81-665 0 286-0" } ], "previousLocation": { "type": "bay", "bayIdentifier": "bayIdentifier" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 476/722 Wagon's convoy departure from a bay 0.0.32.0 Method used to create or update a wagons convoy with one or several wagons / locos, declare that it leaves a bay and locate it in a free location ‘In transit’, all that in a unique transaction. The wagon’s VMS calls this method when a convoy of one or several wagons/locos leaves a bay. Please note that there are other business commands to declare the arrival of a wagons convoy at a bay, to declare the arrival of a wagons convoy at a free location, to link or unlink a loco to a wagons convoy, to merge wagons convoy that are in the same bay or free location, … HTTP Request DELETE /transport-api/v1/convoys/{identifier}/bay 0.0.39.0 Request Parameters identifier (string) Request Body { … name (string, optional), siteIdentifier (string), metadata (json, optional), wagons ([ { identifier (string), number (string), typeIdentifier (string), sequenceNumberInConvoy (integer, optional), tagIdentifier (string, optional), positionLabel (string, optional), offset (long, optional), metadata (json, optional), gvwr (uint, optional), 0.0.44.0 }, … ], optional), bayMetadata (json, optional), bayIdentifier (string, optional), freeLocationName (string, optional) } All the properties of the wagons convoy (it is the same as in WagonsConvoyArrivalAtBay). All properties to locate the wagons convoy on a bay: BayIdentifier (text, optional): it defines the bay from which the wagons convoy left. A Bay with the same identifier should exist. The Bay should be located within the same site as the Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 477/722 Truck is. The Bay should should be the same as where the wagons are located. FreeLocationName (text, optional): it allows specific to define where the wagons convoy will go (if VMS knows that). When empty, Artemis will initialze FreeLocationName with ‘In transit’. Responses Response 200 (Ok) Response 400 (BadRequest) 401 Wagon Number has an invalid checksum 402 Wagon Number is an invalid format 403 Vehicle type does not exist 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 404 Cannot change wagon/locomotive type 405 Location change request out of date Response 404 (NotFound) 14 Bay not found 41 Convoy not found Response 409 (Conflict) 400 Vehicle already exists on this site Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 478/722 Example { "requestedBy": "string", "requestedAt": "2020-01-15T14:00:40.354Z", "context": {}, "name": "string", "siteIdentifier": "string", "metadata": {}, "wagons": [ { "identifier": "string", "number": "string", "typeIdentifier": "string", "sequenceNumberInConvoy": 0, "tagIdentifier": "string", "positionLabel": "string", "offset": 0, "metadata": {} } ], "bayMetadata": {}, "freeLocationName": "string", "bayIdentifier": "string" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 479/722 Notification { "notificationType": "ConvoyVehicleLeftBay", 0.0.50.0 "resourceType": "convoy", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-27T14:07:14.2695836+00:00", "requestedBy": "owner" }, "identifier": "testConvoy1", "name": "myName", "expectedBayIdentifier": "testBay1", "type": "convoy", "location": { "type": "freeLocation", "name": "InTransit", "freeLocationType": "InInternalTransit" }, "previousLocation": { "type": "bay", "bayIdentifier": "testBay0" }, "wagons": [ 0.0.65.0 { "type": "wagon", "identifier": "testWagon1", "number": "21-81-2471-217-3" }, { "type": "wagon", "identifier": "testWagon2", "number": "51 80 0843 001-0" }, { "type": "locomotive", "identifier": "testLoco1", "number": "31-81-665 0 286-0" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 480/722 Update Wagon 0.0.78.0 HTTP Request PUT /transport-api/v1/wagons/{wagonNumber} Request Parameters wagonNumber (string) Request Body { … typeIdentifier (string, optional), sequenceNumberInConvoy (int, optional), tagIdentifier (string, optional), positionLabel (string, optional), offset (long, optional), gwvr (int, optional), metadata (json, optional) } Responses Response 200 (Ok) Response 400 (BadRequest) 412 Cannot change offset and position label because wagon '{0}' is not on bay 413 Gross vehicle weight rating (GVWR) must be greater than 0 (value: '{0}') Response 403 (Forbidden) 66 Cannot change type identifier of an allocated vehicle '{0}' Response 404 (NotFound) 6 Vehicle not found Example { … "typeIdentifier": "typeId", "sequenceNumberInConvoy": 0, "tagIdentifier": "tagIdentifier", "positionLabel": "positionA", "offset": 1, "gvwr": 22, "metadata": {}, } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 481/722 Notification { "notificationType": "VehicleUpdated", 1.81 "resourceType": "wagon", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "wagon", "identifier": "wagon1", "number": "21-87-2471-217-3", "gvwr": 123 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 482/722 Delete Wagon by wagon number 0.0.48.0 NB: When last wagon or locomotive is deleted, convoy is also deleted 0.0.81.0 HTTP Request DELETE /transport-api/v1/wagons/{wagonNumber} Request Parameter wagonNumber (string) Responses Response 200 (OK) Response 403 (Forbidden) 37 MaterialUnit(s) are already loaded 38 Convoy contains wagon '{0}' is already allocated to Transport '{1}' Response 404( NotFound) Wagon not found Example { … } Notification { "resourceType": "wagon", "notificationType": "VehicleDeleted", "sender": "Artemis.Transport.Vehicle", "scope": "xxx", "data": { "type": "wagon", "identifier": "testWagon1", "number": "21-81-2471-217-3", "originalRequestInfo": { "requestedAt": "2022-04-27T10:06:20.842+02:00", "requestedBy": "string" }, "context": {} } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 483/722 Allocate Wagons to Transport 0.0.33.0 This is a method used to allocate a list of wagons located on a same bay to a transport in a unique transaction. Remarks This method is not thread safe, so it does not manage concurrency problems, that is if it is called twice (or more) in the same time all unicity check may fail to detect duplicate values (equipment group, wagons …) If deprecated list of “wagons” is specified, we take into account of this list. Otherwise, we read the two lists “wagonIdentifiers” & “wagonNumbers”. HTTP Request POST /transport-api/v1/transports/{identifier}/wagons 0.0.48.0 Please wait notification state changed to ‘Confirmed’ before call this uri. Request Parameters identifier (string) Request Body { … equipmentGroupIdentifier (string), wagons ([ { identifier (string), number (string) }]), deprecated 0.0.70.0 wagonIdentifiers ([ (string), … ], optional), wagonNumbers ([ (string), … ], optional) } â–ª TransportIdentifier (text, mandatory) Business identifier of the Transport on which wagons will be allocated Transport should: o Be fully defined o Its state should be ‘Confirmed’ or ‘In progress’ o Transport mode should be for wagon Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 484/722 o Have a ‘Confirmed’ or ‘In progress’ Loading Instruction for a loading site which is the same as the site where the first wagon is located. â–ª EquipmentGroupIdentifier (text, mandatory) Business identifier of the EquipmentGroup on which the wagons will be allocated. The EquipmentGroup should belong to Transport. â–ª A list of wagons and for each wagon the following properties: â–ª WagonIdentifier (text, mandatory) It is the Identifier of the Wagon (see WagonsConvoyArrivalAtBay properties). The wagon should be: o Active o Not yet allocated to a Transport o The vehicle type category of the wagon should be ‘Wagon’. As a consequence, a loco cannot be allocated to a Transport. o Be on the same site as the first wagon of the list is. Responses Response 200 (Ok) Response 403 (Forbidden) 23 Transport And Physical Vehicle mode are different 36 Transport is not fully defined 43 All vehicle types should have the same category as '{0}' 278 Cannot allocate wagons located on different sites Response 400 (BadRequest) 277 Cannot allocate empty wagon list Response 404 (NotFound) 5 Transport not found 32 Loading Instruction not found on site Response 409 (Conflict) 12 Vehicle '{0}' is already associated to the transport '{1}' for loading site '{2}' 17 Another vehicle '{0}' is already associated to the transport '{1}' for loading site '{2}' Response 502 (BadGateway) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 485/722 If you receive a ‘Bad Gateway’, please retry to send request in few seconds. Example { "requestedBy": "owner", "requestedAt": "2020-02-06T15:28:33.416Z", "context": {}, "equipmentGroupIdentifier": "string", "wagons": [ { "identifier": "string", "number": "string", "typeIdentifier": "string" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 486/722 Notifications { "notificationType": "StateChanged" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "oldValue": null, "newValue": "Confirmed", "owner": "TMS", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", "type": "rail" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 487/722 { "notificationType": "VehicleCreated / VehicleUpdated", 0.0.54.0 "resourceType": "convoy", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "wagons": [ { "identifier": "testWagon1", "number": "21-81-2471-217-3", "gvwr": 30000 0.0.65.0 }, { "identifier": "testWagon2", "number": "51 80 0843 001-0", "gvwr": 25000 0.0.65.0 }, { "identifier": "testLoco1", "number": "31-81-665 0 286-0" } ], "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "convoy", "identifier": "convoyIdentifier", "name": "convoyName", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 488/722 { "notificationType": "TransportArrived", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", 0.0.52.0 "siteIdentifier": "LIE", "type": "rail", 0.0.51.0 "arrivalDateTime": "2019-12-23T14:53:08.6760606+00:00", "owner": "TMS" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 489/722 { "notificationType": "WagonsVehicleAllocated", 0.0.51.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-10T12:53:39.8109148+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier": "LIE", "transportowner": "TMS", 0.0.52.0 "wagons": [ { "number": "wagon1", "typeIdentifier": "c44" }, { "number": "wagon2", "typeIdentifier": "c44" }, { "number": "wagon3", "typeIdentifier": "c44" }, { "number": "wagon4", "typeIdentifier": "c44" }, { "number": "wagon5", "typeIdentifier": "c44" } ]} } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 490/722 { "notificationType": "TransportSstateChanged", "resourceType": "railtransport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "oldValue": "Confirmed", "newValue": "InProgress", "transportIdentifier": "T0", "siteIdentifier": "LIE", "owner": "TMS", "type": "rail" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 491/722 Material Unit(s) not accessible { "notificationType": "NotAccessibleMaterialUnitsDetected", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-27T08:18:11.4531075+00:00", "requestedBy": "owner" }, "identifier": "ID000000", "owner": "TMS", "siteIdentifier": "LIE", "notAccessibleMaterialUnits": [ { "lmiNumber": "lmiNumber", "lmiContext": "lmiContext", "reason": "reason" } ] } } Notifications WeightChecked No weighing present Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 492/722 { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-26T16:05:25.7815253+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "21-81-2471-217-3", 0.0.55.0 "identifier": "testwagon1", 0.0.55.0 "results": [ { "state": "NotExecuted", "message": "Cannot evaluate wagon weight conformity because the wagon has never been weighed." }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 493/722 No check was performed { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-26T16:05:25.7815253+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "21-81-2471-217-3", 0.0.55.0 "identifier": "testwagon1", 0.0.55.0 "results": [ { "state": "NotExecuted", "message": "The GVWR check was skipped because GVWR was not defined." }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 494/722 Check was successful { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-26T16:07:19.4272507+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "21-81-2471-217-3", 0.0.55.0 "identifier": "testwagon1", 0.0.55.0 "results": [ { "state": "Success", }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 495/722 Wagon ‘GVWR is too small { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:34:51.5105062+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "success": false, "name": "21-81-2471-217-3", 0.0.55.0 "identifier": "testwagon1", 0.0.55.0 "results": [ { "state": "Failure", "message": "The vehicle GVWR '…' is too low to allow the loading of the requested material units.” }] } } Encoded derogation does not allow the transport to be loaded Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 496/722 Current weight of wagon is above expected (last empty wagon + loaded MUs) 0.0.43.0 { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:31:00.7464466+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "21-81-2471-217-3", 0.0.55.0 "identifier": "testwagon1", 0.0.55.0 "results": [ { "state": "Failure", "message": "The current weight value '…' is above the expected one '…' considering the current loaded material units.” }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 497/722 Current weight of wagon is lower than expected (last empty wagon + loaded MUs) 0.0.43.0 { "notificationType": "WeightChecked", 0.0.47.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-24T10:31:00.7464466+00:00", "requestedBy": "owner" }, "transportIdentifier": "ID000000", "transportOwner": "TMS", 0.0.53.0 "siteIdentifier": "LIE", 0.0.53.0 "name": "21-81-2471-217-3", 0.0.55.0 "identifier": "testwagon1", 0.0.55.0 "results": [ { "state": "Failure", "message": "The current weight value '…' is below the expected one '…' considering the current loaded material units.” }] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 498/722 Deallocate Wagons from Transport 0.0.70.0 This is a method used to deallocate a list of wagons from a transport in a unique transaction. HTTP Request DELETE /transport-api/v1/transports/{identifier}/wagons 0.0.70.0 Request Parameters identifier (string) Request Body { … wagonIdentifiers ([ (string), … ], optional), wagonNumbers ([ (string), … ], optional) } WagonIdentifiers (List, optional) o Identfier The identifier of the wagon given internally by the VMS. The wagon should exist and be allocated to the transport. WagonNumbers (List, optional) o Number Wagon number (name) given internally by the VMS. The wagon should exist and be allocated to the transport. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 499/722 Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 36 Transport is not fully defined 54 Transport mode '{0}' is not supported 304 One or more wagons are not allocated to the transport Response 404 (NotFound) 5 Transport not found 63 One or more wagons are not found Example Request with only wagon identifiers { "requestedBy": "owner", "requestedAt": "2022-04-27T11:31:23.018Z", "context": {}, " wagonIdentifiers ": [ "ID0001", "ID0002", "ID0003" ], " wagonNumbers ": [] } Request with only wagon numbers { "requestedBy": "owner", "requestedAt": "2022-04-27T11:31:23.018Z", "context": {}, " wagonIdentifiers ":[] " wagonNumbers ": [ "Wagon1", "Wagon2", "Wagon3" ] } Request with a combination of identifiers and numbers Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 500/722 { "requestedBy": "owner", "requestedAt": "2022-04-27T11:31:23.018Z", "context": {}, "wagonIdentifiers": [ "ID0001", "ID0003" ] "wagonNumbers": [ "Wagon2", ] } Notifications 0.0.58.0 { "notificationType": "VehicleDeallocated" "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", "siteIdentifier": "LIE", "owner": "TMS", "identifier": "ID000000", "name": "T0", "trailers": [ { "name": "trailerID000000", "identifier": "ID000000" }, "lastVehicle": true, "originalRequestInfo": { "requestedAt": "2020-10-15T11:49:38.0098233+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 501/722 Record a new weighing of a wagon 0.0.50.0 HTTP Request POST /transport-api/v1/wagons/{name}/weighings Request Body { … date (datetime), weight (long), weighBridgeName (string, optional), source (enumeration: User (default), WeighBridge, Historical, optional), metadata (JSon, optional) } Identifier (text, mandatory) The identifier of the wagon given internally by the VMS. The wagon should exist, but it could be not allocated to a transport. Date (datetime, mandatory) The datetime at which the weighing really took place. Weight (long in kg, mandatory) The weight of the wagon. It should be greater than 500 kg. Source (enum, mandatory) The source of the weight of the wagon. Following values are defined: User (default value): an operator has introduced the weight through an HMI in Artemis core or in the wagon VMS. WeighBridge: the weight has been read automatically by a dedicated system on a weighbridge. Historical: this is the last weight (for example, its last tare) for this wagon. WeighBridgeName (text, optional) Name of the weighbridge where the weighing was really performed. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 502/722 It could be defined when Source equal to ‘WeighBridge’; otherwise, it should be empty. Artemis core do no control on that parameter. Metadata (text, optional) Responses Response 200 (Ok) Response 400 (BadRequest) 409 The weighing date cannot be in the future Response 404 (NotFound) Wagon not found Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "date": "2020-02-10T14:09:48.168Z", "weight": 50, "weighBridgeName": " weighBridgeName", "source": "weighBridge", "metadata": {} } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 503/722 Notification { "notificationType": "VehicleWeighed", "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-10T14:05:01.1525582+00:00", "requestedBy": "owner" }, "type": "wagon", "identifier": "wagonTest", "namenumber": "b-fb293en", 0.0.65.0 "siteIdentifier": "LIE", 0.0.56.0 "weighing": { "weight": 20000, "date": "2020-02-10T14:05:01.1525582+00:00", "source": "weighBridge", "weighBridgeName": "weighBridgeName", "metadata": {} } } } If a Transport is defined, a check weight is made depending on the state of mobile container and a specific notification is sent (see 0.562). Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 504/722 Refuse Wagon 0.0.43.0 See Refuse Truck for more explanation on the methode. Method to refuse a wagon. Refusal can happen before or after a wagon is allocated to a transport. When a wagon was allocated, it will be deallocated. HTTP Request POST /transport-api/v1/wagons/{name}/refuse-requests 0.0.43.0 Request Body { … reason (enumeration: Other, Damaged, NoSecurityEquipment, MaterialNotCompatible, InsufficientLoadableWeight, PpeNotConform, OtherCargoAlreadyLoaded), comment (string, optional), transportIdentifier (string, optional) } Name (text, mandatory) The name of the wagon given internally by the VMS. The wagon should exist. Reason (enum, mandatory) The reason of refusal of the truck. Following values are defined: InsufficientLoadableWeight WeightIssue: Available loadable weight is incompatible with requested weight 0.0.55.0 Large Width: 0.0.55.0 DriverBehaviour: 0.0.55.0 NoSecurityEquipment LashingOrSafetyEquipmentNotConformOrMissing: No security equipment present 0.0.55.0 LashingOrSafetyEquipmentNotConformOrMissing: 0.0.55.0 VehicleIssue: 0.0.55.0 InsufficientDriverPpe PpeNotConform: Driver has no or incomplete PPE 0.0.55.0 NotCompatible MaterialNotCompatible: Vehicle type not compatible with product type 0.0.55.0 OtherLoadedCargo OtherCargoAlreadyLoaded: Other/foreign products loaded on vehicle 0.0.55.0 Damaged: Vehicle damaged/broken 0.0.55.0 Other: reason is not present in this list Comment (text, optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 505/722 Additional optional comment TransportIdentifier (text, optional) The calling system/user/integrator needs to provide the Transport ID as input, if he wants us to send a message to the TMS for this transport. Responses Response 200 (Ok) Response 400 (BadRequest) Response 404 (NotFound) Wagon not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 506/722 Example { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", "context": { "key":"value" }, "reason": "NotCompatible", "comment": "comment", "transportIdentifier": "ID000000" } Notification { "notificationType": "WagonVehicleRefused", 0.0.50.0 "resourceType": "wagon", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedBy":"owner", "requestedAt":"2020-09-18T15:03:41.3660893+00:00", }, "type": "wagon", "identifier": "ID000000", "namenumber": "b-fb293en", 0.0.65.0 "reason": "NotCompatible", "comment": "comment", "transportIdentifier": "ID000000", "siteIdentifier": "LIE", 0.0.53.0 } } Anomalies See VehicleRefused (AnomalyDetected) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 507/722 Entry or Exit cross gate 0.0.43.0 The goal of this method is to specify the date time of entry / exit cross gate. This will be mainly used for reporting (reason why ‘date’ is mandatory) HTTP Request POST /transport-api/v1/convoys/{identifier}/cross-gate-event Request Parameters identifier (string) Request Body { … type (string) = [‘entryGateCrossed’, ‘exitGateCrossed’], date (datetime), gateIdentifier (string, optional) } Responses Response 200 (Ok) Response 404 (NotFound) Convoy not found Example { … "type": "entryGateCrossed”, "date": "2020-09-29T16:10:10.3424433+02:00", "gateIdentifier": "gateName” } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 508/722 Notification Example { "notificationType": "EntryGateCrossed" | "ExitGateCrossed", "resourceType": "convoy", "scope": "", "sender": "", "data": { "type": "convoy", "identifier": "testConvoy1", "name": "myName", "wagons": [ { "identifier": "testWagon1", "number": "21-81-2471-217-3", "type": "wagon" 0.0.56.0 }, { "identifier": "testWagon2", "number": "51 80 0843 001-0", "type": "wagon" 0.0.56.0 }, { "identifier": "testLoco1", "number": "31-81-665 0 286-0", "type": "wagon" 0.0.56.0 } ], "gateIdentifier": "GateIdentifier", "siteIdentifier": "LIE", 0.0.53.0 "date": "2021-02-01T10:30:02.9519348+01:00", "originalRequestInfo": { "requestedAt": "2021-02-01T10:30:02.9519348+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 509/722 Link wagon to equipment 1.81 The goal of this method is to link a wagon to an equipment. See 5.2 below for more explanation on equipments. HTTP Request PUT /transport-api/v1/transports/{identifier}/wagons/wagonnumber={wagonNumber}/equipment/{equipmentIdentifer} PUT /transport-api/v1/transports/{identifier}/wagons/wagonidentifier={wagonIdentifier}/equipment/{equipmentIdentifer} Request Parameters identifier (string) wagonNumber (string) or wagonIdentifier (string) equipmentIdentifier (string) Request Body { … } Responses Response 200 (Ok) Response 400 (BadRequest) 28 Validation Failed Response 403 (Forbidden) 61 Transport is Cancelled 502 Mobile container '{0}' not allocated to transport 503 Cannot link equipment because it is already linked to mobile container '{0}' 19 Operation is forbidden because transport is closed or completed 58 Transport '{0}' is not 'Confirmed' 36 Transport '{0}' is not 'FullyDefined' Response 404 (NotFound) 5 Transport not found 32 Transport ‘{0}’ not found on site ‘{1}’ Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 510/722 Notifications { "resourceType": "mobileContainer", "notificationType": "EquipmentLinked", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "type": "wagon", "transportIdentifier": "ID000001", "transportType": "Shipment", "siteIdentifier": "LIE", "owner": "Syltram", "mobileContainerName": "wagon1", "mobileContainerIdentifier": "wagon1Id", "equipmentIdentifier": "EQ0", "originalRequestInfo": { "requestedAt": "2022-11-10T11:20:45.2871549+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 511/722 Unlink wagon from equipment 1.81 The goal of this method is to unlink a wagon from an equipment. HTTP Request DELETE /transport-api/v1/transports/{identifier}/wagons/wagon-number={wagonNumber}/equipment DELETE /transport-api/v1/transports/{identifier}/wagons/wagon-identifier={wagonIdentifier}/equipment Request Parameters identifier (string) wagonNumber (string) or wagonIdentifier (string) Request Body { … } Responses Response 200 (Ok) Response 400 (BadRequest) 28 Validation Failed Response 403 (Forbidden) 61 Transport is Cancelled 502 Mobile container '{0}' not allocated to transport 58 Transport '{0}' is not 'Confirmed' 36 Transport '{0}' is not 'FullyDefined' Response 404 (NotFound) 5 Transport not found 32 Transport ‘{0}’ not found on site ‘{1}’ Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 512/722 Notifications { "resourceType": "mobileContainer", "notificationType": "EquipmentUnlinked", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "type": "wagon", "transportIdentifier": "ID000001", "transportType": "Shipment", "siteIdentifier": "LIE", "owner": "Syltram", "mobileContainerName": "wagon1", "mobileContainerIdentifier": "wagon1Id", "equipmentIdentifier": "EQ0", "originalRequestInfo": { "requestedAt": "2022-11-10T11:20:45.2871549+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 513/722 4.13. Ship (vessel / barge) Create or update ship 0.0.48.0 HTTP Request PUT /transport-api/v1/vessels/{name} PUT /transport-api/v1/barges/{name} Request Parameters name (string) Request Body Vessel { … identifier (string), metadata (json, optional), captainName (integer, optional), IMO (string, optional), VIN (string, optional) } Barge { … identifier (string), metadata (json, optional), captainName (integer, optional), ENI (string, optional) } Responses Response 200 (Ok) Response 201 (Created) Response 409 (Conflict) 400 Vehicle already on site or same identifier has already been used Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 514/722 Examples Vessel { … "identifier": "vesselIdentifier", "metadata": {}, "captainName": “captainABC”, "IMO": "imo", "VIN": "vin" } Barge { … "identifier": "vesselIdentifier", "metadata": {}, "captainName": “captainABC”, "ENI": "eni" } Notifications { "notificationType": "ShipVehicleCreated" | "ShipVehicleUpdated", 0.0.50.0 "resourceType": "ship", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "vessel" | "barge", "identifier": "identifierTest", "name": "myName", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 515/722 Get Ship by name 1.81.0 Retrieve a ship by name. HTTP Request GET /transport-api/v1/ships/{name} Request Parameters name (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 516/722 { … type (string) = [‘Barge’, ‘Vessel’], name (string), identifier (string), siteIdentifier (string), captainName (string, optional), IMO (string, optional), ENI (string, optional), VIN (string, optional), metadata (json, optional), locatedOn { locationType (string) = [‘Bay’, ‘FreeLocation’], bayIdentifier (string), label (string), name (string), freeLocationType (string), requestedBy (string), requestedAt (datetime), metadata (json, optional) }, transportIdentifier (string, optional), deprecated 1.81.0 (value is specified only when transport state is not ‘Closed’ or ‘Completed’) transport { 1.81.0 identifier (string), state (string), type (string) = [‘Intrasite’, ‘Shipment’], owner (string) }, loadPlan: { metadata (Json, optional), toLoad: [{ material { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], toCheck: [{ lmiContext (string), lmiNumber (string), }], Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 517/722 checked: [{ lmiContext (string), lmiNumber (string), success (boolean, optional), reason (string, optional), comment (string, optional) }], loaded: [{ materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) }, actualPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), expectedPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], impossibleToLoad: [{ lmiContext (string), lmiNumber (string) }], toUnload: [{ lmiContext (string), lmiNumber (string) }], unloaded: [{ lmiContext (string), lmiNumber (string) }] }, loadedMaterialUnits [{ materialUnit { lmiContext (string), lmiNumber (string) }, position { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 518/722 cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string), spireOrientation (string) } (optional), } (optional), loadingDateTime (datetime), metadata (json, optional), siteIdentifier (string, optional) }], currentState (string), transportExecutionMetadata (json, optional) } } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 519/722 Example TODO Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 520/722 Allocate ship to Transport 0.0.48.0 HTTP Request POST /transport-api/v1/transports/{identifier}/ship 0.0.48.0 Please wait notification state changed to ‘Confirmed’ before call this uri. Request Body { … name (string) } â–ª Identifier (text, mandatory) It is the Identifier of the Transport on which the ship will be allocated The Transport should: o Be fully defined o Its state should be ‘Confirmed’ o Transport mode should be for Vessel or Barge o Have a ‘Confirmed’ Loading Instruction for a loading site which is the same as the site where the Ship is located. â–ª Name (text, mandatory) It is the name of the Ship (see create or update vessel properties). The ship should be: o Not yet allocated to a Transport Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 521/722 Responses Response 200 (Ok) Response 400 (BadRequest) Response 403 (Forbidden) 23 Transport And Physical Vehicle mode are different 36 Transport is not fully defined 292 Allocation is forbidden because mobile container is loaded (and already allocated) Response 404 (NotFound) 5 Transport not found 6 Physical Vehicle not found 32 Transport ‘{0}’ not found on site Response 409 (Conflict) 12 Vehicle '{0}' is already associated to the transport '{1}' for loading site '{2}' 17 Another vehicle '{0}' is already associated to the transport '{1}' for loading site '{2}' Response 502 (BadGateway) 44 MaterialUnit '{0}' ‘{1}’ not found in MaterialUnit context If you receive a ‘Bad Gateway’, please retry to send request in few seconds. Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "name":"S0" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 522/722 Notifications { "notificationType": "StateChanged" "resourceType": "transport", "scope": "", "sender": "Artemis.Core.Transport", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-04-15T09:45:58.7051112+00:00", "requestedBy": "owner" }, "oldValue": null, "newValue": "Arrived", "owner": "TMS", "transportIdentifier": "T0", "siteIdentifier": "LIE", "type": "maritime" } } Transport arrived { "notificationType": "TransportArrived", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "identifier": "T0", "siteIdentifier": "LIE", "type": "maritime", 0.0.51.0 "arrivalDateTime": "2019-12-23T14:53:08.6760606+00:00", "owner": "TMS" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 523/722 Ship allocated { "notificationType": "ShipVehicleAllocated", 0.0.51.0 "resourceType": "ship", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "transportIdentifier": " T0", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier": "LIE", "transportowner": "TMS", 0.0.52.0 "shipIdentifier": "ID000000", "shipName": "S0" } } Transport State changed { "notificationType": "stateChanged", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "oldValue": "Confirmed", "newValue": "Arrived", "transportIdentifier": "T0", "siteIdentifier": "LIE", "owner": "TMS", "type": "maritime" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 524/722 Material Unit(s) not accessible { "notificationType": "NotAccessibleMaterialUnitsDetected", "resourceType": "transport", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-02-27T08:13:47.2426005+00:00", "requestedBy": "owner" }, "identifier": "T0", "owner": "TMS", "siteIdentifier": "LIE", "notAccessibleMaterialUnits": [ { "lmiNumber": "lmiNumber", "lmiContext": "lmiContext", "reason": "reason" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 525/722 Ship arrival at bay 0.0.48.0 HTTP Request PUT /transport-api/v1/ships/identifier={identifier}/bay/{bayIdentifier} PUT /transport-api/v1/ships/name={name}/bay/{bayIdentifier} Request Parameters identifier (string) or name (string) bayIdentifier (string) Request Body { metadata (json, optional) } Responses Response 200 (Ok) Response 400 (BadRequest) Response 404 (NotFound) 14 Bay not found Ship not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 526/722 Notification { "notificationType": "ShipVehicleArrivedAtBay", 0.0.50.0 "resourceType": "ship", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "barge", "identifier": "bargeTest", "name": "myName", "location": { "type": "bay", "bayIdentifier": "bayIdentifier" }, "previousLocation": { "type": "freeLocation", "name": "InTransit", "freeLocationType": "InInternalTransit" } } } Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "metadata":null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 527/722 Ship arrival at free location 0.0.48.0 HTTP Request PUT /transport-api/v1/ships/identifier={identifier}/bay/free-location PUT /transport-api/v1/ships/name={name}/bay/free-location Request Parameters identifier (string) or name (string) Request Body { … name (string), type (string), metadata (json, optional) } â–ª FreeLocationName (text, mandatory) It defines the name (a simple string) of the location on which the ship is located. For more details, please read 5.1 FreeLocation definition. â–ª FreeLocationType (string, mandatory) It defines the type of free location on which the ship is located. For more details, please read 5.1 FreeLocation definition. Artemis doesn’t check that ship VMS use only type usable by ship VMS. â–ª LocationMetaData (json, optional) Any metadata used/required by local system relatively to the location of the ship. Responses Response 200 (Ok) Response 403 (Forbidden) 405 Location change request out of date Response 404 (NotFound) Ship not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 528/722 Example { "requestedBy":"owner", "requestedAt":"2019-12-23T15:03:41.3660893+00:00", "context": { "key":"value" }, "name":"T0", "type":"freeLocationType", "metadata": null } Notification(s) { "notificationType": "ShipVehicleLocatedOnFreeLocation", 0.0.50.0 "resourceType": "ship", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2019-12-23T14:53:08.6760606+00:00", "requestedBy": "owner" }, "type": "barge", "identifier": "shipTest", "name": "shipName", "location": { "type": "freeLocation", "name": "InTransit", "freeLocationType": null }, "previousLocation": { "type": "bay", "bayIdentifier": "bayIdentifier" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 529/722 Ship departure from bay 0.0.48.0 This method is used to indicate to Artemis core that a vessel leaves a bay. HTTP Request DELETE /transport-api/v1/ships/{name}/bay Request Parameters name (string) Request Body { … bayIdentifier (string, optional), metadata (json, optional), freeLocationName (string, optional) } â–ª Name (text, mandatory): it is the name of the ship given internally by the VMS. There is only one ship with that Ship.Identifier on all sites managed by an Artemis core instance. â–ª BayIdentifier (text, mandatory): it defines the bay from which the ship left. A Bay with the same identifier should exist. The Bay should be located within the same site as the ship is. The Bay should should be the same as where the ship is located. â–ª Metadata (json, optional) â–ª FreeLocationName (text, optional): it allows specific to define where the ship will go (if VMS knows that). When empty, Artemis will initialze FreeLocationName with ‘In transit’ Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 530/722 Responses Response 200 (Ok) Response 403 (Forbidden) 405 Location change request out of date Response 404 (NotFound) 14 Bay not found 57 Ship not found Example { … "bayIdentifier": "ID000000", "metadata": null, "freeLocationName": "freeLocation" } Notification { "notificationType": "ShipVehicleLeftBay", 0.0.50.0 "resourceType": "ship", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-23T11:08:24.7984371+00:00", "requestedBy": "owner" }, "type": "barge", "identifier": "vesselIdentifier", "name": "vesselName", "location": { "type": "freeLocation", "name": "freeLocationTest", "freeLocationType": "InInternalTransit" }, "previousLocation": { "type": "bay", "bayIdentifier": "bayIdentifier" }, "expectedBayIdentifier": null } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 531/722 Delete ship 0.0.49.0 HTTP Request DELETE /transport-api/v1/ships/{name} Request Parameters name (string) Request Body { … } Responses Response 200 (Ok) Response 403 (Forbidden) 37 MaterialUnit(s) are already loaded 38 Physical Vehicle Group already allocated Response 404 (NotFound) 11 Physical Vehicle Group not found Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 532/722 Notification { "notificationType": "ShipVehicleDeleted", 0.0.50.0 "resourceType": "ship", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-01-07T10:43:32.0149267+00:00", "requestedBy": "owner" }, "type": "vessel" | "barge", "identifier": "identifierTest", "name": "myName", } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 533/722 4.14. Mobile Container(s) Get all from Transport 0.0.31.0 Retrieve list of mobile-container(s) allocated to a specific transport. HTTP Request GET /transport-api/v1/transports/{identifier}/mobile-containers 0.0.39.0 Request Parameters name (string) Responses Response 200 (Ok) { [ { identifier (string), name (string), siteIdentifier (string), 0.0.39.0 equipment : { 0.0.81.0 identifier (string), vehicleName (string), vehicleTypeIdentifier (string) } } ] } Response 404 (NotFound) 5 Transport not found Example { [ { "identifier": "ID000000", "name": "ID000000", "siteIdentifier": "KESSALE" }, { "identifier": "ID000001", "name": "ID000001", "siteIdentifier": "RAMET" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 534/722 Get by identifier, name, or linked equiment 0.0.38.0 Retrieve mobile-container by name, identifier or linked equipment with load plan, loaded materials, etc. HTTP Request GET /transport-api/v1/mobile-containers/name={name} 0.0.39.0 GET /transport-api/v1/mobile-containers/identifier={identifier} GET /transport-api/v1/mobile-containers/equipment-identifier={equipmentIdentifier} 1.81.0 Request Parameters name (string) or identifier (string) or equipmentIdentifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 535/722 { globalTransportIdentifier (string), deprecated 1.81.0 globalTransportType (string), deprecated 1.81.0 transport { 1.81.0 identifier (string), state (string), type (string) = [‘Shipment’, ‘Intrasite’], owner (string) }, type (string) = [‘trailer, ‘wagon’, ‘ship’, …] 1.81.0 identifier (string), name (string), currentState (string) = [‘ready’, ‘executing’,’executed’], 0.0.42.0 metadata (Json, optional), 0.0.43.0 siteIdentifier (string), 0.0.74.0 transportOwner (string), deprecated 1.81.0 equipmentIdentifier (string), 1.81 equipment : { 1.81 identifier (string), vehicleName (string), vehicleTypeIdentifier (string) }, loadPlan: { metadata (Json, optional), 0.0.43.0 toLoad: [{ material { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], toCheck: [{ lmiContext (string), lmiNumber (string), }], checked: [{ lmiContext (string), lmiNumber (string), success (boolean, optional), reason (string, optional), comment (string, optional) }], Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 536/722 loaded: [{ material { lmiContext (string), lmiNumber (string), materialGroup (string) }, actualPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), expectedPosition { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional) }], impossibleToLoads: [{ lmiContext (string), lmiNumber (string) }], toUnload: [{ lmiContext (string), lmiNumber (string), destinationLocationIdentifiers (string[]) 1.84.0 }] 1.65.0, unloaded: [{ lmiContext (string), lmiNumber (string) }] 1.65.0 }, loadedMaterialUnits: [{ materialUnit { lmiContext (string), lmiNumber (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string), spireOrientation (string) } (optional), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 537/722 } (optional), loadingDateTime (datetime), metadata (Json, optional) 0.0.43.0, siteIdentifier (string, optional) 0.0.67.0 }] } Response 200 (Ok) Response 404 (NotFound) Mobile Container not found Example { "globalTransportIdentifier": "ID000000", "equipmentIdentifier": null, "identifier": "ID000000", "name": "trailerID000000", "siteIdentifier": "site1", "equipmentIdentifier": null, "equipment": null, "loadPlan": { "toLoad": [ { "material": { "lmiContext": "111", "lmiNumber": "11", "materialGroup": "1111" }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" } }, … ], "toCheck": [], "loaded": [], "materialUnitsImpossibleToLoad": [], "toUnload": [], "unloaded": [] }, "loadedMaterialUnits": [] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 538/722 Get for any transport state 1.81.0 Retrieve mobile-container by name with load plan, loaded materials, etc. for any transport state. HTTP Request GET /transport-api/v1/mobile-containers/name={name}/include-finished={includeFinished} Request Parameters name (string) includeFinished (bool) Responses Response 200 (Ok) Same as Get Mobile Container Example Same as Get Mobile Container Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 539/722 Load a material • 0.0.44.0 This API is normally used to load MU on an existing MC. The MC is created when a vehicle is allocated to a transport. In case loading needs to be done on a vehicle that is not allocated yet, the MC does not exist. However this API can still be used. In that case a non-allocated MC will be created automatically before the loading is done. HTTP Request PUT /transport-api/v1/mobile-containers /name={name}/materialunits/context={context}&number={number} or /identifier={identifier}/materialunits/context={context}&number={number} Request Parameters name (string) or identifier (string) context (string) number (string) Request Body { … materialUnit { position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), loadingDateTime (datetime, optional), metadata (Json, optional) } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 540/722 Responses Response 200 (Ok) Response 403 (Forbidden) 30 Location is more revent than requested one 51 Material not found 401 Operation not allowed. MobileContainer is cancelled 0.0.49.0 Response 404 (NotFound) 6 Mobile container ‘{0}’ not found Example { … "materialUnit": { "position": { "cradleFrontToRearIndex": 10, "cradleLeftToRightIndex": 20, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "loadingDateTime": "2020-10-13T09:26:19.134Z", "metadata": {}, } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 541/722 Notification(s) If a previous material was already loaded on mobile container, a notification “Unloaded” is sent. Example “Material unloaded” { "notificationType": "Unloaded" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "unloadingDatetime": "2020-05-05T09:25:46.711Z", "targetLocation": "site", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "wagonName1", 0.0.54.0 "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 542/722 Then, a notification “Loaded” is sent. Example of material loaded { "notificationType": "Loaded" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "loadedBy": "can be null", "loadingDatetime": "2020-05-05T09:25:46.711Z", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "FB545GG", "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 543/722 Example of Material moved 0.0.46.0 { "notificationType": "Moved" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "loadedBy": "can be null", "loadingDatetime": "2020-05-05T09:25:46.711Z", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "FB545GG", "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "owner": "TMS" 0.0.54.0 } } From the version 0.0.41.0, notifications ‘StartLoading’ and ‘EndLoading’ are sent respectively when: - the first material is loaded OR checked - the last material is loaded AND checked (if material(s) to check are requested) The two notifications are sent once. From the version 0.0.44.0, the notification LoadingFinished is sent when the last material is loaded. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 544/722 Example “Start loading on trailer” { "notificationType": "LoadingStarted", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"trailerID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Example “Start loading on wagon” { "notificationType": "LoadingStarted", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 545/722 Example “End loading on trailer” { "notificationType": "LoadingEnded", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Example “End loading on wagon” { "notificationType": "LoadingEnded", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 546/722 Example when all materials are loaded on a Truck { "notificationType": "LoadingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"trailerID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Example when all materials are loaded on a Wagon { "notificationType": "LoadingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } If a Transport is defined, a check weight is made depending on the state of mobile container and a specific notification is sent (see 0.562). Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 547/722 0.0.44.0 Anomalies See UnexpectedMuLoaded (AnomalyDetected) See MuWithProblemLoaded - If Material is blocked: “AnomalyDetected”. - Else: “AnomalyFixed” See { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "ef993d4a-230e-4625-8347-d0d02a8f6606", "type": [ "impossibleToLoad" ], "siteIdentifier": "LIE", 0.0.56.0 "reason": "reason", "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:48:34.2002645+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 548/722 MuLoadedOnWrongPosition - If Material is on wrong position: “AnomalyDetected”. - Else, if material position is updated and expected: “AnomalyFixed” See Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 549/722 MuFinalCheckError - If one or more MaterialUnit(s) expected has checked result failed : “AnomalyDetected” - If these expected MaterialUnit(s) have checked result successful after: “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 550/722 Get loaded material(s) 0.0.44.0 HTTP Request GET /transport-api/v1/mobile-containers/name={name}/materialunits GET /transport-api/v1/mobile-containers/identifier={identifier}/materialunits Request Parameters name (string) or identifier (string) Request Body [ { materialUnit { lmiContext (string, optional), lmiNumber (string, optional), weight (int, optional), 0.0.54.0 }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), loadingDateTime (datetime, optional), metadata (Json, optional) 0.0.43.0, siteIdentifier (string, optional) 0.0.67.0 }, … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 551/722 Responses Response 200 (Ok) Example [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "weight": 5000 }, "position": { "cradleFrontToRearIndex": 10, "cradleLeftToRightIndex": 20, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "loadingDateTime": "2020-10-13T09:26:19.134Z", "metadata": {}, "siteIdentifier": "LIE" }, … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 552/722 Save snapshot 0.0.37.0 HTTP Request POST /transport-api/v1/mobile-containers/name={name}/snapshots 0.0.39.0 POST /transport-api/v1/mobile-containers/identifier={identifier}/snapshots 0.0.39.0 Request Parameters name (string) or identifier (string) Request Body { … datetime (datetime), defaultUnloadLocation (string), metadata (Json, optional), 0.0.43.0 materials [ { lmiContext (string), lmiNumber (string), position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string, optional) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string, optional) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), loadingDateTime (datetime, optional), loadedBy (string, optional), metadata (Json, optional), siteIdentifier (string, optional), 0.0.67.0 } ] } datetime (datetime) Snapshot datetime defaultUnloadLocation (string) Default unload warehouse location (ex: Site) where material(s) are unloaded if necessary. material o lmiContext (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 553/722 LMIContext of Material Unit o lmiNumber (string) LMINumber of Material Unit o position (optional) cradleFrontToRearIndex (uint, optional) >= 1 that indicates the cradle index from the front to the back of the mobile container (in the move direction). When laying on front cradle, CradleFrontToRearIndex is equal to 1. After, CradleFrontToRearIndex is increased 1 by 1. cradleLeftToRightIndex (uint, optional) >= 1 that indicates the cradle index from the left to the right of the mobile container (in the move direction). When laying on left cradle, CradleLeftToRightIndex is equal to 1. After, CradleLeftToRightIndex is increased 1 by 1. level (uint, optional) >= 1 that indicates the level at which the material is in the mobile container. When laying on mobile container ‘floor’, Level is equal to 1. Higher, Level is increased 1 by 1. orientation (string, optional) Indicates the orientation of the material (depending to the type of product) on the mobile container relatively to the move direction. spireOrientation (string, optional) Indicates the orientation of the material (depending to the type of product) on the mobile container relatively to the move direction. o loadingDateTime (datetime, optional) o loadedBy (string, optional) o siteIdentifier (string, optional) Especially useful for mutil sites use case. Indicates the site where the material has been loaded. If not specified on new loaded material the current site identifier is used (from the Transport-Location-Id http header). When not specified on already loaded material the existing value will stay the same. When specified, the new value will be used for new loaded materials and will replace the site identifier on existing ones. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 554/722 Responses Response 200 (Ok) Response 403 (Forbidden) 312 This snapshot contains material unit(s) with location more recent 51 Material(s) not found 0.0.42.0 47 Truck ‘{0}’ not allocated 0.0.57.0 48 Wagon ‘{0}’ not allocated 0.0.57.0 56 Ship ‘{0}’ not allocated 0.0.57.0 401 Operation not allowed. MobileContainer is cancelled. 0.0.49.0 Response 400 (BadRequest) 311 This snapshot contains material units duplicated. Affected MU : {0} 28 Default Unloading Location {0} does not exist Response 404 (NotFound) Physical Vehicle not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 555/722 Example { … "datetime": "2020-05-05T09:25:46.711Z", "defaultUnloadLocation": "Site1", "materials": [ { "lmiContext": "11", "lmiNumber": "22", "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, "loadingDateTime": null "loadedBy": null, }, { "lmiContext": "22", "lmiNumber": "22", "position": { "cradleFrontToRearIndex": 0, "cradleLeftToRightIndex": 0, "level": 0, "orientation": "axisHorizontalCrosswise", "spireOrientation": "bottomToFront" }, "loadingDateTime": "2020-05-05T09:25:46.711Z", "loadedBy": null } ] } Notification(s) For each MaterialUnit, a notification “Loaded” or “Unloaded” is sent. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 556/722 Example Loaded notification { "notificationType": "Loaded" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "loadedBy": "can be null", "loadingDatetime": "2020-05-05T09:25:46.711Z", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "FB545GG", "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 557/722 Example unloaded notification { "notificationType": "Unloaded" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "unloadingDatetime": "2020-05-05T09:25:46.711Z", "targetLocation": "site", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "wagonName1", 0.0.54.0 "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner": "TMS" 0.0.54.0 } } Example of Moved notification 0.0.46.0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 558/722 { "notificationType": "Moved" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-03-02T10:03:47.6621799+00:00", "requestedBy": "owner" }, "Id": { "lmiContext": "context1", "lmiNumber": "number1", }, "loadedBy": "can be null", "loadingDatetime": "2020-05-05T09:25:46.711Z", "mobileContainerIdentifier": "FB545GG", "mobileContainerName": "FB545GG", "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 559/722 Example notification when all materials are loaded { "notificationType": "LoadingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"trailerID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } If a Transport is defined, a check weight is made depending on the state of mobile container and a specific notification is sent (see 0.562). 0.0.44.0 Anomalies See 0.562 UnexpectedMuLoaded (AnomalyDetected) See 0.562 MuWithProblemLoaded - If Material is blocked: “AnomalyDetected”. - Else: “AnomalyFixed” See 0 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 560/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "ef993d4a-230e-4625-8347-d0d02a8f6606", "type": [ "impossibleToLoad" ], "siteIdentifier": "LIE", 0.0.56.0 "reason": "reason", "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:48:34.2002645+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 561/722 MuLoadedOnWrongPosition (AnomalyDetected) See Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 562/722 MuFinalCheckError - If one or more MaterialUnit(s) expected has checked result failed : “AnomalyDetected” - If these expected MaterialUnit(s) have checked result successful after: “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 563/722 Save load plan 0.0.38.0 Allows to create or update a loading plan for a mobile container. If a previous load plan exists, it will be replaced by new one. HTTP Request PUT /transport-api/v1/mobile-containers/name={name}/load-plan 0.0.39.0 PUT /transport-api/v1/mobile-containers/identifier={identifier}/load-plan 0.0.39.0 Request Parameters name (string) or identifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 564/722 Request Body { … toLoad: [ { materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) } position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string) = [‘topToFront’, ‘bottomToFront’] } (optional), } (optional), } ], toCheck: [ { lmiContext (string), lmiNumber (string) } ], toUnload: [ 0.0.65.0 { lmiContext (string), lmiNumber (string), destinationLocationIdentifiers (string[], optional) 1.84.0 } ], metadata (Json, optional) 0.0.43.0 } • toLoad List of MaterialUnit(s) to load o materialUnit lmiContext (string) LMIContext of Material Unit lmiNumber (string) LMINumber of Material Unit o position (optional) cradleFrontToRearIndex (uint, optional) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 565/722 >= 1 that indicates the cradle index from the front to the back of the mobile container (in the move direction). When laying on front cradle, CradleFrontToRearIndex is equal to 1. After, CradleFrontToRearIndex is increased 1 by 1. cradleLeftToRightIndex (uint, optional) >= 1 that indicates the cradle index from the left to the right of the mobile container (in the move direction). When laying on left cradle, CradleLeftToRightIndex is equal to 1. After, CradleLeftToRightIndex is increased 1 by 1. level (uint, optional) >= 1 that indicates the level at which the material is in the mobile container. When laying on mobile container ‘floor’, Level is equal to 1. Higher, Level is increased 1 by 1. orientation (string) Indicates the orientation of the material (depending to the type of product) on the mobile container relatively to the move direction. spireOrientation (string) Indicates the orientation of the material (depending to the type of product) on the mobile container relatively to the move direction. o • materialGroup (string) toCheck List of MaterialUnit(s) to check o lmiContext (string) LMIContext of Material Unit o lmiNumber (string) LMINumber of Material Unit • toUnload List of MaterialUnit(s) to unload o lmiContext (string) LMIContext of Material Unit o lmiNumber (string) LMINumber of Material Unit Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 566/722 Responses Response 200 (Ok) Response 201 (Created) Response 403 (Forbidden) 50 Material(s) marked for deletion 51 Material(s) not found 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated 273 Operation is forbidden because mobile container is not allocated 296 Operation cannot be performed because load plan does not contain this material unit to load. Affected MU : {0} 401 Operation not allowed. MobileContainer is cancelled. 0.0.49.0 Response 400 (BadRequest) 282 This load plan contains material units previously flagged as 'ImpossibleToLoad'. 0.0.48.0 Affected MU : {0} 283 Cannot save load plan with no material units 284 This load plan contains material units already selected in another transport. 0.0.48.0 Affected MU : {0} 286 The material group of this material unit in the ToLoad list doesn't match with the 0.0.63.0 one in the ToCheck list. MU source : {0} 281 This load plan contains material units already selected in the current Transport. Affected MU : {0} Response 404 (NotFound) 6 Physical Vehicle not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 567/722 Example { … "toLoad": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "materialGroup": "string" }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" } } ], "toCheck": [ { "lmiContext": "LIE", "lmiNumber": " ID000000" } ], "toUnload": [ { "lmiContext": "LIE", "lmiNumber": " ID000001", "destinationIdentifiers": ["ID000001", … ] } ], "metadata": { "test1”: "test1”, "test2”: "test2”, } } Notification(s) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 568/722 { "notificationType": "LoadPlanCreated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": 0.0.47.0 { "toLoad": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toCheck": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toUnload": [{"lmiContext": "LIE", "lmiNumber": "ID000001", "destinationIdentifiers": ["ID000001", … ]}, …] 1.84.0 } } } Or Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 569/722 { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000" "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": 0.0.47.0 { "toLoad": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toCheck": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toUnload": [{"lmiContext": "LIE", "lmiNumber": "ID000001", "destinationIdentifiers": ["ID000001", … ]}, …] 1.84.0 } } } When LoadPlan is created or updated (and a Transport is defined), a check weight (GVWR, etc.) is called depending on the state of mobile container and a specific notification is sent (see 0.562). 0.0.48.0 Anomalies See UnexpectedMuLoaded (AnomalyDetected or AnomalyFixed) See ImpossibleToLoad (AnomalyDetected) See Error! Reference source not found. - If materialUnit(s) are duplicated in multiple transport: “AnomalyCreated” - Else, “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 570/722 Add material(s) to load in load plan 0.0.48.0 Allows to add material(s) to load in a loading plan for a mobile container. HTTP Request POST /transport-api/v1/mobile-containers/name={name}/load-plan/loading/material-units POST /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/loading/material-units Request Parameters name (string) or identifier (string) Request Body { … materials: [ { materialUnit { lmiContext (string), lmiNumber (string), materialGroup (string) }, position { cradleFrontToRearIndex (int, optional), cradleLeftToRightIndex (int, optional), level (int, optional), orientation (string) = [‘axisVertical’, ‘axisHorizontalCrosswise’, ‘axisHorizontalLengthwise’], spireOrientation (string) = [‘topToFront’, ‘bottomToFront’] } (optional) } }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 571/722 Responses Response 200 (Ok) Response 201 (Created) Response 403 (Forbidden) 50 Material(s) marked for deletion 51 Material(s) not found 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated 273 Operation is forbidden because mobile container is not allocated 290 Load plan does not exist on this mobile container Response 400 (BadRequest) 283 Cannot save load plan with no material units 286 The material group of this material unit in the ToLoad list doesn't match with the one in the ToCheck list. MU source : {0} 281 This load plan contains material units already selected in the current Transport. Affected MU : {0} Response 404 (NotFound) 6 Physical Vehicle not found 301 Operation cannot be performed because mobile container has not been found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 572/722 Example { … "materials": [ { "materialUnit": { "lmiContext": "LIE", "lmiNumber": "ID000000", "materialGroup": "string" }, "position": { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" } } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 573/722 Notification(s) { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": { "toLoad": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toCheck": […], "toUnload": […] 1.65.0 } } } When LoadPlan is updated (and a Transport is defined), a check weight (GVWR, etc.) is called depending on the state of mobile container and a specific notification is sent (see 0.562). Anomalies See UnexpectedMuLoaded (AnomalyFixed) See ImpossibleToLoad (AnomalyDetected) See Error! Reference source not found. - If materialUnit(s) are duplicated in multiple transport: “AnomalyCreated” - Else, “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 574/722 Add material(s) to check in load plan 0.0.48.0 Allows to add material(s) to check in a loading plan for a mobile container. HTTP Request POST /transport-api/v1/mobile-containers/name={name}/load-plan/checking/material-units POST /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/checking/materialunits Request Parameters name (string) or identifier (string) Request Body { … materials: [ { lmiContext (string), lmiNumber (string) }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 575/722 Responses Response 200 (Ok) Response 201 (Created) Response 403 (Forbidden) 50 Material(s) marked for deletion 51 Material(s) not found 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated 273 Operation is forbidden because mobile container is not allocated 290 Load plan does not exist on this mobile container 296 Operation cannot be performed because load plan does not contain this material unit to load. Affected MU : {0} Response 400 (BadRequest) 283 Cannot save load plan with no material units 286 The material group of this material unit in the ToLoad list doesn't match with the one in the ToCheck list. MU source : {0} 281 This load plan contains material units already selected in the current Transport. Affected MU : {0} Response 404 (NotFound) 6 Physical Vehicle not found 301 Operation cannot be performed because mobile container has not been found Example { … "materials": [ { "lmiContext": "LIE", "lmiNumber": "ID000000" }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 576/722 Notification(s) { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": { "toLoad": […], "toCheck": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toUnload": […] 1.65.0 } } } When LoadPlan is updated (and a Transport is defined), a check weight (GVWR, etc.) is called depending on the state of mobile container and a specific notification is sent (see 0.562). Anomalies See UnexpectedMuLoaded (AnomalyFixed) See ImpossibleToLoad (AnomalyDetected) See Error! Reference source not found. - If materialUnit(s) are duplicated in multiple transport: “AnomalyCreated” - Else, “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 577/722 Add material(s) to unload in load plan 1.65.0 Allows to add material(s) to unload in a loading plan for a mobile container. HTTP Request POST /transport-api/v1/mobile-containers/name={name}/load-plan/unloading/material-units POST /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/unloading/materialunits Request Parameters name (string) or identifier (string) Request Body { … materials: [ { lmiContext (string), lmiNumber (string), destinationLocationIdentifiers (string[], optional) 1.84.0 }, … ] } Responses Response 200 (Ok) Response 201 (Created) Response 403 (Forbidden) 50 Material(s) marked for deletion 51 Material(s) not found 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated 273 Operation is forbidden because mobile container is not allocated 290 Load plan does not exist on this mobile container Response 400 (BadRequest) 283 Cannot save load plan with no material units 281 This load plan contains material units already selected in the current Transport. Affected MU : {0} Response 404 (NotFound) 6 Physical Vehicle not found 301 Operation cannot be performed because mobile container has not been found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 578/722 Example { … "materials": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "destinationLocationIdentifiers" : null } ] } Notification(s) { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", "loadPlan": { "toLoad": […], "toCheck": […], "toUnload": [{"lmiContext": "LIE", "lmiNumber": "ID000000", "destinationLocationIdentifiers" : null }, …] } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 579/722 Remove material(s) to load from load plan 0.0.48.0 Allows to remove material(s) to load from a loading plan for a mobile container. HTTP Request DELETE /transport-api/v1/mobile-containers/name={name}/load-plan/loading/material-units DELETE /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/loading/materialunits Request Parameters name (string) or identifier (string) Request Body { … materials: [ { lmiContext (string), lmiNumber (string) }, … ] } Responses Response 200 (Ok) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) 6 Physical Vehicle not found 301 Operation cannot be performed because mobile container has not been found 288 Operation cannot be performed because load plan does not contain this material unit to load. Affected MU: {0} Response 400 (BadRequest) 283 Cannot save load plan with no material units Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 580/722 Notification(s) { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": { "toLoad": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, , …] "toCheck": […], "toUnload": […] 1.65.0 } } } Or Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 581/722 { "notificationType": "LoadPlanRemoved" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": [{ "toLoad": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toCheck": […], "toUnload": [] }] } } Anomalies See UnexpectedMuLoaded (AnomalyDetected) See ImpossibleToLoad (AnomalyDetected) See Error! Reference source not found. - If materialUnit(s) are duplicated in multiple transport: “AnomalyCreated” - Else, “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 582/722 Remove material(s) to check from load plan 0.0.48.0 Allows to remove material(s) to check from a loading plan for a mobile container. HTTP Request DELETE /transport-api/v1/mobile-containers/name={name}/load-plan/checking/material-units DELETE /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/checking/materialunits Request Parameters name (string) or identifier (string) Request Body { … materials: [ { lmiContext (string), lmiNumber (string) }, … ] } Responses Response 200 (Ok) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) 6 Physical Vehicle not found 301 Operation cannot be performed because mobile container has not been found 289 Operation cannot be performed because load plan does not contain this material unit to check. Affected MU: {0} Response 400 (BadRequest) 283 Cannot save load plan with no material units Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 583/722 Notification(s) { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": [{ "toLoad": […], "toCheck": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toUnload": […] 1.65.0 }] } } Anomalies See UnexpectedMuLoaded (AnomalyDetected) See ImpossibleToLoad (AnomalyDetected) See Error! Reference source not found. - If materialUnit(s) are duplicated in multiple transport: “AnomalyCreated” - Else, “AnomalyFixed” Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 584/722 Remove material(s) to unload from load plan 1.65.0 Allows to remove material(s) to unload from a loading plan for a mobile container. HTTP Request DELETE /transport-api/v1/mobile-containers/name={name}/load-plan/unloading/material-units DELETE /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/unloading/materialunits Request Parameters name (string) or identifier (string) Request Body { … materials: [ { lmiContext (string), lmiNumber (string) }, … ] } Responses Response 200 (Ok) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) 6 Physical Vehicle not found 301 Operation cannot be performed because mobile container has not been found 297 Operation cannot be performed because load plan does not contain this material unit to unload. Affected MU: {0} Response 400 (BadRequest) 283 Cannot save load plan with no material units Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 585/722 Notification(s) { "notificationType": "LoadPlanUpdated" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": { "toLoad": […], "toCheck": […], "toUnload": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, , …] } } } Or Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 586/722 { "notificationType": "LoadPlanRemoved" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": [{ "toLoad": [], "toCheck": [], "toUnload": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], }] } } Deallocate from Transport 0.0.44.0 Allows to deallocate a mobile container (trailer or wagon) from a Transport. PS: if the mobile container is a trailer, and is the single trailer on truck, all truck is deallocated. HTTP Request DELETE /transport-api/v1/mobile-containers/name={name}/transportdeallocationrequest DELETE /transport-api/v1/mobile-containers/identifier={identifier}/transportdeallocationrequest Request Parameters name (string) or identifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 587/722 Request Body { … } Responses Response 204 (NoContent) Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) 6 Physical vehicle not found 11 Mobile container parent not found 42 Transport on site not found Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 588/722 Notification(s) Ex: Deallocate a Truck { "notificationType": "EventRaised" "resourceType": "transport", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "eventType": "deallocation", "identifier": "ID000000", "name": "T0", "originalRequestInfo": { "requestedAt": "2020-10-15T11:49:38.0098233+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } 0.0.58.0 { "notificationType": "VehicleDeallocated" "resourceType": "wagon | ship", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", "siteIdentifier": "LIE", "owner": "TMS", "identifier": "ID000000", "name": "T0", "lastVehicle": true | false, "originalRequestInfo": { "requestedAt": "2020-10-15T11:49:38.0098233+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } or Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 589/722 0.0.58.0 { "notificationType": "VehicleDeallocated" "resourceType": "truck", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", "siteIdentifier": "LIE", "owner": "TMS", "identifier": "ID000000", "name": "T0", "trailers": [ { "name": "trailerID000000", "identifier": "ID000000" }, "lastVehicle": true | false, "originalRequestInfo": { "requestedAt": "2020-10-15T11:49:38.0098233+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 590/722 Ex: Deallocate a Trailer { "notificationType": "EventRaised" "resourceType": "transport", "scope": "", "sender": "Artemis.Transport.Execution", "data": { "eventType": "deallocation", "identifier": "ID000000", "name": "trailerID000000", "originalRequestInfo": { "requestedAt": "2020-10-15T11:51:48.8346915+02:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 591/722 Save list of checked material(s) 0.0.41.0 Allows to create or update a list of material(s) – present in load plan to check – that are checked on a mobile container. If previous list of checked material(s) was present, this method replaces the old list of checked material(s). HTTP Request PUT /transport-api/v1/mobile-containers/name={name}/load-plan/checked PUT /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/checked Request Parameters name (string) or identifier (string) Request Body { … checkedMaterialUnits: [ { lmiContext (string), lmiNumber (string), success (boolean), reason (string, optional), comment (string, optional) } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 592/722 Responses Response 200 (Ok) Response 201 (Created) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 400 (BadRequest) Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) Physical vehicle not found Example { … "checkedMaterialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000", "success": true }, { "lmiContext": "LIE", "lmiNumber": "ID000001", "success": false, "reason": "reason…", "comment": "comment…" }, … ] } Notification(s) per material Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 593/722 { "notificationType": "Checked" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-08-20T05:55:50.7595674+00:00", "requestedBy": "owner" }, "id": { "lmiContext": "LIE", "lmiNumber": "ID000000" }, "success": false, "reason": "reason", "comment": "comment", "mobileContainerIdentifier": "wagon1", "mobileContainerName": "wagonName1", 0.0.54.0 "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 594/722 Notification when all materials are checked Example 1 { "notificationType": "CheckingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"trailerID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Example 2 { "notificationType": "CheckingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 595/722 Save one checked material 0.0.41.0 Allows to add a checked material – present in load plan to check – on a mobile container. The other checked material(s) are unchanged. HTTP Request PUT /transport-api/v1/mobile-containers/name={name}/loadplan/checked/context={context}&number={number} PUT /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/checked /context={context}&number={number} Request Parameters name (string) Or identifier (string) context (string) number (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 596/722 Request Body { … success (boolean), reason (string, optional), comment (string, optional) } Responses Response 200 (Ok) Response 201 (Created) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 400 (BadRequest) Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) Physical vehicle not found 289 Operation cannot be performed because load plan does not contain this material unit to check. Affected MU: {0} Example { … "success": false, "reason": "reason…", "comment": "comment…" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 597/722 Notification(s) { "notificationType": "Checked" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-08-20T05:55:50.7595674+00:00", "requestedBy": "owner" }, "id": { "lmiContext": "LIE", "lmiNumber": "ID000000" }, "success": false, "reason": "reason", "comment": "comment", "mobileContainerIdentifier": "wagon1", "mobileContainerName": "wagonName1", 0.0.54.0 "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "owner": "TMS" 0.0.54.0 } } Notification when all materials are checked Example 1 Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 598/722 { "notificationType": "CheckingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"road", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"trailerID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Example 2 { "notificationType": "CheckingFinished", "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 599/722 Cancel (undo) list of checked material(s) 0.0.49.0 Allows to cancel (undo) a list of material(s) checked on a mobile container. This method moves automatically all the material(s) to the list of material(s) to check in the load plan. The material(s) are never deleted from the load plan. Unloading a material wil also undo the checked status. HTTP Request DELETE /transport-api/v1/mobile-containers/name={name}/load-plan/checked DELETE /transport-api/v1/mobile-containers/identifier={identifier}/load-plan/checked Request Parameters name (string) or identifier (string) Request Body { … materialUnits: [ { lmiContext (string), lmiNumber (string) } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 600/722 Responses Response 200 (Ok) Response 204 (NoContent) 287 This mobile container does not have a load plan yet Response 400 (BadRequest) 290 Cannot remove empty list of material(s) checked Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) Physical vehicle not found Example { … "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "ID000000" } … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 601/722 Notification(s) One notification is sent by material { "notificationType": "Unchecked" "resourceType": "materialUnit", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-08-20T05:55:50.7595674+00:00", "requestedBy": "owner" }, "id": { "lmiContext": "LIE", "lmiNumber": "ID000000" }, "mobileContainerIdentifier": "wagon1", "mobileContainerName": "wagonName1", 0.0.54.0 "transportIdentifier": "ID000000", 0.0.54.0 "transportType": "Shipment | Intrasite", 0.0.58.0 "owner": "TMS" 0.0.54.0 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 602/722 Start / End loading of a mobile container 0.0.41.0 Allows to update the state of a mobile container to send a notification “LoadingStarted” or “LoadingEnded”. Please note these events are already automatically sent respectively when the first material is loaded, and the last material is loaded and checked (if material(s) to check are requested). NB: Transition to state ‘Ready’ is not allowed. HTTP Request POST /transport-api/v1/mobile-containers/name={name}/state-transitions POST /transport-api/v1/mobile-containers/identifier={identifier}/state-transitions Request Parameters name (string) or identifier (string) Request Body { … nextState: (string) = [‘executing’, ‘executed’] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 603/722 Responses Response 200 (Ok) Response 403 (Forbidden) Transition not supported to state ‘Ready’ Could not change ‘mobileContainer’ state from ‘Executed’ to ‘Ready’ 52 Operation is not allowed on Transport ‘…’ on site 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated 401 Operation not allowed. MobileContainer is cancelled. 0.0.49.0 Response 404 (NotFound) Physical vehicle not found Example { … "nextState": "executing" } Notification(s) Example 1 { "notificationType": "LoadingStarted", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"trailerID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 604/722 Example 2 { "notificationType": LoadingStarted", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Example 3 { "notificationType": "LoadingEnded", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"trailer", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 605/722 Example 4 { "notificationType": "LoadingEnded", 0.0.47.0 "resourceType": "mobileContainer", 0.0.47.0 "scope": "", "sender": "", "data": { "type":"wagon", 0.0.47.0 "transportIdentifier":"ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "siteIdentifier":"LIE", "owner":"TMS", "mobileContainerIdentifier":"ID000000", "mobileContainerName":"wagonID000000", "loadingDateTime": "637334757518227496", "originalRequestInfo":{ "requestedAt":"2020-08-19T12:31:08.7851972+02:00", "requestedBy":"owner" }, "context":{ "key":"value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 606/722 Get Bays for MobileContainer 0.0.58.0 Retrieve a list of bays from a mobile container can go to to load a set of materials from the ToLoad list in the Load plan. The same material can be present in multiple bays, and not all materials may be available on a bay. HTTP Request GET /transport-api/v1/mobile-containers/name={name}/bays GET /transport-api/v1/mobile-containers/identifier={identifier}/bays Request Parameters name (string) or identifier (string) Responses Response 200 (Ok) [{ identifier (string), label (string), state (string) = [‘Open’, ‘Closed’], materialUnits : [{ lmiContext (string), lmiNumber (string), materialGroup (string) }, … ]}, … ] Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) Example Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 607/722 [ { "identifier": "Bay-1.0SEL", "label": "Bay-1.0SEL", "state": "Open", "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "MU-1.1SEL", "materialGroup": "materialGroupA-1.0SEL", "weight": 0 }, { "lmiContext": "LIE", "lmiNumber": "MU-1.2SEL", "materialGroup": "materialGroupA-1.0SEL", "weight": 0 }] }, { "identifier": "Bay-2.0SEL", "label": "Bay-2.0SEL", "state": "Closed", "materialUnits": [ { "lmiContext": "LIE", "lmiNumber": "MU-1.2SEL", "materialGroup": "materialGroupA-1.0SEL", "weight": 0 } ] } ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 608/722 Delete Load Plan 0.0.40.0 Allows to delete a loading plan for a mobile container. HTTP Request DELETE /transport-api/v1/mobile-containers/name={name}/load-plan 0.0.40.0 DELETE /transport-api/v1/mobile-containers/identifier={identifier}/load-plan 0.0.40.0 Request Parameters name (string) or identifier (string) Request Body { … 0.0.45.0 } Responses Response 200 (Ok) Response 403 (Forbidden) 47 Truck ‘{0}’ not allocated 48 Wagon ‘{0}’ not allocated 56 Ship ‘{0}’ not allocated Response 404 (NotFound) Physical Vehicle not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 609/722 Notification(s) { "notificationType": "LoadPlanRemoved" "resourceType": "mobileContainer", "scope": "", "sender": "", "data": { "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2020-06-17T13:28:26.6632415+00:00", "requestedBy": "owner" }, "mobileContainerIdentifier": "ID000000", "mobileContainerName": "trailerID000000", "transportIdentifier": "ID000000", "transportType": "Shipment | Intrasite", 0.0.58.0 "loadPlan": { "toLoad": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toCheck": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …], "toUnload": [{"lmiContext": "LIE", "lmiNumber": "ID000000"}, …] 1.65.0 } } } Link mobile container to equipment 1.84 The goal of this method is to link a mobile container (trailer, wagon, ship) to an equipment. See 5.2 below for more explanation on equipments. HTTP Request PUT /transport-api/v1/transports/{identifier}/mobile-containers/name={mobileContainerName }/equipment/{equipmentIdentifer} PUT /transport-api/v1/transports/{identifier}/mobilecontainers/identifier={mobileContainerIdentifier}/equipment/{equipmentIdentifer} Request Parameters identifier (string) mobileContainerName (string) or mobileContainerIdentifier (string) equipmentIdentifier (string) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 610/722 Request Body { … } Responses Response 200 (Ok) Response 400 (BadRequest) 28 Validation Failed Response 403 (Forbidden) 61 Transport is Cancelled 502 Mobile container '{0}' not allocated to transport 503 Cannot link equipment because it is already linked to mobile container '{0}' 19 Operation is forbidden because transport is closed or completed 58 Transport '{0}' is not 'Confirmed' 36 Transport '{0}' is not 'FullyDefined' 501 Equipment '{0}' not found on transport 1.84 Response 404 (NotFound) 5 Transport not found 32 Transport ‘{0}’ not found on site ‘{1}’ Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 611/722 Notifications { "resourceType": "mobileContainer", "notificationType": "EquipmentLinked", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "type": "wagon", "transportIdentifier": "ID000001", "transportType": "Shipment", "siteIdentifier": "LIE", "owner": "Syltram", "mobileContainerName": "wagon1", "mobileContainerIdentifier": "wagon1Id", "equipmentIdentifier": "EQ0", "originalRequestInfo": { "requestedAt": "2022-11-10T11:20:45.2871549+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 612/722 Unlink mobile container from equipment 1.84 The goal of this method is to unlink a mobile container (trailer, wagon, ship) from an equipment. HTTP Request DELETE /transport-api/v1/transports/{identifier}/mobilecontainers/name={mobileContainerName}/equipment DELETE /transport-api/v1/transports/{identifier}/mobilecontainers/identifier={mobileContainerIdentifier}/equipment Request Parameters identifier (string) mobileContainerName (string) or mobileContainerIdentifier (string) Request Body { … } Responses Response 200 (Ok) Response 400 (BadRequest) 28 Validation Failed Response 403 (Forbidden) 61 Transport is Cancelled 502 Mobile container '{0}' not allocated to transport 58 Transport '{0}' is not 'Confirmed' 36 Transport '{0}' is not 'FullyDefined' Response 404 (NotFound) 5 Transport not found 32 Transport ‘{0}’ not found on site ‘{1}’ Example { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 613/722 Notifications { "resourceType": "mobileContainer", "notificationType": "EquipmentUnlinked", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "type": "wagon", "transportIdentifier": "ID000001", "transportType": "Shipment", "siteIdentifier": "LIE", "owner": "Syltram", "mobileContainerName": "wagon1", "mobileContainerIdentifier": "wagon1Id", "equipmentIdentifier": "EQ0", "originalRequestInfo": { "requestedAt": "2022-11-10T11:20:45.2871549+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 614/722 4.15. Vehicle Type(s) Create 0.0.44.0 Allows to create a vehicle type. HTTP Request POST /transport-api/v1/vehicletypes Request Body { … vehicleType: { identifier (string), name parentType (enum) = [‘locomotive’, ‘wagon’, ‘carrier’, ‘barge’, ‘vessel’, ‘tractor’, ‘trailer’, ‘semiTrailer’], 0.0.62.0 subType (string, optional), label (string, optional), 0.0.62.0 specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’], defaultGrossVehicleWeightRating (double, optional), defaultTare (double, optional), 0.0.49.0 cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] } } • ParentType [‘locomotive’, ‘wagon’, ‘carrier’, ‘barge’, ‘vessel’, ‘tractor’, ‘trailer’, ‘semiTrailer’] Level 1 of vehicle type (enumeration) • TransportMode [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’] • Identifier Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 615/722 • SubType Combinaison of ‘Identifier’ and ‘SubType’ should be unique ! • Label Responses Response 200 (Ok) Examples { … "vehicleType": { "parentType": "carrier", "subType": "string", "label": "string", "specificIdentifier": "string", "transportMode": "Truck", "defaultGrossVehicleWeightRating": 0, "defaultWeight": 0, "cradles": [ { "frontToBackIndex": 0, "leftToRightIndex": 0, "materialUnitCapacity": 0, "productDiameterMin": 0, "productDiameterMax": 0, "productWidthMin": 0, "productWidthMax": 0, "productWeightMin": 0, "productWeightMax": 0 } ], "identifier": "carrier" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 616/722 { "requestedBy":"ARTEMIS-MK", "requestedAt":"2021-10-29T07:58:58.778Z", "context":{ }, "vehicleType":{ "identifier":"S32", "parentType":"wagon", "subType":"S32", "label":"wagon", "label":"BOGIES BERCEAUX DECOUVERTS BOB AXE HORIZ", "transportMode":"wagon", "cradles":[ { "frontToBackIndex":1, "leftToRightIndex":2, "materialUnitCapacity":3, "productDiameterMin":1150, "productDiameterMax":2100, "productWidthMin":0, "productWidthMax":0, "productWeightMin":0, "productWeightMax":30 }, { "frontToBackIndex":2, "leftToRightIndex":2, "materialUnitCapacity":3, "productDiameterMin":1150, "productDiameterMax":2100, "productWidthMin":0, "productWidthMax":0, "productWeightMin":0, "productWeightMax":30 }, { "frontToBackIndex":3, "leftToRightIndex":2, "materialUnitCapacity":3, "productDiameterMin":1150, "productDiameterMax":2100, "productWidthMin":0, "productWidthMax":0, "productWeightMin":0, "productWeightMax":30 } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 617/722 ParentType carrier tractor semiTrailer trailer wagon wagon wagon wagon Identifier carrier tractor semiTrailer trailer wagonC43 wagonC43bis wagonC44 S32 SubType carrier tractor semiTrailer trailer wagonC43 wagonC43 wagonC44 locomotive barge vessel locomotive barge vessel locomotive barge vessel TransportMode Truck Truck Truck Truck Wagon Wagon Wagon Wagon Label BOGIES BERCEAUX DECOUVERTS BOB AXE HORIZ Wagon Barge Vessel Notification(s) { "notificationType": "Create" "resourceType": "vehicleType", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 618/722 Create or Update 0.0.44.0 Allows to create or update a vehicle type. HTTP Request PUT /transport-api/v1/vehicletypes/{identifier} Request Parameters identifier (string) Request Body { … vehicleType: { name parentType (string) = [‘locomotive’, ‘wagon’, ‘carrier’, ‘barge’, ‘vessel’, ‘tractor’, ‘trailer’, ‘semiTrailer’], 0.0.62.0 subType (string, optional), label (string, optional), 0.0.62.0 specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] } } Responses Response 200 (Ok) Response 201 (Created) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 619/722 Example { … "vehicleType": { "parentType": "carrier", "subType": "string", "label": "carrier", "specificIdentifier": "string", "transportMode": "Truck", "defaultGrossVehicleWeightRating": 0, "defaultWeight": 0, "cradles": [ { "frontToBackIndex": 0, "leftToRightIndex": 0, "materialUnitCapacity": 0, "productDiameterMin": 0, "productDiameterMax": 0, "productWidthMin": 0, "productWidthMax": 0, "productWeightMin": 0, "productWeightMax": 0 } ] } } Create another type of trailer : { … "vehicleType": { "parentType": "SemiTrailer", "subType": "Trailer", "label": "Trailer type Tautliner", "transportMode": "Truck" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 620/722 Notification(s) { "notificationType": "Update" "resourceType": "vehicleType", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 621/722 Partial Update 0.0.44.0 Allows to partially update a vehicle type. HTTP Request PATCH /transport-api/v1/vehicletypes/{identifier} identifier={context}&subtype={number} Request Parameters identifier (string) Request Body { … vehicleType: [ { value (Json), path (string), op (string) }, … ] } Responses Response 204 (NoContent) Response 404 (NotFound) Vehicle type not found Example { … "vehicleType": [ { "value": 5, "path": "defaultGrossVehicleWeightRating", "op": "replace", }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 622/722 Notification(s) { "notificationType": "PartialUpdate" "resourceType": "vehicleType", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 623/722 Get by identifier 0.0.44.0 Retrieve a vehicle type by identifier HTTP Request GET /transport-api/v1/vehicletypes/{identifier} Request Parameters identifier (string) Responses Response 200 (Ok) { name (string, optional), subType (string, optional), specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 624/722 Example { "identifier": "carrier", "name": "carrier", "subType": "carrier", "specificIdentifier": null, "transportMode": "Truck", "defaultGrossVehicleWeightRating": null, "defaultWeight": null, "cradles": [ { "frontToBackIndex": 1, "leftToRightIndex": 2, "materialUnitCapacity": 3, "productDiameterMin": null, "productDiameterMax": null, "productWidthMin": null, "productWidthMax": null, "productWeightMin": null, "productWeightMax": null } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 625/722 Get by custom filter 0.0.44.0 Retrieve a vehicle type by query. HTTP Request POST /transport-api/v1/vehicletypes/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 626/722 Example { "query": { "Operator": "equal", "Left": { "Name": "identifier", "Left": null, "nodeType": "property" }, "Right": { "Value": "carrier", "Type": null, "nodeType": "constant" }, "nodeType": "binary" }, "select": null, "paging": null, "orderBy": null } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 627/722 Responses Response 200 (Ok) { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { name parentType (string) = [‘locomotive’, ‘wagon’, ‘carrier’, ‘barge’, ‘vessel’, ‘tractor’, ‘trailer’, ‘semiTrailer’], 0.0.62.0 subType (string, optional), label (string, optional), 0.0.62.0 specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 628/722 Example { "totalPages": 1, "items": [ { "parentType": "carrier", "subType": "carrier", "label": "carrier", "specificIdentifier": null, "transportMode": "Truck", "defaultGrossVehicleWeightRating": null, "defaultWeight": null, "cradles": [], "identifier": "carrier" } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 629/722 Delete 0.0.44.0 Allows to delete a vehicle type. HTTP Request DELETE /transport-api/v1/vehicletypes/{identifier} Request Parameters identifier (string) Request Body { … reason (string) } Responses Response 204 (NoContent) Response 404 (NotFound) Vehicle type not found Example { … "reason" : "unused" } Notification(s) { "notificationType": "Delete" "resourceType": "vehicleType", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "id": "ID000000", "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 630/722 4.16. Physical Vehicle Group Get by identifier or name 0.0.44.0 Allows to get a physical vehicle group by id / name. HTTP Request GET /transport-api/v1/physicalvehiclegroups/identifier={identifier} GET /transport-api/v1/physicalvehiclegroups/name={name} Request Parameters name (string) or identifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 631/722 { identifier (string), name (string), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], badgeIdentifier (string), realSupplierAsRequested (string) = [‘Yes’, ‘No’, ‘Undefined’], realSupplierName (string, optional), realSupplierIdentifier (string, optional), driverOrCaptainName (string, optional), IMO (string, optional), 0.0.49.0 VIN (string, optional), 0.0.49.0 ENI (string, optional), 0.0.49.0 locatedOnSiteIdentifier (string, optional), grossVehicleWeightRating (double, optional), locatedOn { type (string) = ‘Bay’, label (string, optional), bayIdentifier (string), maxNumberOfEquipments (int), or type (string) = ‘FreeLocation’, label (string, optional), freeLocation (string), locationSubType (string) }, locationChangedBy (string), locationChangedAt (datetime), locationChangedType (string), weighings [ { date (datetime), weight (double), weighingMethod (string) = [‘Scale’, ‘ManualInput’, ‘Historical’], weighBridgeName (string), 0.0.54.0 siteIdentifier (string), 0.0.63.0 }, … ], activeWeighings [ { date (datetime), weight (double), weighingMethod (string) = [‘Scale’, ‘ManualInput’, ‘Historical’], weighBridgeName (string), 0.0.54.0 siteIdentifier (string), 0.0.63.0 }, … ], crossGateEvents { entryCrossGateEvent { date (datetime), Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 632/722 gateIdentifier (string) }, exitCrossGateEvent { date (datetime), gateIdentifier (string) }, }, locatedMetadata (Json), physicalVehicles [ { identifier (string), name (string), metadata (Json), vmsIdentificationDate (datetime, optional), vehicleTypeIdentifier (string), physicalVehicleGroupIdentifier (string), sequenceNumberInGroup (int, optional), refused (bool, optional), tagIdentifier (string), refusedOrigin (string) = [‘Core’, ‘User’], refusedReason (string), refusedComment (string), grossVehicleWeightRating (double, optional), vehicleType { name (string, optional), subType (string, optional), specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] }, parentVehicleGroup { … } }, … Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 633/722 ] } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 634/722 Example { "identifier": "SemiTrailer-Identifier13.0A", "name": "SemiTrailer-Name13.0A", "transportMode": "Truck", "metadata": {}, "definitionLevel": "Draft", "badgeIdentifier": null, "realSupplierAsRequested": "Undefined", "realSupplierName": null, "realSupplierIdentifier": null, "driverOrCaptainName": null, "locatedOnSiteIdentifier": null, "grossVehicleWeightRating": null, "locatedOn": { "type": "freeLocation", "label": "Hall-BCmd13.0", "freeLocation": "Hall-BCmd13.0", "locationSubType": "Parking" }, "locationChangedBy": "Requester13.0", "locationChangedAt": "2020-07-28T05:44:49.573+00:00", "locationChangeType": null, "weighings": [], "activeWeighings": [], "locationMetadata": {}, "physicalVehicles": [ { "identifier": "Trailer-Identifier13.0A", "name": "B-13HFX142", "metadata": {}, "vmsIdentificationDate": "2020-07-28T05:44:49.573+00:00", "vehicleTypeIdentifier": "semiTrailer", "physicalVehicleGroupIdentifier": "SemiTrailer-Identifier13.0A", "sequenceNumberInGroup": 2, "refused": false, "tagIdentifier": null, "refusedOrigin": null, "refusedReason": null, "refusedComment": null, "vehicleType": { "identifier": "semiTrailer", "name": "semiTrailer", "subType": "semiTrailer", "specificIdentifier": null, "transportMode": "Truck", "defaultGrossVehicleWeightRating": null, "defaultWeight": null, "cradles": [] }, … } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 635/722 Get by custom filter 0.0.44.0 Retrieve a physical vehicle group by query. HTTP Request POST /transport-api/v1/physicalvehiclegroups/searches POST /transport-api/v1/physicalvehiclegroups/searches/include-deleted={includeDeleted} 0.0.74.0 2nd endpoint (with includeDeleted) allows to retrieve all PhysicalVehicleGroup(s) including those logically deleted (with DeletionDate specified). Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 636/722 Example Get all physical vehicle group(s) with children physical vehicle(s) which have transport mode = ‘Truck’ { "query":{ "Operator":"equal", "Left":{ "Name":"transportMode", "Left":null, "nodeType":"property" }, "Right":{ "Value":"Truck", "Type":null, "nodeType":"constant" }, "nodeType":"binary" }, "select":null, "paging":null, "orderBy":null, "includes":[ { "name":"physicalvehicles", "nodeType":"property" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 637/722 Retrieve all PVG(s) localized on a Bay { "query": { "nodeType": "binary", "left": { "nodeType": "property", "left": { "nodeType": "unary", "operand": { "nodeType": "property", "name": "locatedOn" }, "operator": "typeAs", "type": "BayLocation" }, "name": "bayIdentifier" }, "right": { "nodeType": "constant", "value": "BayD1.0A" }, "operator": "equal" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 638/722 Retrieve all PVG(s) and PV(s) localized on a Bay { "query": { "nodeType": "binary", "left": { "nodeType": "property", "left": { "nodeType": "unary", "operand": { "nodeType": "property", "name": "locatedOn" }, "operator": "typeAs", "type": "BayLocation" }, "name": "bayIdentifier" }, "right": { "nodeType": "constant", "value": "${#TestCase#bayIdentifier}" }, "operator": "equal" }, "includes": [ { "nodeType": "property", "name": "physicalVehicles" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 639/722 Get all PVG(s) which have PV identifier equal to ‘ID000000’ { "query":{ "nodeType":"call", "methodType":"Enumerable", "methodName":"Any", "arguments":[ { "nodeType":"property", "name":"physicalVehicles" }, { "nodeType":"lambda", "body":{ "nodeType":"binary", "operator":"equal", "left":{ "nodeType":"property", "name":"identifier", "left":{ "nodeType":"parameter", "type":"PhysicalVehicleResult", "name":"t" } }, "right":{ "nodeType":"constant", "value":"ID000000" } }, "parameters":[ "t" ] } ] }, "includes":[ { "nodeType":"property", "name":"physicalVehicles" } ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 640/722 Include vehicleType in query { "includes":[ { "nodeType":"call", "methodName":"Select", "arguments":[ { "nodeType":"property", "name":"PhysicalVehicles" }, { "nodeType":"lambda", "body":{ "nodeType":"property", "name":"VehicleType", "left":{ "nodeType":"parameter", "name":"p" } }, "parameters":[ "p" ] } ] } ] } Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 641/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), name (string), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], badgeIdentifier (string), realSupplierAsRequested (string) = [‘Yes’, ‘No’, ‘Undefined’], realSupplierName (string, optional), realSupplierIdentifier (string, optional), driverOrCaptainName (string, optional), locatedOnSiteIdentifier (string, optional), grossVehicleWeightRating (double, optional), locatedOn { type (string) = ‘Bay’, label (string, optional), bayIdentifier (string), maxNumberOfEquipments (int), or type (string) = ‘FreeLocation’, label (string, optional), freeLocation (string), locationSubType (string) }, locationChangedBy (string), locationChangedAt (datetime), locationChangedType (string), weighings [ { date (datetime), weight (double), weighingMethod (string) = [‘Scale’, ‘ManualInput’, ‘Historical’] }, … ], activeWeighings [ { date (datetime), weight (double), weighingMethod (string) = [‘Scale’, ‘ManualInput’, ‘Historical’] }, … ], locatedMetadata (Json), crossGateEvents { Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 642/722 entryCrossGateEvent { date (datetime), gateIdentifier (string) }, exitCrossGateEvent { date (datetime), gateIdentifier (string) }, }, physicalVehicles [ { identifier (string), name (string), metadata (Json), vmsIdentificationDate (datetime, optional), vehicleTypeIdentifier (string), physicalVehicleGroupIdentifier (string), sequenceNumberInGroup (int, optional), refused (bool, optional), tagIdentifier (string), refusedOrigin (string) = [‘Core’, ‘User’], refusedReason (string), refusedComment (string), grossVehicleWeightRating (double, optional), vehicleType { name (string, optional), subType (string, optional), specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] }, parentVehicleGroup { … } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 643/722 }, … ] }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 644/722 Example { "totalPages": 1, "items": [ { "name": "ID000000", "transportMode": "Truck", "metadata": {}, "definitionLevel": "Draft", "badgeIdentifier": null, "realSupplierAsRequested": "Yes", "realSupplierName": null, "realSupplierIdentifier": null, "driverOrCaptainName": null, "locatedOnSiteIdentifier": null, "grossVehicleWeightRating": null, "identifier": "ID000000", "locatedOn": null, "locationChangedBy": null, "locationChangedAt": "0001-01-01T00:00:00+00:00", "locationChangeType": null, "weighings": [], "activeWeighings": [], "locationMetadata": {}, "physicalVehicles": [ { "name": "string", "metadata": {}, "vmsIdentificationDate": "2020-10-21T12:11:36.629+00:00", "vehicleTypeIdentifier": null, "physicalVehicleGroupIdentifier": "ID000000", "sequenceNumberInGroup": 0, "refused": true, "tagIdentifier": "string", "refusedOrigin": "Core", "refusedReason": "string", "refusedComment": "string", "grossVehicleWeightRating": 0, "identifier": "ID000000", "vehicleType": null, "weighings": [] } ] } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 645/722 Change location 0.0.44.0 Allow client to change the location of a physical vehicle group. HTTP Request PUT /transport-api/v1/physicalvehiclegroups/{identifier}/location Request Parameters identifier (string) Request Body { … type (string) = [‘Manual’, ‘Automatic’], metadata (json, optional), on { type (string) = [‘Bay’, ‘FreeLocation’], label (string, optional) } } Responses Response 200 (Ok) Response 403 (Forbidden) Maximum of number of associated equipmentGroups to Bay '{0} is already reached ({1}). Please unallocate one physical vehicle group from this bay before. Response 404 (NotFound) 10 Physical Vehicle Group not found 14 Bay not found Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 646/722 Example { … "type": "automatic", "metadata": {}, "on": { "type": "bay", "label": "label" } } Notification(s) { "notificationType": "LocationChanged" "resourceType": "physicalVehicleGroup", "scope": "", "sender": "Artemis.Transport.Vehicle", "data": { "id": "ID000000", "context": { "key": "value" }, "on": { "type": "bay", "label": "label", "bayIdentifier": "ID000001" }, "previousData": { "on": { "type": "bay", "label": "label", "bayIdentifier": "ID000000" } }, "type": "automatic", "metadata": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 647/722 4.17. Physical Vehicle Get by identifier or name 0.0.44.0 Allows to get a physical vehicle by id / name. HTTP Request GET /transport-api/v1/physicalvehicles/identifier={identifier} GET /transport-api/v1/physicalvehicles/name={name} Request Parameters name (string) or identifier (string) Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 648/722 { identifier (string), name (string), metadata (json), vmsIdentificationDate (datetime, optional), vehicleTypeIdentifier (string), physicalVehicleGroupIdentifier (string), sequenceNumberInGroup (int, optional), refused (bool, optional), tagIdentifier (string), refusedOrigin (string) = [‘Core’, ‘User’], refusedReason (string), refusedComment (string), grossVehicleWeightRating (double, optional), vehicleType { name (string, optional), subType (string, optional), specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] }, parentVehicleGroup { … }, characteristics (json) 0.0.44.0 } Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 649/722 Example { "identifier": "Trailer-Identifier13.0A", "name": "B-13HFX142", "metadata": {}, "vmsIdentificationDate": "2020-07-28T05:44:49.573+00:00", "vehicleTypeIdentifier": "semiTrailer", "physicalVehicleGroupIdentifier": "SemiTrailer-Identifier13.0A", "sequenceNumberInGroup": 2, "refused": false, "tagIdentifier": null, "refusedOrigin": null, "refusedReason": null, "refusedComment": null, "vehicleType": { "identifier": "semiTrailer", "name": "semiTrailer", "subType": "semiTrailer", "specificIdentifier": null, "transportMode": "Truck", "defaultGrossVehicleWeightRating": null, "defaultWeight": null, "cradles": [] }, “characteristics” : { “D31”: “value” } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 650/722 Get by custom filter 0.0.44.0 Retrieve a physical vehicle by query. HTTP Request POST /transport-api/v1/physicalvehicles/searches Request Body { "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Example { "query": { "Operator": "equal", "Left": { "Name": "identifier", "Left": null, "nodeType": "property" }, "Right": { "Value": "ID000000", "Type": null, "nodeType": "constant" }, "nodeType": "binary" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 651/722 Responses Response 200 (Ok) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 652/722 { totalPages (int), hasPreviousPage (bool), hasNextPage (bool), pageIndex (int), pageSize (int), totalCount (int), items [ { identifier (string), name (string), metadata (Json), vmsIdentificationDate (datetime, optional), vehicleTypeIdentifier (string), physicalVehicleGroupIdentifier (string), sequenceNumberInGroup (int, optional), refused (bool, optional), tagIdentifier (string), refusedOrigin (string) = [‘Core’, ‘User’], refusedReason (string), refusedComment (string), grossVehicleWeightRating (double, optional), vehicleType { name (string, optional), subType (string, optional), specificIdentifier (string, optional), transportMode (string) = [‘Truck’, ‘Wagon’, ‘Barge’, ‘Vessel’, ‘Airplane’], defaultGrossVehicleWeightRating (double, optional), defaultWeight (double, optional), cradles [ { frontToBackIndex (int), leftToRightIndex (int), materialUnitCapacity (int), productDiameterMin (double, optional), productDiameterMax (double, optional), productWidthMin (double, optional), productWidthMax (double, optional), productWeightMin (double, optional), productWeightMax (double, optional) }, … ] }, parentVehicleGroup { … } }, … ] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 653/722 Example { "totalPages": 1, "items": [ { "name": "string", "metadata": {}, "vmsIdentificationDate": "2020-10-21T12:11:36.629+00:00", "vehicleTypeIdentifier": null, "physicalVehicleGroupIdentifier": null, "sequenceNumberInGroup": 0, "refused": true, "tagIdentifier": "string", "refusedOrigin": "Core", "refusedReason": "string", "refusedComment": "string", "grossVehicleWeightRating": 0, "identifier": "ID000000", "vehicleType": null, "parentVehicleGroup": null, "weighings": [] } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 654/722 4.18. Notifications Check Weight 0.0.47.0 If a Transport is defined, a check weight is made depending on the state of mobile container and a specific notification is sent. { notificationType (string) = [‘WeightChecked’], resourceType (string) = [‘truck’, ‘wagon’], sender (string), scope (string), data { name (string) 0.0.55.0, identifier (string) 0.0.55.0, transportIdentifier (string), siteIdentifier (string), 0.0.53.0 transportOwner (string), 0.0.53.0 results [ { type (string) = [‘Gvwr’, ‘Mam’, ‘MuWeight’, ‘ArrivalCanceled’], state (string) = [‘Success’, ‘Failure’, ‘NotExecuted’] }, … ], originalRequestInfo { requestedAt (string), requestedBy (datetime) }, context (json) } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 655/722 Example “WeightChecked” successful { "notificationType": "WeightChecked" "resourceType": "truck", "scope": "", "sender": "", "data": { "transportIdentifier": "ID000000", "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "type": "Gvwr", "state": "Success" }, { "type": "Mam", "state": "Success" }, { "type": "MuWeight", "state": "Success" } ], "originalRequestInfo": { "requestedAt": "2020-12-15T17:44:48.3393663+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 656/722 Example “WeightChecked” partially failed { "notificationType": "WeightChecked" "resourceType": "truck", "scope": "", "sender": "", "data": { "transportIdentifier": "ID000000", "siteIdentifier": "LIE", 0.0.53.0 "name": "T0", 0.0.55.0 "identifier": "T0", 0.0.55.0 "results": [ { "type": "Gvwr", "state": "Success" }, { "type": "Mam", "state": "Success" }, { "type": "MuWeight", "state": "Failure", "message": "The current weight value '40' is above the expected one '25' considering the current loaded material units." } ], "originalRequestInfo": { "requestedAt": "2020-12-15T17:44:48.3393663+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 657/722 Example “WeightChecked” successful { "notificationType": "WeightChecked" "resourceType": "wagon", "scope": "", "sender": "", "data": { "transportIdentifier": "ID000000", "siteIdentifier": "LIE", 0.0.53.0 "name": "W0", 0.0.55.0 "identifier": "TestWagon0", 0.0.55.0 "results": [ { "type": "Gvwr", "state": "Success" }, { "type": "Mam", "state": "Success" }, { "type": "MuWeight", "state": "Success" } ], "originalRequestInfo": { "requestedAt": "2020-12-15T17:44:48.3393663+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 658/722 Example “WeightChecked” partially failed { "notificationType": "WeightChecked" "resourceType": "wagon", "scope": "", "sender": "", "data": { "transportIdentifier": "ID000000", "siteIdentifier": "LIE", 0.0.53.0 "name": "W0", 0.0.55.0 "identifier": "TestWagon0", 0.0.55.0 "results": [ { "type": "Gvwr", "state": "Success" }, { "type": "Mam", "state": "Success" }, { "type": "MuWeight", "state": "Failure", "message": "The current weight value '40' is above the expected one '25' considering the current loaded material units." } ], "originalRequestInfo": { "requestedAt": "2020-12-15T17:44:48.3393663+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 659/722 Anomalies See MuOnMulipleTransports See NotAccessibleMuDetected Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 660/722 4.19. Mobile Container & Transport states All transports that have the state closed or cancelled will be removed from the instruction context after X days. (X is configuration parameter) Context Transport value Loading Instruction loading instruction transport useCases property property value isChartered = null not allocated definitionLevel Draft state Created not allocated definitionLevel Draft state Ordered isChartered = true not allocated definitionLevel FullyDefined state Confirmed isChartered = true allocated definitionLevel FullyDefined state Arrived isChartered = true allocated+departure (empty) definitionLevel FullyDefined state Confirmed isChartered = true (empty) definitionLevel FullyDefined state Confirmed isChartered = true allocated+loading definitionLevel FullyDefined state Executing/Executed isChartered = true allocated+loading+departure definitionLevel FullyDefined state Closed/Completed isChartered = true cancel transport/LI definitionLevel FullyDefined state Cancelled isChartered = false allocated+unloading+departure Find here below some interesting links in order to see what happens on transport and vehicle(s) (mobileContainer) states after performing departure or cancellation on single or multi-site transport: • • • Single-LI for all transport modes: SingleSite - States on MC after departure.pdf Multi-LI for ROAD & MARITIME transports: MultiSite - ROAD - MARITIME Transport & MC state after departure.pdf Multi-LI for RAIL transport : MultiSite - RAIL Transport & MC state after departure.pdf Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 661/722 Examples LoadPlan 2 materials Leave MC Status Transport Status Weight check strategy Weight check departure 0 loaded 0 ITL Arrival Cancel ready arrived Projected Arrival cancelled 0 loaded 1 ITL (but it's not in LP) Departure ready executing Projected Actual 0 loaded 1 ITL Departure executing executing Actual Actual 0 loaded 2 ITL Departure executing executing Actual Actual 1 loaded (not in LP) 0 ITL Departure executing executing Actual Actual 1 loaded 0 ITL Departure executing executing Actual Actual 1 loaded 1 ITL Departure executing executing Actual Actual 2 loaded 0 ITL Departure executed executed Actual Actual 2 loaded 1 ITL (but it's not in LP) Departure executed executed Actual Actual Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 662/722 No LoadPlan (Implies known MC) Leave MC Status Transport Status Weight check strategy Weight check departure 0 loaded 0 ITL Arrival Cancel ready arrived Projected Arrival cancelled 0 loaded 1 ITL Departure ready executing Projected Actual 0 loaded 2 ITL Departure ready executing Projected Actual 1 loaded 0 ITL Departure executing executing Actual Actual 1 loaded 1 ITL Departure executing executing Actual Actual 2 loaded 0 ITL Departure executing executing Actual Actual Leave MC Status Transport Status No Allocated MC 0 loaded 0 ITL 0 loaded 1 ITL 0 loaded 2 ITL Can’t leave with no MC’s at all N/A confirmed Projected weight check strategy: GVWR, MAM vs. what we expect in the loadplan Actual weight check strategy: GVWR, MAM, First weighing (tare) + weight of materials vs. last weighing Arrival cancelled check strategy: First weighing vs. last weighing Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 663/722 4.20. Anomalies 0.0.48.0 Introduction TODO Common data Anomaly Detected { resourceType (string) = [‘anomaly’], notificationType (string) = [‘AnomalyDetected’], sender (string), scope (string), data { senderId (string), timeStamp (datetime), anomalyId (string), siteIdentifier (string), 0.0.56.0 type (string), reason (string, optional), comment (string, optional), metadata (json, optional), source { parent (json) , optional = source), id (string), businessEntityName (string) } originalRequestInfo { requestedAt (datetime), requestedBy (string) }, context (string) } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 664/722 Anomaly Fixed { resourceType (string) = [‘anomaly’], notificationType (string) = [‘AnomalyFixed’], sender (string), scope (string), data { anomalyId (string, optional), siteIdentifier (string), 0.0.56.0 types [(string)], source { parent (json) = [null or source], id (string), businessEntityName (string) } originalRequestInfo { requestedAt (datetime), requestedBy (string) }, context (string) } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 665/722 Get by id 0.0.49.0 Allows to get an anomaly by id. HTTP Request GET /anomaly-api/v1/anomalies/{id} Request Parameters id (string) Responses Response 404 (NotFound) Response 200 (Ok) { id (string), type (string), severity (string) [‘warning’, ‘error’] comment (string), reason (string), metadata (Json), requestedAt (datetime), source { id (string), compositeKey ([(string), …], optional) businessEntityName (string), siteIdentifier (string), 0.0.56.0 paths [ { parent { parent (hierarchy), id (string), compositeKey ([(string), …], optional) businessEntityName (string), }, id (string), compositeKey ([(string), …], optional) businessEntityName: (string), } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 666/722 Example { "id": "a1", "type": "gvwrExceeded", "severity": "error", "siteIdentifier": "LIE", 0.0.56.0 "comment": "comment", "reason": "reason", "metadata": {…}, "requestedAt": "2021-02-16T09:58:38.816322+01:00", "source": { "id": "1-MC", "businessEntityName": "MC", "paths": [ { "parent": { "parent": null, "id": "1", "businessEntityName": "SITE" }, "id": "1", "businessEntityName": "MC" } ] } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 667/722 Get by entity name and identifier 0.0.49.0 Allows to get a list of anomalies by the name of the entity type and its identifier. It is also possible to only get the anomalies of a specific type when passing the ‘type’ parameter. HTTP Request GET /anomaly-api/v1/anomalies/searches Responses Response 200 (Ok) { anomalies [{ id (string), siteIdentifier (string), 0.0.56.0 type (string), severity (string) [‘warning’, ‘error’] comment (string), reason (string), metadata (Json), requestedAt (datetime), source { id (string), compositeKey ([(string), …], optional) businessEntityName (string), paths [ { parent { parent (hierarchy), id (string), compositeKey ([(string), …], optional) businessEntityName (string), }, id (string), compositeKey ([(string), …], optional) businessEntityName: (string), } ]}, }, …] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 668/722 Example { "anomalies": [{ "id": "a1", "type": "gvwrExceeded", "severity": "error", "siteIdentifier": "LIE", 0.0.56.0 "comment": "comment", "reason": "reason", "metadata": {…}, "requestedAt": "2021-02-16T09:58:38.816322+01:00", "source": { "id": "1-MC", "businessEntityName": "MC", "paths": [ { "parent": { "parent": null, "id": "1", "businessEntityName": "SITE" }, "id": "1", "businessEntityName": "MC" } ] } }] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 669/722 Get by custom filter Allows to get a list of anomalies by a query. HTTP Request GET /anomaly-api/v1/anomalies/searches Request Body { "sourceId": "…" "entityName": "…" "query": { … }, "select": [ { … ], "paging": { "pageSize": 0, "pageNumber": 0 }, "orderBy": { … }, "includes": [ { … }] } Responses Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 670/722 Response 200 (Ok) [ id (string), compositeKey ([(string), …], optional) businessEntityName (string), anomalies [{ id (string), type (string), severity (string), [‘warning’, ‘error’] siteIdentifier (string), 0.0.56.0 comment (string), reason (string), metadata (Json), requestedAt (datetime), source { id (string), compositeKey ([(string), …], optional) businessEntityName (string), paths [ { parent { parent (hierarchy), id (string), compositeKey ([(string), …], optional) businessEntityName (string), }, id (string), compositeKey ([(string), …], optional) businessEntityName: (string), } ]}, }, …], … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 671/722 Example { "totalPages": 1, "items": [ { "id": "a4", "type": "NoLoadPlanPossible", "severity": "error", "siteIdentifier": "LIE", 0.0.56.0 "comment": "", "reason": "", "metadata": {…}, "requestedAt": "2021-07-12T10:17:26.3068364+02:00", "source": { "id": "1-M", "compositeKey": [], "businessEntityName": "M", "paths": [ { "parent": { "parent": null, "id": "1", "compositeKey": null, "businessEntityName": "TRS" }, "id": "1", "compositeKey": null, "businessEntityName": "M" } ] } } ], "hasPreviousPage": false, "hasNextPage": false, "pageIndex": 0, "pageSize": 20, "totalCount": 1 } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 672/722 Get multiple entities 0.0.56.0 Allows to get a list of entities and their anomalies by the name of the entity type and a list of identifiers. HTTP Request GET /anomaly-api/v1/entities/searches Request Body { ids [ (string), …], entityName (string), } Responses Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 673/722 Response 200 (Ok) [ id (string), compositeKey ([(string), …], optional) businessEntityName (string), anomalies [{ id (string), type (string), severity (string), [‘warning’, ‘error’] siteIdentifier (string), 0.0.56.0 comment (string), reason (string), metadata (Json), requestedAt (datetime), source { id (string), compositeKey ([(string), …], optional) businessEntityName (string), paths [ { parent { parent (hierarchy), id (string), compositeKey ([(string), …], optional) businessEntityName (string), }, id (string), compositeKey ([(string), …], optional) businessEntityName: (string), } ]}, }, …], … ] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 674/722 Example [{ “id": "1", "businessEntityName": "MC" "anomalies": [{ "id": "a1", "type": "gvwrExceeded", "severity": "error", "siteIdentifier": "LIE", 0.0.56.0 "comment": "comment", "reason": "reason", "metadata": {…}, "requestedAt": "2021-02-16T09:58:38.816322+01:00", "source": { "id": "1-MC", "businessEntityName": "MC", "paths": [ { "parent": { "parent": null, "id": "1", "businessEntityName": "SITE" }, "id": "1", "businessEntityName": "MC" } ] } }] }, …] Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 675/722 Custom Anomaly Create or update anomaly 0.0.49.0 Allows to create or update an anomaly. HTTP Request PUT /anomaly-api/v1/anomalies/{id} Request Parameters id (string) Request Body { source { parent (json) , optional = source), id (string), businessEntityName (string) }, type (string), siteIdentifier (string), 0.0.56.0 transportIdentifier (string), 0.0.59.0 reason (string, optional), comment (string, optional), senderId (string), timeStamp (datetime), metadata (json, optional), arguments [ { (string), (json) }, … ], severity (string) [‘warning’, ‘error’] } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 676/722 Responses Response 200 (Ok) Example { "anomalyId":"id", "source":{ "id":"DefaultIdentifier", "businessEntityName":"DefaultEntityName" }, "type":"type", "siteIdentifier": "LIE", 0.0.56.0 "transportIdentifier": "LIE", 0.0.59.0 "senderId":"DefaultIdentifier", "timeStamp":"637490664373752330", "severity":"warning" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 677/722 Delete anomaly 0.0.49.0 Allows to delete an anomaly. HTTP Request DELETE /anomaly-api/v1/anomalies/{id} Request Parameters id (string) Responses Response 200 (Ok) Response 404 (NotFound) Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 678/722 VehicleRefused A vehicle allocated to a transport was refused (wrong weight, security/safety problem, wrong type/…) { "resourceType": null, "notificationType": "AnomalyDetected", "sender": null, "scope": null, "data": { "senderId": "ID000000", "timeStamp": "637456248798801606", "anomalyId": null, "source": { "parent": null, "id": "ID000000", "businessEntityName": "Truck" / “Wagon” }, "type": "vehicleRefused", "siteIdentifier": "LIE", 0.0.56.0 "reason": "reason", "comment": "comment", "metadata": null, "arguments": null, "context": { "key": "value" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:01:10.982162+00:00", "requestedBy": "owner" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 679/722 OutOfStock There are not enough materials in stock to create a loadplan satisfying minimal loading tonnage for the Transport/vehicle of the transport TODO Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 680/722 NoLoadPlanPossible It is not possible to create a loadplan satisfying the loading requirments for a transport/vehicle of the transport TODO Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 681/722 UnexpectedMuLoaded MU loaded on the transport/vehicle and it is not in the loadplan of that transport { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "4c93930c-ce0b-4724-b9e2-02b2c45908e9", "type": "unexpectedMuLoaded", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "33-33", "timeStamp": "637456248798801606", "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "33-33", "compositeKey": [ "33", "33" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 682/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "types": [ "unexpectedMuLoaded" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "33-33", "businessEntityName": "MaterialUnit", }, "originalRequestInfo": { "requestedAt": "2021-01-07T16:14:49.5556593+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 683/722 MuWithProblemLoaded MU with known problem loaded on the transport (Quality problem, not ready to ship, …. ) "blocked MU". { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "b5c7a7bf-5608-4d26-85ca-3896630824c3", "type": "muWithProblemLoaded", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "33-33", "timeStamp": "637456248798801606", "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "33-33", "compositeKey": [ "33", "33" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 684/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "b5c7a7bf-5608-4d26-85ca-3896630824c3", "types": [ "muWithProblemLoaded" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "33-33", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 685/722 ImpossibleToLoad Not possible to load requested (mustload or in loadplan) MU on transport { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "data": { "anomalyId": "ITL-ID000001-LIE-11-11", 0.0.56.0 "source": { "id": "ID000001", "businessEntityName": "Transport" }, "type": "impossibleToLoad", "siteIdentifier": "LIE", 0.0.56.0 "reason": "reason", "metadata": { "__arguments": { "lmiContext": "11", "lmiNumber": "11" } }, "senderId": "ID000001", "timeStamp": "637503544846260492", "originalRequestInfo": { "requestedAt": "2021-03-03T08:47:57.4044905+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 686/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "ef993d4a-230e-4625-8347-d0d02a8f6606", "type": [ "impossibleToLoad" ], "siteIdentifier": "LIE", 0.0.56.0 "reason": "reason", "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:48:34.2002645+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 687/722 MuLoadedOnWrongPosition MU was loaded on the MC, and the precise position was requested, but it's not loaded on the right position on the MC Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 688/722 { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "eab66f68-3a7f-4e05-b61c-d995365808d3", "type": "muLoadedOnWrongPosition", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "11-11", "timeStamp": "637456248798801606", "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "11-11", "compositeKey": [ "11", "11" ], "businessEntityName": "MaterialUnit" }, “metadata”: { “__arguments” : { “expectedPosition” : { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, “actualPosition” : { "cradleFrontToRearIndex": 3, "cradleLeftToRightIndex": 5, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" } } }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:50:31.137737+01:00", "requestedBy": "owner" }, "context": { "key": "value" } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 689/722 } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 690/722 { "resourceType": "anomaly", "notificationType": "AnomalyFixed", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "eab66f68-3a7f-4e05-b61c-d995365808d3", "type": [ "muLoadedOnWrongPosition" ], "siteIdentifier": "LIE", 0.0.56.0 "senderId": "11-11", "timeStamp": "637456248798801606", "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, “metadata”: { “__arguments” : { “expectedPosition” : { "cradleFrontToRearIndex": 1, "cradleLeftToRightIndex": 1, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" }, “actualPosition” : { "cradleFrontToRearIndex": 3, "cradleLeftToRightIndex": 5, "level": 1, "orientation": "axisVertical", "spireOrientation": "topToFront" } } }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:50:31.137737+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 691/722 MuUnloadedFromClosedTransport 0.0.61.0 { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": "LIE", "data": { "source": { "id": "ID000000", "businessEntityName": "Transport" }, "siteIdentifier": "LIE", "type": "muUnloadedFromClosedTransport", "metadata": { "__arguments": { "materialUnitIdentifier": "11-11" } }, "senderId": "ID000000", "timeStamp": "637716988255045380", "originalRequestInfo": { "requestedAt": "2021-11-05T09:45:32.9668862+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 692/722 MuNotLoaded End of loading was declared for a vehicle or transport, but the MU of the loadplan was not loaded { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "type": "muNotLoaded", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "11-11", "timeStamp": "637456248798801606", "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "11-11", "compositeKey": [ "11", "11" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:52:13.2952129+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 693/722 { "resourceType": "anomaly", "notificationType": "AnomalyFixed", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "type": [ "muNotLoaded" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "parent": { "parent": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "id": "ID000000", "businessEntityName": "Trailer" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:52:13.2952129+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 694/722 MuNotFinalChecked End of loading was declared for a vehicle or transport, but the MU on the loadplan was not checked { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "type": "muNotFinalChecked", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "11-11", "timeStamp": "637456248798801606", "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "compositeKey": [ "11", "11" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:53:15.3956384+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 695/722 { "resourceType": "anomaly", "notificationType": "AnomalyFixed", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "types": [ "muNotFinalChecked" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:53:15.3956384+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 696/722 MuFinalCheckError Final check was failed for a MU { "ResourceType": "anomaly", "NotificationType": "AnomalyDetected", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "fad42018-793e-4cff-a1c8-82be361240fe", "type": "muFinalCheckError", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "11-11", "timeStamp": "637456248798801606", "reason": "reason", "comment": "comment", "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "compositeKey": [ "11", "11" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:54:50.7605793+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 697/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "fad42018-793e-4cff-a1c8-82be361240fe", "type": [ "muFinalCheckError" ], "siteIdentifier": "LIE", 0.0.56.0 "reason": "reason", "comment": "comment", "source": { "parent": { "parent": { "id": "ID000001", "businessEntityName": "Transport" }, "id": "wagon1", "businessEntityName": "Wagon" }, "id": "11-11", "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:54:50.7605793+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 698/722 MuOnMultipleTransports { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "4c93930c-ce0b-4724-b9e2-02b2c45908e9", "type": "muOnMultipleTransports", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "source": { "id": "ID000000", "businessEntityName": "Transport" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, “metadata”: { “__arguments” : { “materialUnitIdentifier” : “11-11” }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 699/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "4c93930c-ce0b-4724-b9e2-02b2c45908e9", "types": [ "muOnMultipleTransports" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "id": "ID000000", "businessEntityName": "Transport" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, “metadata”: { “__arguments” : { “materialUnitIdentifier” : “11-11” }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 700/722 NotAccessibleMuDetected 0.0.59.0 When saving a loading instruction or loadplan, or when opening/closing a bay or location, it is possible that Artemis core detects that some of the MU's that are linked to a transport are not accessible. { "resourceType": "anomaly", "notificationType": "AnomalyDetected" "sender": "Artemis.Material", "scope": null, "data": { "anomalyId": "3942b956-6319-4c0f-8645-09cc3830fdbc", "type": "NotAccessibleMuDetected", "siteIdentifier": "LIE" "senderId": "ID000000", "timeStamp": "637456248798801606", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "compositeKey": [ "LIE", "ID000001" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:45:54.6223329+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } MamExceeded Weight loaded on a vehicle exceeds the MAM/derogation for the transport OR total weight computer by loaddetermiantion for a vehicle exceed the MAM/derogation for the transport OR weight weighed exceeds the MAM/derogation for the transport. MAM is per Transport = whole train or truck. A derogation mass is only possible for trucks. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 701/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyDetected", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "type": "mamExceeded", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 702/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "types": [ "mamExceeded" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 703/722 GvwrExceeded "Weight loaded on a vehicle exceeds its GVWR OR total weight computed by loaddetermination for a vehicle exceed the GVWR of a vehicle OR weight weighed exceeds the GVWR for the vehicle (GVWR is per vehicle - truck or wagon)" { "ResourceType": "anomaly", "NotificationType": "AnomalyDetected", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "type": "gvwrExceeded", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 704/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "types": [ "gvwrExceeded" ], "siteIdentifier": "LIE", 0.0.56.0 "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 705/722 WeightIncoherence There is a difference in the weight at arrival vs weight at departure (taking into account loaded/unloaded materials) { "ResourceType": "anomaly", "NotificationType": "AnomalyDetected", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "6186a640-0b0d-4308-9f7b-75921a7cace3", "type": "weightIncoherence", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "reason": "The current weight value '25' is below the expected one '55' considering the current loaded and to load material units.", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 706/722 { "ResourceType": "anomaly", "NotificationType": "AnomalyFixed", "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "6186a640-0b0d-4308-9f7b-75921a7cace3", "types": [ "weightIncoherence" ], "siteIdentifier": "LIE", 0.0.56.0 "reason": "The current weight value '25' is below the expected one '55' considering the current loaded and to load material units.", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:39:43.5443114+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 707/722 SafetyCheckFailed A safety check was done for a vehicle/driver, and it failed One anomaly is sent by safety checked. { "ResourceType": "anomaly", "NotificationType": "AnomalyDetected" "Sender": "Artemis.Transport.Execution", "Scope": null, "Data": { "anomalyId": "ccd2bfd0-7fb9-4507-af0a-95b993dca4a7", "type": "safetyCheckFailed", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "reason": "LoadLashing", "source": { "id": "ID000000", "businessEntityName": "Transport" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:43:46.6197242+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 708/722 FailureToShowUp Vehicle (Truck) does not respect it's timeslot or shows up too early or too late { "resourceType": "anomaly", "notificationType": "AnomalyDetected" "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "3942b956-6319-4c0f-8645-09cc3830fdbc", "type": "failureToShowUp", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "metadata": { "__arguments": { 0.0.62.0 "expectedTimeSlotEarliest": "2021-11-04T11:26:42.1145252+01:00", "expectedTimeSlotLatest": "2021-11-04T12:26:42.1145252+01:00", "arrivalDateTime": "2021-11-04T13:26:42.1155252+01:00", "timeSlotResult": "Late arrival" } }, "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "id": "ID000000", "businessEntityName": "Truck" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:45:54.6223329+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 709/722 DepartureWhileNotAllowed A departure occurred while the departure was not requested or allowed. { "resourceType": "anomaly", "notificationType": "AnomalyDetected" "sender": "Artemis.Transport.Execution", "scope": null, "data": { "anomalyId": "ccd2bfd0-7fb9-4507-af0a-95b993dca4a7", "type": "departureWhileNotAllowed", "siteIdentifier": "LIE", 0.0.56.0 "senderId": "ID000000", "timeStamp": "637456248798801606", "reason": "CIM Missing", "source": { "id": "ID000000", "businessEntityName": "Transport" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:43:46.6197242+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 710/722 LoadingRefused 0.0.55.0 In some mills (like Fos) the loading can be refused for several reasons by ArcelorMittal. ArcelorMittal is then responsible for the not-loading of the truck and will have to pay for (part of) the transport. { "resourceType": "anomaly", "notificationType": "AnomalyDetected", "sender": "Artemis.Transport.Execution", "data": { "anomalyId": "ITL-ID000000-LIE-11-11", 0.0.56.0 "source": { "id": "ID000000", "businessEntityName": "Transport", "isCompositeKeyEmpty": true }, "type": "loadingRefused", "siteIdentifier": "LIE", 0.0.56.0 "reason": "MaterialUnitNotFound", "comment": "comment" }, "senderId": "ID000000", "timeStamp": "637503544846260492", "originalRequestInfo": { "requestedAt": "2021-03-03T08:47:57.4044905+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 711/722 MuNotReadyForShipment 0.0.62.0 When saving a loading instruction or loadplan, or allocating a MobileContainer, it is possible that Artemis core detects that some of the MU's that are linked to a transport are not ready for shipment. { "resourceType": "anomaly", "notificationType": "AnomalyDetected" "sender": "Artemis.Material", "scope": null, "data": { "anomalyId": "3942b956-6319-4c0f-8645-09cc3830fdbc", "type": "MuNotReadyForShipment", "siteIdentifier": "LIE" "senderId": "ID000000", "timeStamp": "637456248798801606", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "compositeKey": [ "LIE", "ID000001" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:45:54.6223329+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 712/722 MuBlockedForShipment 0.0.62.0 When saving a loading instruction or loadplan, or allocating a MobileContainer, it is possible that Artemis core detects that some of the MU's that are linked to a transport are blocked for shipment. { "resourceType": "anomaly", "notificationType": "AnomalyDetected" "sender": "Artemis.Material", "scope": null, "data": { "anomalyId": "3942b956-6319-4c0f-8645-09cc3830fdbc", "type": "MuBlockedForShipment", "siteIdentifier": "LIE" "senderId": "ID000000", "timeStamp": "637456248798801606", "source": { "parent": { "id": "ID000000", "businessEntityName": "Transport" }, "compositeKey": [ "LIE", "ID000001" ], "businessEntityName": "MaterialUnit" }, "originalRequestInfo": { "requestedAt": "2021-01-07T14:45:54.6223329+01:00", "requestedBy": "owner" }, "context": { "key": "value" } } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 713/722 5. Definitions 5.1. FreeLocation definition It is possible to localize a truck or a convoy of wagons in a free location in a site. A free location is for example a parking or a check in station, … but it is NEVER a bay. A free location is defined by the following properties: FreeLocationType: this is an enum used to localize a truck or a wagons convoy in a free location in a site. Following values are defined: o Type used by truck VMS: CheckIn: FreeLocationName should define the local name of the check in place. WeighingBridge: FreeLocationName should define the name of the weighing bridge Parking: FreeLocationName should define the local name of the parking. CheckOut: FreeLocationName should define the local name of the checkout place. o Type used by wagon VMS: Railway: FreeLocationName should define the local name of the railway To be completed o Type used by Artemis core: o InInternalTransit: this type is used by Artemis core when a truck or a wagons convoy leaves a bay. FreeLocationName will be completed by Artemis with the names of yard and bay left. o InExternalTransit: this type is used by Artemis core when a truck leaves a site and that another loading/unloading has to be done in another site. FreeLocationName will be completed by Artemis with the site left. o ToExternalDestination: this type is used by Artemis core when a truck leaves a site and all is finished for the transport. FreeLocationName will be completed by Artemis with the site left. FreeLocationName: it defined in more details the name of the FreeLocationType. For example, for a parking type, it is the local name of the parking. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 714/722 5.2. Equipment In some cases when planning a train T&L (transport & logistics) wants to impose a specific distribution of the coils over the wagons. This distribution must be followed by the loading teams on the floor. However at the time of planning the actual wagon numbers are not known, it is only at loading that these are known. So a dummy placeholder for the wagon is used in the LI For reporting and validation of the loading process the link between these dummies and the actual wagons is needed. The equipments must be specified when creating the loading instruction. Each materialgroup can be linked to multiple equipments. Once a wagon is allocated to a transport, it can be linked to an equipment that exists in this transport. During this link there is a validation that checks if the wagon, equipment and possibly equipmentgroup are all linked to the same materialgroup. In the example hereunder we cannot link Wagon 3 to EQ3 because it was linked at allocation to EG2. EQ3 does not belong to EG2 Global Transport Load Instruction At allocation to transport Wagon 1 Wagon 2 Materialgroup 1 List of Materials EquipmentGroup : EG1 List of Equipments : EQ1 ; EQ2 Is part of EG1 Link to EQ1 (that must be part of EG1) Link to EQ2 (that must be part of EG1) Materialgroup 2 List of Materials EquipmentGroup : EG1 List of Equipments : EQ3 Materialgroup 3 List of Materials EquipmentGroup : EG2 Link to EQ3 does not work is not part of EG2 At allocation to transport Wagon 3 Is part of EG2 List of Equipments : EQ4 The above explanation focuses on Rail transport because this is the usual business case. Equipments can however be used for other transportmodes also. In that case however the link with EquipmentGroup is not made since we do not use this concept for Ship or Road. There is also no link truck to equipment API , for this the generic link mobile container to equipment must be used. 5.3. Select Object Artemis.Core allows to receive a part of an object within a query. It allows to decrease the amount of data and to apply aggregator if coupled with a query object. Select object is a list of SelectItem objects. SelectItem Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 715/722 name nodeType string string Mandatory Mandatory property A readable example would be "select": [ { "name": "lmiContext", "nodeType": "property" }, { "name": "lmiNumber", "nodeType": "property" }, { "name": "owner", "nodeType": "property" } ] For selecting a JSON metadata property, name must be : ‘metadata.propertyname’ 5.4. Query Object Artemis.Core allows querying entities with a standardize way. One query contains a tree of query items. QueryItem nodeType string left ExpressionNode right ExpressionNode ParameterExpressionNode nodeType string type string name string Version 1.84.0 Artemis.Core Business API Documentation Unknown, Parameter, Property, Binary, Constant, Lambda, Unary, Call ParameterExpressionNode, PropertyExpressionNode, BinaryExpressionNode, UnaryExpressionNode, ConstantExpressionNode, LambdaExpressionNode, AnyExpressionNode Same as left parameter Name of class Name of parameter Marechal Frédéric 716/722 PropertyExpressionNode nodeType string name string left ExpressionNode BinaryExpressionNode nodeType string left ExpressionNode operator string right property Name of property binary unknown, and, andAlso, equal, greaterThan, greaterThanOrEqual, lessThan, lessThanOrEqual, not, notEqual, or, orElse ExpressionNode UnaryExpressionNode nodeType string operator UnaryOperator operand ExpressionNode type string isNullable Bool ConstantExpressionNode nodeType string value Object LambdaExpressionNode noteType string body ExpressionNode parameters string[] AnyExpressionNode noteType string left ExpressionNode parameterName condition ExpressionNode unary unknown, convert, not, typeAs constant lambda any 0.0.41.0 InExpressionNode noteType string left ExpressionNode parameterName condition ExpressionNode Version 1.84.0 Artemis.Core Business API Documentation in Marechal Frédéric 717/722 Examples: A, B and C are standard QueryItem A and B { "nodeType": "binary", "operator": "and", "left": A, "right": B, A or B } { "nodeType": "binary", "operator": "or", "left": A, "right": B, (A and B) or C } { "nodeType": "binary", "operator": "or", "left": { "operator": "and", "left": A, "right":B, "nodeType": "binary" }, "right": C, (A or B) AND C } { "nodeType": "binary", "operator": "and", "left": { "nodeType": "binary" "operator": "or", "left": A, "right":B, }, "right": C, } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 718/722 A readable example would be "query" : { "nodeType": "binary", "operator": "or", "left": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "lmiNumber" }, "right": { "nodeType": "constant", "value": " K123456789" }, }, "right": { "nodeType": "binary", "operator": "and", "left": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "lmiContext" }, "right": { "nodeType": "constant", "value": "LIE" }, }, "right": { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "property", "name": "type" }, "right": { "nodeType": "constant", "value": "Coil" }, }, }, } In this example, LambdaExpression is not specified (around the BinaryExpression) but it is implicit thus not required. Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 719/722 This will give entities having a lmiNumber equal to “K123456789”, or lmiContext equal to “LIE” and type equal to “Coil”. A readable example on Metadata (JSON) field would be "query" : { "nodeType": "binary", "operator": "equal", "left": { "nodeType": "call", "methodName": "JsonValue", "arguments": [ { "value": "MUBId", "nodeType": "constant" } ], "left": { "nodeType": "property", "name": "metadata" } }, "right": { "nodeType": "constant", "value": "1198878000" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 720/722 From the version 0.0.41.0, we can also use ‘In’ expression. A readable example of ‘In’ expression would be: { "query":{ "methodName":"In", "arguments":[ { "value":[ { "lmiContext":"LIE", "lmiNumber":"ID000000" }, { "lmiContext":"GT", "lmiNumber":"ID999999" }, { "lmiNumber":"ID123456" }, { "lmiNumber":"XXXXXXXX" } ], "nodeType":"constant" } ], "nodeType":"call" } } Version 1.84.0 Artemis.Core Business API Documentation Marechal Frédéric 721/722 5.5. Paging Object Some GET API methods allow to work with a paging system. Paging_V1 pageSize Integer pageNumber Integer Optional 0.0.25.0 Optional 0.0.25.0 Default value: 20 0 for first page Defaut value: 1 0.0.25.0 5.6. OrderBy Object Some GET API methods allow to sort result. The orderBy object is a list of orderByItem object OrderByItem_V1 field order string string (ascending/descending) Version 1.84.0 Artemis.Core Business API Documentation It empty : ascending Marechal Frédéric 722/722