Skip to content

Instantly share code, notes, and snippets.

@andysign
Last active March 31, 2023 07:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andysign/6d38c10bdfca83a2500ac495ad3c79f7 to your computer and use it in GitHub Desktop.
Save andysign/6d38c10bdfca83a2500ac495ad3c79f7 to your computer and use it in GitHub Desktop.
README-diy4u-virtual-fablab.md

Table of Contents generated with DocToc

DIY4U Virtual Fablab

This is designed to explain how to deal with the Virtual Fablab Middleware..

The architecture diagram of this system is presented below. Section 3). represents this group of API endpoints described in this document here. If you want to learn more about the others, see below.

┌─────────────────┐          ┌────────────────────────────────────┐          ┌─────────────────────────────┐
│                 │          │                                    │          │                             │
│ IRIS            │ ───────► │ PrivateMiddleware                  │ ───────► │ RDIUP                       │
│                 │          │                                    │          │                             │
│ DigitalPlatform │ ◄─────── │ WIZ + DC                           │ ◄─────── │ Python                      │
│                 │          │                                    │          │                             │
└─────────────────┘          │ ┌────────────────────────────────┐ │ OR       └─────────────────────────────┘
                             │ │                                │ │ Fallback
 1).                         │ │ Software Middleware w fallback │ │          ┌─────────────────────────────┐
                             │ │                                │ │ ───────► │                             │
                             │ │ PORT: 3000                     │ │          │ MongoDb                     │
                             │ │                                │ │ ◄─────── │                             │
                             │ └────────────────────────────────┘ │          └─────────────────────────────┘
                             │                                    │
────────────────────────     │ ────────────────────────────────── │ ────────────────────────────────────────
                             │                                    │
 2).                         │                                    │
                             │                                    │
┌─────────────────┐          │ ┌────────────────────────────────┐ │          ┌─────────────────────────────┐
│                 │          │ │                                │ │          │                             │
│ IRIS            │ ───────► │ │ Hardware Middleware Prime OLD  │ │          │ Static Backend              │
│                 │          │ │                                │ │ ◄─────── │                             │
│ DigitalPlatform │ ◄─────── │ │ PORT: 3001                     │ │          │ Read-Only Data (expressJs)  │
│                 │          │ │                                │ │          │                             │
└─────────────────┘          │ └────────────────────────────────┘ │          └─────────────────────────────┘
                             │                                    │
 3).                         │                                    │
                             │                                    │
┌─────────────────┐          │ ┌────────────────────────────────┐ │
│                 │          │ │                                │ │          ┌─────────────────────────────┐
│ CODY            │ ───────► │ │ Hardware Middleware (Virtual)  │ │ ───────► │                             │
│                 │          │ │                                │ │          │ MongoDb                     │
│ HardwareBackEnd │ ◄─────── │ │ PORT: 3003                     │ │ ◄─────── │                             │
│                 │          │ │                                │ │          └─────────────────────────────┘
└─────────────────┘          │ └────────────────────────────────┘ │
                             │                                    │
                             └────────────────────────────────────┘

To read the full documentation for all the other sections see below:

For Section 1)., use the link: https://gist.github.com/andysign/d5f546c38eb559510ed1b0c4f8b7992e

For Section 2)., use the link: https://gist.github.com/andysign/a8ad8df9f0f0492f0cd6af38f05c4c82


Mongo Db Testing Database

docker run -it --rm -d -h mon --name mon -p 2717:27017 mongo:4.4.17
docker exec -it mon sh
mongo
show dbs
use virtual-db
db.createUser( { user : "virtual" , pwd : "123" , roles : [ "readWrite" ] } );

To create an admin user: db.createUser( { user : "admin" , pwd : "123" , roles : [ "userAdminAnyDatabase" ] } ) after typing use admin.

db.getUsers()
mongodb://admin:123@localhost:2717

Edit .env and add:

MONGODB_URL=mongodb://admin:123@localhost:2717/virtual-db

Iris Connection

Ideally, for our MVP demo we need a complete functional flow like the one described below:

IRIS GUI > IRIS Simplified Order ( w/ formulation and raw material info ) > Middleware Conversion to Order > CODY

In the Middleware we could simply create a CronTab ( https://linuxhandbook.com/crontab/ ) to check for new orders every second or every 100 milliseconds.

In order to do that we need to have an authentication bearer token from Iris. For start we can grab one from the browser ( Chrome / Firefox ).


Iris Connection: Get All Orders

  • Method: GET
  • Endpoint: curl -X GET -H 'Authorization: Bearer $B' https://$IRIS_H/api/queries/orders?status=0
  • Note: Query all pending orders
  • Note2: The expiration time for the Bearer B token is more than 8 h.
  • Note3: We will query the orders with status 1!
	Status: 200
curl -X GET 'https://diy4u-develop.iris-eng.com/api/queries/orders?status=0' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImIzYWZlM2FmLTNjNjEtNDZiZi1hY2NkLWMwYjU4YzFmMGRhNiIsImVtYWlsIjoiYWRtaW5AaXJpcy5jYXQiLCJpYXQiOjE2ODAyNDc1NDEsImV4cCI6MTY4MDMzMzk0MX0.ujzxlHeqoRPvBJ4xb9Av_p-2E_liCONRhSfndSHjLdE'

  • Expected Result:
{
   "result":[
      {
         "id":"ea2beb03-d63f-40d6-b4c7-f18a7feb3992",
         "createdAt":"21/02/2023 12:42:34+00:00",
         "updatedAt":"21/02/2023 12:42:44+00:00",
         "creatorId":"75e6556f-d7e8-4549-9a57-9d63e24d6717",
         "fablabId":"627a39bc-e0e6-44c6-b918-8acd446e4b0e",
         "orderNumber":"00000002",
         "address":"London, UK",
         "state":1,
         "creator":{
            "id":"75e6556f-d7e8-4549-9a57-9d63e24d6717",
            "firstName":"Eduard",
            "lastName":"Stevenson",
            "email":"endcustomer@iris.cat",
            "avatar":null,
            "rol":"End customer",
            "phone":null,
            "enabled":true,
            "isAdmin":false,
            "policiesAccepted":true,
            "isFablabManager":false,
            "isFormulator":false,
            "isEndCustomer":true,
            "jobTitle":null,
            "zipCode":null,
            "widgets":null,
            "city":null,
            "address":null
         },
         "fablab":{
            "id":"627a39bc-e0e6-44c6-b918-8acd446e4b0e",
            "createdAt":"20/02/2023 15:27:45+00:00",
            "updatedAt":"20/02/2023 15:27:45+00:00",
            "address":"Barcelona, Spain",
            "longitude":null,
            "latitude":null,
            "name":"Fablab with stock",
            "externalFablabId":"6001ba15560c106958eaeb79",
            "image":null,
            "managerId":"e76c360d-50a8-46e6-b186-6d20db85075e",
            "isDeleted":false,
            "serialNo":"12345678",
            "manager":{
               "id":"e76c360d-50a8-46e6-b186-6d20db85075e",
               "firstName":"Fablabmanager_FirstName",
               "lastName":"Fablabmanager_LastName",
               "email":"fablabmanager@iris.cat",
               "avatar":null,
               "rol":"Fablab manager",
               "phone":null,
               "enabled":true,
               "isAdmin":false,
               "policiesAccepted":true,
               "isFablabManager":true,
               "isFormulator":false,
               "isEndCustomer":false,
               "jobTitle":null,
               "zipCode":null,
               "widgets":null,
               "city":null,
               "address":null
            }
         }
      },
   ]
}


Iris Connection: Get All Formulas

  • Method: GET
  • Endpoint: curl -X GET -H 'Authorization: Bearer $B' https://$IRIS_H/api/queries/formulas
  • Note: Query all formulas
  • Note2: We need to make sure we have at least one submodule with the same raw material inside its tank ( have at least raw_material to submodule reference ).
	Status: 200
curl -X GET 'https://diy4u-develop.iris-eng.com/api/queries/formulas' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImIzYWZlM2FmLTNjNjEtNDZiZi1hY2NkLWMwYjU4YzFmMGRhNiIsImVtYWlsIjoiYWRtaW5AaXJpcy5jYXQiLCJpYXQiOjE2ODAwMjY4NjEsImV4cCI6MTY4MDExMzI2MX0.cNtUaa2BV4F0rWPvR8kK6MSR-naFNsU5X1WkTtsnvWw'

  • Expected Result:
{
   "result":[
      {
         "id":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0",
         "createdAt":"20/02/2023 15:22:37+00:00",
         "updatedAt":"20/02/2023 15:22:37+00:00",
         "external_id":"6225ee4825de7568dbe0a893",
         "name":"Good liquid formula",
         "formula_type":"detergent",
         "formula_state":"liquid",
         "is_basic":false,
         "constituents":[
            {  "id":"55c94453-51d7-4755-aa83-64411b534031", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"2938408d-8f86-4373-8363-3164161da5cd",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.35
            },
            {  "id":"c4744c9c-21d5-4c34-a2f7-a3837c276432", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"fd026165-137e-4bc4-863d-a4639398f837",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.15
            },
            {  "id":"cae833da-7bc0-460b-a3ce-65c77b2d29ea", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"9888b6e3-0f66-49e2-a907-a55dfa761ee7",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.01
            },
            {  "id":"01db8bcc-082b-41c8-8a56-841958a6c8be", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"6f4c7973-c0ad-4b74-9dea-d1bbf9be9b5f",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.1
            },
            {  "id":"574a3a5e-3eeb-4e45-b246-c92c070d0f39", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"92624573-ed8b-413b-bf59-7feb19220a8e",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.01
            },
            {  "id":"f317c6a2-a2fe-4c82-bcf3-39b683bfadaa", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"989ccdcc-e2e3-4810-a6ad-4890129eedc6",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.01
            },
            {  "id":"bab571e7-ec0f-473c-ac87-d9b8c1266e90", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"223e99d1-a5d4-41b1-9244-1b779d97a942",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.01
            },
            {  "id":"909a137f-7619-427f-9162-6a57b11dbca5", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"243c6cd1-d72b-424c-9a1e-f32cb69b6a48",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.01
            },
            {  "id":"4f036f47-c4e8-47df-b087-bdf02a21b845", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"3b020605-8cda-4261-b036-8f8b3916348e",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.02
            },
            {  "id":"720c6c76-7475-420e-8cd1-b56a55d9aa2f", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"7424a006-4852-4b69-9072-155fe8bdff93",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.02
            },
            {  "id":"ac383cca-abf7-49a4-8b82-103831c14442", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"7f259a37-37d3-4070-be97-f8315e293cb4",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.26
            },
            {  "id":"34e8b511-b846-4a06-858e-aba5ef36bb0d", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"ddc54310-916e-4e7c-8175-3dbea3c01762",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.025
            },
            {  "id":"a62b4fe6-593e-4c7e-a693-cfadf04c1968", "createdAt":"20/02/2023 15:22:37+00:00",
               "updatedAt":"20/02/2023 15:22:37+00:00", "rawMaterialId":"39412e54-fcdd-4fea-b99a-d65bcf68c33e",
               "formulaId":"74b10813-7ca3-49bd-9d73-9c8f993ddcd0", "weight":0.025
            }
         ]
      }
   ],
   "status":"OK"
}


API Endpoints

All the current endpoints are described below.

Note: In this document we are using ocassionally or all the times the notation "$H" when referring to the HOST which is http://207.244.228.246:3003.

Note2: In this document we are using the notation "$J" in reference to the famous Application / Json header, namely Content-Type: application/json therefore replace accordingly.

Example of env variables:

export H="http://207.244.228.246:3003"
export J="Content-Type: application/json"

1. API Endpoints: Root

  • Method: GET
  • Endpoint: / OR /api/v2/
  {"result":"Demo FV API."}
curl $H; echo


2. API Endpoints: Admin Related, GET All Db Collection Names

  • Method: GET
  • Endpoint: curl -X GET $H/api/v2/admin/collection-names
  • Note: Get all collection names from the db
  {"results":["orders-details","fablabs-metadata-items","fablabs-details","orders-metadata-items"]}
curl -X GET $H/api/v2/admin/collection-names ; echo


3. API Endpoints: Admin Related, GET All Db Collections

  • Method: GET
  • Endpoint: curl -X GET $H/api/v2/admin/collections
  • Note: Get everything from every single collection from the db
  { "results": [
      { "fablabs-details": [ { "_id": "deadbeeeefdeadbeeeeeeef1", "detailsForFablabId": "deadbeeeefac81bc04b648f5", "submodules": [] } ] },
      { "fablabs-metadata-items": [ { "_id": "deadbeeeefac81bc04b648f5", "fablabName": "1stFablab" } ] }
    ] }
curl -X GET $H/api/v2/admin/collections ; echo


4. API Endpoints: Admin Related, DELETE Or Clean Up One Db Collection

  • Method: DELETE
  • Endpoint: curl -X DELETE $H/api/v2/admin/clean-collection/:colName
  • Note: Delete / clean-up / empty one single collection by provided name
	Status: 204
curl -X DELETE $H/api/v2/admin/clean-collection/fablabs-metadata-items ; echo


5. API Endpoints: Admin Related, DELETE Or Clean Up Every Single Db Collection

  • Method: DELETE
  • Endpoint: curl -X DELETE $H/api/v2/admin/clean-all-collections
  • Note: Delete / clean-up / empty all collections
	Status: 204
curl -X DELETE $H/api/v2/admin/clean-all-collections ; echo


6. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata

  • Method: GET | Method: POST w/ PostData: {} OR {"fablabName":"MyName"}
  • Endpoint: curl -X GET $H/api/v2/hw-manager/fablabs-metadata-items
  • Endpoint: curl -X GET $H/api/v2/hw-manager/fablabs-metadata-items/deadbeeeefac81bc04b648f5
  • Endpoint: curl -X POST -H "$J" -d '{}' $H/api/v2/hw-manager/fablabs-metadata-items
  • Endpoint: curl -X POST -H "$J" -d '{"fablabName":"123"}' $H/api/v2/hw-manager/fablabs-metadata-items
  • Endpoint: curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5","fablabName":"XYZ"}' $H/api/v2/hw-manager/fablabs-metadata-items
  • This endpoint like all the others contains a fablabs-metadata-items-full and fablabs-metadata-items-full/:id alias.
  { "_id": { "$oid": "627d1305bb1adb72f734a40b" }, "fablabName": "FirstAndOnlyFablab" }

6.A. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Cleanup

function db_clean () { curl -X DELETE $H/api/v2/admin/clean-collection/fablabs-metadata-items; }; db_clean;

Note: This is to make sure we are starting from a clean slate.


6.B. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Create Item W Custom Id And Name

db_clean; ID="deadbeeeefac81bc04b648f5"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"XYZ"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; # CREATE_ITEM_W_CUSTOM_ID
{
    "fablabName": "XYZ",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
}

Note: This will create a custom fablab with a certain custom Id otherwise the id will be random.


6.C. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Update Item Based On Id

db_clean; ID="deadbeeeefac81bc04b648f5"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"XYZ"}' $H/api/v2/hw-manager/fablabs-metadata-items; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"123"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; # UPDATE_ITEM_BASED_ON_ID
{
    "fablabName": "123",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
}

Note: This will update the fablab that has the id given in the argument if it exists.


6.D. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Create Item W Default Data

db_clean; curl -X POST -H "$J" -d '{}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; # CREATE_ITEM_W_DEFAULT_DATA
{
    "fablabName": "1stFablab",
    "_id": "634f03d1ed7a0857fb94bfeb",
    "__v": 0
}

Note: This creates an item with a random Id and uses the default fablabName data when creating.


6.E. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Throw Fablab Name Required Error

db_clean; curl -X POST -H "$J" -d '{"fablabName":null}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; # THROW_FABLAB_NAME_REQUIRED_ERROR
{
    "400_ERROR_CODE": "validation failed: fablabName: Path fablabName is required"
}

Note: This should throw a fablabName path fablabName is required error.


6.F. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Throw Error Multiple With Same Name Forbidden

db_clean; ID="deadbeeeefac81bc04b648f5"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"123"}' $H/api/v2/hw-manager/fablabs-metadata-items; ID="deadbeeeefdeadbeeeeeeef1"; echo; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"123"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; # THROW_ERROR_MULTIPLE_WITH_SAME_NAME_FORBIDDEN
{
	"400_ERROR_CODE": "ErrorMultipleWithSameNameForbidden"
}

Note: This should return an error because the creation of a second FabLab is restricted.


6.G. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Create Two Items W Different Names

db_clean; ID="deadbeeeefac81bc04b648f5"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"1stFablab"}' $H/api/v2/hw-manager/fablabs-metadata-items; ID="deadbeeeefac81bc04b648f6"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; # CREATE_TWO_ITEMS_W_DIFFERENT_NAMES
{
"1":{
    "fablabName": "123",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "fablabName": "456",
    "_id": "deadbeeeefac81bc04b648f6",
    "__v": 0
}
}

Note: This should create two items with different names.


6.H. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Delete A Metadata Item

db_clean; ID="deadbeeeefac81bc04b648f5"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"1stFablab"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X DELETE $H/api/v2/hw-manager/fablabs-metadata-items/$ID;
# DELETE_A_METADATA_ITEM

Note: This should delete one item base on an existing id.


6.I. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Metadata: Retrieve A Metadata Item

db_clean; ID="deadbeeeefac81bc04b648f5"; curl -X POST -H "$J" -d '{"_id":"'$ID'","fablabName":"123"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl $H/api/v2/hw-manager/fablabs-metadata-items; echo; # RETRIEVE_A_METADATA_ITEM
{
    "result": {
        "fablabName": "123",
        "_id": "deadbeeeefac81bc04b648f5",
        "__v": 0
    }
}

Note: This will retrieve a previously created metadata item.


6.J. API Endpoints: Hw Manager Related, Single Fablab Metadata: Retrieve The Status Of The Fablab

  • Method: GET
  • Endpoint: curl -X GET $H/api/v2/hw-manager-simplified/fablabs-status
  • Note: In the Response section, status can be: ON or OFF
  • Note2: Ideally we should include a heartbeat crontab in the Fablab every minute to update the status section plus the lastUpdated.
  • Note3: The assumption is, if the date of the updatedAt field is too much behind the current time, it means the fablab is switched off.
  • Note4: At the moment we have 3 fablabs: 1. Powder - Norway ( 642556867c1525ece3c3b194 ); 2. Liquid - United Kingdom ( 642554997c1525ece3c3b193 ); 3. Mix - virtual with stock ( 6001ba15560c106958eaeb79 )
curl $H/api/v2/hw-manager-simplified/fablabs-status;
curl $H/api/v2/hw-manager-simplified/fablabs-status/:id;

ResponseAll:

{
    "result": [{
        "id": "123",
        "status": "STRING",
        "lastUpdate": 1654277400165
    }]
}

Response:

{
    "result": {
        "_id": "123",
        "status": "STRING",
        "lastUpdate": 1654277400165
    }
}

Note: This will retrieve a previously created metadata item.



7. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object

  • Method: GET | Method: POST w/ PostData: {} OR {"detailsForFablabId":"627d1305bb1adb72f734a40b","submodules":[]}
  • Endpoint: curl -X GET $H/api/v2/hw-manager/fablabs-details
  • Endpoint: curl -X GET $H/api/v2/hw-manager/fablabs-details/6299f26620411340134ee3da
  • Endpoint: curl -X POST -H "$J" -d '{}' $H/api/v2/hw-manager/fablabs-details
  • Endpoint: curl -X POST -H "$J" -d '{"submodules":["ABC","XYZ"]}' $H/api/v2/hw-manager/fablabs-details
  • Endpoint: curl -X POST -H "$J" -d '{"detailsForFablabId":"627d1305bb1adb72f734a40b","submodules":null}' $H/api/v2/hw-manager/fablabs-details
  • Note: The endpoint will auto populate the id and detailsForFablabId field automatically if those fields are not provided.
  • This endpoint like all the others contains a fablabs-details-full and fablabs-details-full/:id alias endpoint.
  {
    "_id": { "$oid": "628399723c3701b492ec1411" },
    "detailsForFablabId": { "$oid": "627d1305bb1adb72f734a40b" },
    "submodules": [ "Array of on ele: one single submodule e.g.: printer" ]
  }

Example of full details item:

{
    "result": {
        "submodules": [
            {
                "submodule_id": "34566cd",
                "specifications": {
                    "submodule_type": "M310.2",
                    "description": "DispensingUnit",
                    "available_operations": [
                        {   "name": "dispense",
                            "description": "DispenseIngredient",
                            "operation_parameters": [
                                {   "name": "volume", "type": "float", "default": null,
                                    "unit_primary": "g", "units_secondary": [], "min": 0,
                                    "max": null, "description": "volume2dispense"
                                }
                            ]
                        }
                    ],
                    "submodule_parameters": [
                        {   "name": "container_volume", "type": "float", "default": "1.3",
                            "unit_primary": "l", "units_secondary": [], "min": 0,
                            "max": null, "description": "maxVolOfContainer"
                        },
                        {   "name": "stroke_volume", "type": "float", "default": "0.012",
                            "unit_primary": "l", "units_secondary": [], "min": 0,
                            "max": null, "description": "volumeDispensedPerTurn"
                        }
                    ]
                }
            }
        ],
        "_id": "deadbeeeefdeadbeeeeeeef1",
        "__v": 0,
        "detailsForFablabId": {
            "fablabName": "123",
            "_id": "deadbeeeefac81bc04b648f5",
            "__v": 0
        }
    }
}

7.A. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Cleanup

function db_clean_d () { curl -X DELETE $H/api/v2/admin/clean-collection/fablabs-details; }; db_clean_d;

Note: This is to make sure we are starting from a clean slate.


7.B. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Create W Known Ref Id, Custom Id And Submodules

db_clean_d; db_clean; RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; ID="deadbeeeefdeadbeeeeeeef1" curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$ID'","detailsForFablabId":"'$RID'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; # CREATE_W_KNOWN_REF_ID_CUSTOM_ID_AND_SUBMODULES
{
"1": {
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2": {
    "submodules": [
        101,
        102
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
}
}

Note: This will create a custom details item with the given data assuming which will be linked to the given metadata item.


7.C. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Update Submodules W Known Ref Id And Id

RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; ID="deadbeeeefdeadbeeeeeeef1" curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$ID'","detailsForFablabId":"'$RID'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$ID'","detailsForFablabId":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo # UPDATE_SUBMODULES_W_KNOWN_REF_ID_AND_ID
{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
}

Note: This will update the submodules element with a non-null array.


7.D. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Create W Auto Ref Id And Default Data

db_clean_d; db_clean; RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{}' $H/api/v2/hw-manager/fablabs-details; echo; # CREATE_W_AUTO_REF_ID_AND_DEFAULT_DATA
{
"1": {
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2": {
    "submodules": [],
    "_id": "63565f18b36fe914c68c0f68",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
}
}

Note: This will create a details item with default submodules data, link it to the only existing and assign it a random id.


7.E. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Throw ErrorInvalidRefId

db_clean_d; db_clean; ID="deadbeeeefac81bc04b648f5"; ID2="deadbeeeefac81bc04b648f6"; RID="deadbeeeefac0000000000ff"; curl -X POST -H "$J" -d '{"_id":"'$ID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$ID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"detailsForFablabId":"'$RID'"}' $H/api/v2/hw-manager/fablabs-details; echo; # THROW_ERROR_INVALID_REF_ID
{
	"400_ERROR_CODE": "validation failed detailsForFablabId ErrorInvalidRefId"
}

Note: This will should throw an error ( ErrorInvalidRefId ) because if the Meta Ref Id is invalid.


7.F. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Throw ErrorNoMetadataItems

db_clean ; curl -X POST -H "$J" -d '{}' $H/api/v2/hw-manager/fablabs-details; echo; #THROW_ERROR_NO_META_DATA_ITEMS
{
	"400_ERROR_CODE": "ErrorNoMetadataItems"
}

Note: This should throw an error because the metadata collection is empty meaning the details item can't be created.


7.G. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Throw Submodules Required Error

db_clean_d; db_clean; RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"submodules":null}' $H/api/v2/hw-manager/fablabs-details; echo; # THROW_SUBMODULES_REQUIRED_ERROR
{
	"400_ERROR_CODE": "validation failed submodules Path submodules is required"
}

Note: This should throw an error called path submodules is required, to point out that the submodules element cannot be null.


7.H. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Create Two W Different Submodules

db_clean_d; db_clean; RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; ID1="deadbeeeefdeadbeeeeeeef1"; ID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$ID1'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$ID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; # CREATE_TWO_W_DIFFERENT_SUBMODULES
{
	"400_ERROR_CODE": "ErrorCreatingMultiple"
}

Note: This will throw an error ( ErrorCreatingMultiple ) because the creation of multiple details items is restricted.


7.I. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Delete A Details Item

db_clean_d; db_clean; RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; ID1="deadbeeeefdeadbeeeeeeef1"; ID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$ID1'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X DELETE $H/api/v2/hw-manager/fablabs-details/$ID1; # DELETE_A_DETAILS_ITEM

Note: This should delete one item base on an existing id.


7.J. API Endpoints: Hw Manager Related, Retrieve And Seed A Single Fablab Detail Object: Retrieve A Details Item

db_clean_d; db_clean; RID="deadbeeeefac81bc04b648f5"; RID2="deadbeeeefac81bc04b648f6"; ID="deadbeeeefdeadbeeeeeeef1"; ID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"'$RID'"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$ID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$ID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl $H/api/v2/hw-manager/fablabs-details; echo # RETRIEVE_A_DETAILS_ITEM
{
"result": {
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
}
}

Note: This will retrieve a previously created details item.



8. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item

  • Method: GET
  • Method: Post w/ PostData: {} OR
  • Method: Post w/ PostData: {"forFablabDetailId":"deadbeeeefdeadbeeeeeeef1","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"PENDING"} OR
  • Method: Post w/ PostData: {"forFablabDetailId":"deadbeeeefdeadbeeeeeeef1","orderStatus":"PENDING"} OR
  • Method: Post w/ PostData: {"_id":"beef0abba1234567deadbeef","orderStatus":"DONE"}
  • Endpoint: curl $H/api/v2/production-manager/orders-metadata-items
  • Endpoint: curl $H/api/v2/production-manager/orders-metadata-items/:id
  • DataFormat: Integer date format
  • Ord Status: PENDING, RECEIVED, IN_PROGRESS, DONE, ERROR, WARNING (only one IN_PROGRESS per Fablab)
  • Details: Only one order with the status IN_PROGRESS should exist
  • Note: The system allows for the updatedAt field to be adjusted accordingly.
  • Note: Perhaps in the future we could add another field called errorMessage (null or String).
  • Note: Perhaps in the future we could add another field called warningMessage (null or String).
  • This endpoint like all the others contains a orders-metadata-items-full and orders-metadata-items-full alias endpoint.
{
  "_id": { "$oid": "628395703c3701b492ec1402" },
  "forFablabDetailId": { "$oid": "627d1305bb1adb72f734a101" },
  "createdAt": { "$date": { "$numberLong": "1647338400000" } },
  "updatedAt": { "$date": { "$numberLong": "1647338400000" } },
  "orderStatus": "PENDING",
  "warningMessage": null,
  "errorMessage": null
}

8.A. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Cleanup

function db_clean_om () { curl -X DELETE $H/api/v2/admin/clean-collection/orders-metadata-items; }; db_clean_om

Note: This is to make sure we are starting from a clean state.


8.B. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Create W Known Id, Ref Id, Created Date, Updated Date And Status

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","forFablabDetailId":"'$RID'","createdAt":1654277400165,"updatedAt":1654277400165,"orderStatus":"PENDING"}' $H/api/v2/production-manager/orders-metadata-items ; echo # CREATE_W_KNOWN_ID_REF_ID_CREATED_DATE_UPDATED_DATE_AND_STATUS
{
"1": {
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2": {
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3": {
    "orderStatus": "PENDING",
    "_id": "beef0abba1234567deadbeef",
    "__v": 0,
    "createdAt": "2022-06-03T17:30:00.165Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-06-03T17:30:00.165Z"
}
}

Note: This will create an order metadata in a way where all data is provided. Everything is provided here: ref fablab detail id, createdAt, updatedAt, ID itself and status.


8.C. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Update W Known Id, Ref Id, Created Date, Updated Date And Status

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","forFablabDetailId":"'$RID'","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items ; echo # UPDATE_W_KNOWN_ID_REF_ID_CREATED_DATE_UPDATED_DATE_AND_STATUS
{
"1":{
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3":{
    "orderStatus": "DONE",
    "_id": "beef0abba1234567deadbeef",
    "__v": 0,
    "createdAt": "2022-06-03T17:30:51.164Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-06-03T17:30:51.164Z"
}
}

Note: This will update a certain order metadata item based on the provided ID and change all elements accordingly.


8.D. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Create W Known Id, Default Data And Include Auto Ref Id

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef"}' $H/api/v2/production-manager/orders-metadata-items ; echo # CREATE_W_KNOWN_ID_DEFAULT_DATA_AND_INCLUDE_AUTO_REF_ID
{
"1":{
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3":{
    "orderStatus": "PENDING",
    "_id": "beef0abba1234567deadbeef",
    "__v": 0,
    "createdAt": "2022-10-24T17:01:04.994Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-10-24T17:01:04.994Z"
}
}

Note: This will create an order details item with default data and custom id with the ref id populated automatically by the id only existing fablab.


8.E. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Create W Default Data And Include Auto Ref Id

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{}' $H/api/v2/production-manager/orders-metadata-items ; echo # CREATE_W_DEFAULT_DATA_AND_INCLUDE_AUTO_REF_ID
{
"1":{
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3":{
    "orderStatus": "PENDING",
    "_id": "6356d97db36fe914c68c14b4",
    "__v": 0,
    "createdAt": "2022-10-24T18:29:17.002Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-10-24T18:29:17.002Z"
}
}

Note: This will create an order metadata in a way where all data is provided and the ref id is automatically detected and added.


8.F. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Throw Error Invalid Enum For Order Status

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"orderStatus":"FOO"}' $H/api/v2/production-manager/orders-metadata-items ; echo # THROW_ERROR_INVALID_ENUM_FOR_ORDER_STATUS
{
	"400_ERROR_CODE": "orderStatus FOO is not a valid enum value for path orderStatus."
}

Note: This will throw an error because only the strings PENDING, IN_PROGRESS, ERROR and DONE are valid for orderStatus.


8.G. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Throw Error No Fablab Details

db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef"}' $H/api/v2/production-manager/orders-metadata-items ; echo # ERR_CREATE_W_KN_ID_WHILE_NON_EXISTING_DETAIL
{
	"400_ERROR_CODE": "ErrorNoFablabDetails"
}

Note: This will throw an error because in order to add an order metadata item, a fablab must exist, in this case for the ref id auto selection process.


8.H. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Throw Error Invalid Ref Id

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","forFablabDetailId":"deadbeeeefdeadbeeeeeeef9"}' $H/api/v2/production-manager/orders-metadata-items ; echo # THROW_ERROR_INVALID_REF_ID
{
	"400_ERROR_CODE": "validation failed forFablabDetailId ErrorInvalidRefId"
}

Note: This should throw an error as only valid ref ids are allowed when it comes to the forFablabDetailsId field.


8.I. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Create Two Items W Different Status

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items ; echo ; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items ; echo # CREATE_TWO_ITEMS_W_DIFFERENT_STATUS
{
"1":{
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3":{
    "orderStatus": "IN_PROGRESS",
    "_id": "beef0abba1234567deadbeef",
    "__v": 0,
    "createdAt": "2022-10-24T19:47:22.865Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-10-24T19:47:22.865Z"
},
"4":{
    "orderStatus": "DONE",
    "_id": "beef0abba1234567deadbee0",
    "__v": 0,
    "createdAt": "2022-10-24T19:47:22.909Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-10-24T19:47:22.909Z"
}
}

Note: This will create two order metadata items with different status ( IN_PROGRESS and DONE ).


8.J. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Throw Error Creating Multiple In Progress

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items ; echo ; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items ; echo ; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee7","orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items ; echo # THROW_ERROR_CREATING_MULTIPLE_IN_PROGRESS
{
	"400_ERROR_CODE": "ErrorCreatingMultipleInProgress"
}

Note: This should throw an error because having multiple orders with IN_PROGRESS status is not allowed.


8.K. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Delete A Metadata Item

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; ID="beef0abba1234567deadbeef"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items ; echo ; curl -X DELETE $H/api/v2/production-manager/orders-metadata-items/$ID # DELETE_A_METADATA_ITEM

Note: This should delete one item base on an existing id.


8.L. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Metadata Item: Retrieve A Metadata Item

db_clean_om; db_clean_d; db_clean; RID="deadbeeeefdeadbeeeeeeef1"; RID2="deadbeeeefdeadbeeeeeeef0"; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"'$RID'","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"'$RID2'","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items ; echo ; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items ; echo ; curl $H/api/v2/production-manager/orders-metadata-items/beef0abba1234567deadbeef ; echo # RETRIEVE_A_METADATA_ITEM
{
    "result": [
        {
            "orderStatus": "IN_PROGRESS",
            "_id": "beef0abba1234567deadbeef",
            "__v": 0,
            "createdAt": "2022-06-03T17:30:51.164Z",
            "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
            "updatedAt": "2022-06-03T17:30:51.164Z"
        }
    ]
}

Note: This will retrieve a previously created order metadata item.



9. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object

  • Method: GET

  • Method: Post w/ PostData: {} OR

  • Endpoint: curl $H/api/v2/production-manager/orders-details

  • Endpoint: curl $H/api/v2/production-manager/orders-details/:id

  • Array: Any size array but ideally the seq of every array item should be consecutive starting from zero

  • Note: Ideally we should have some basic validation

  • This endpoint like all the others contains a orders-details-full and orders-details-full/:id alias endpoint.

{
  "_id": {  "$oid": "628395703c3701b492ec1402" },
  "detailsForOrderId": { "$oid": "628395703c3701b492ec1000" },
  "operations": [ "To be defined... operation 1g p 0 , operation 10 g 1 etc" ]
}

9.A. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Cleanup

function db_clean_od () { curl -X DELETE $H/api/v2/admin/clean-collection/orders-details; }; db_clean_od

Note: This is to make sure we are starting from a clean slate.


9.B. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Create W Known Id, Ref Id And Operations

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbeef","operations":[]}' $H/api/v2/production-manager/orders-details ; echo # CREATE_W_KNOWN_ID_REF_ID_AND_OPERATIONS
{
"1":{
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3":{
    "orderStatus": "IN_PROGRESS",
    "_id": "beef0abba1234567deadbeef",
    "__v": 0,
    "createdAt": "2022-06-03T17:30:51.164Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-06-03T17:30:51.164Z"
},
"4":{
    "orderStatus": "DONE",
    "_id": "beef0abba1234567deadbee0",
    "__v": 0,
    "createdAt": "2022-06-03T17:30:51.164Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-06-03T17:30:51.164Z"
},
"5":{
    "operations": [],
    "_id": "abbaec0000000abbabefabba",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbeef"
}
}

Note: This will create an order details item with one basic operation. The Id if not provided will be random. Also, detailsForOrderId if not provided will be auto populated with the first ref id found.


9.C. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Update W Known Id, Ref Id And Operations

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbeef","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbeef","operations":[{"index":0}]}' $H/api/v2/production-manager/orders-details; echo # UPDATE_W_KNOWN_ID_REF_ID_AND_OPERATIONS
{
    "operations": [
        {
            "index": 0
        }
    ],
    "_id": "abbaec0000000abbabefabba",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbeef"
}

Note: This will update a certain order details item based on the id provided and update the operations to an array of one element.


9.D. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Create W Known Id W Default Data And Include Auto Ref Id

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba"}' $H/api/v2/production-manager/orders-details ; echo # CREATE_W_KNOWN_ID_W_DEFAULT_DATA_AND_INCLUDE_AUTO_REF_ID
{
"1":{
    "fablabName": "1stFablab",
    "_id": "deadbeeeefac81bc04b648f5",
    "__v": 0
},
"2":{
    "submodules": [
        11,
        12
    ],
    "_id": "deadbeeeefdeadbeeeeeeef1",
    "__v": 0,
    "detailsForFablabId": "deadbeeeefac81bc04b648f5"
},
"3":{
    "orderStatus": "IN_PROGRESS",
    "_id": "beef0abba1234567deadbeef",
    "__v": 0,
    "createdAt": "2022-06-03T17:30:51.164Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-06-03T17:30:51.164Z"
},
"4":{
    "orderStatus": "DONE",
    "_id": "beef0abba1234567deadbee0",
    "__v": 0,
    "createdAt": "2022-06-03T17:30:51.164Z",
    "forFablabDetailId": "deadbeeeefdeadbeeeeeeef1",
    "updatedAt": "2022-06-03T17:30:51.164Z"
},
"5":{
    "operations": [],
    "_id": "abbaec0000000abbabefabba",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbeef"
}
}

Note: This will create an order details item with default data, as in an empty operations array, with a given id while the ref id will be automatically picked the first found orders metadata id.


9.E. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Throw Error No Order Meta Items

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{}' $H/api/v2/production-manager/orders-details; echo # THROW_ERROR_NO_ORDER_META_ITEMS
{
	"400_ERROR_CODE": "ErrorNoOrderMetaItems"
}

Note: This will throw an error, which is ErrorNoOrderMetaItems because the order metadata collection cannot be empty when creating an order details item.


9.F. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Throw Error Operation Is Required

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"operations":null}' $H/api/v2/production-manager/orders-details ; echo # THROW_ERROR_OPERATION_IS_REQUIRED
{
	"400_ERROR_CODE": "Validation failed operations Path operations is required."
}

Note: This will throw an error as operations cannot be null.


9.G. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Throw Error Invalid Non Consecutive Indices

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"operations":[{"index":11},{"index":101}]}' $H/api/v2/production-manager/orders-details; echo # THROW_ERROR_INVALID_NON_CONSECUTIVE_INDICES
{
	"400_ERROR_CODE": "Validation failed operations ErrorInvalidNonConsecutiveIndices"
}

Note: This will throw an error called ErrorInvalidNonConsecutiveIndices because the indices of operations need to be consecutive.


9.H. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Create W Known Id And Using Real Operations Data

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo # CREATE_W_KNOWN_ID_AND_USING_REAL_OPERATIONS_DATA
{
    "operations": [
        {
            "index": 0,
            "submodule_id": "8ab4424b",
            "operation": "dispense",
            "parameters": [
                {
                    "amount": "4",
                    "unit": "g"
                }
            ]
        },
        {
            "index": 1,
            "submodule_id": "42342",
            "operation": "mix",
            "parameters": [
                {
                    "speed": 80
                },
                {
                    "time": 50
                }
            ]
        }
    ],
    "_id": "abbaec0000000abbabefabb9",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbeef"
}

Note: This will create an orders details item with real operations data.


9.I. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Create Two Items W Known Ids Using Real Operations Data

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl $H/api/v2/production-manager/orders-details/abbaec0000000abbabefabb9; echo # CREATE_TWO_ITEMS_W_KNOWN_IDS_USING_REAL_OPERATIONS_DATA
{
"1":{
    "_id": "abbaec0000000abbabefabb9",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbeef",
    "operations": [
        {
            "index": 0,
            "submodule_id": "8ab4424b",
            "operation": "dispense",
            "parameters": [
                {
                    "amount": "4",
                    "unit": "g"
                }
            ]
        },
        {
            "index": 1,
            "submodule_id": "42342",
            "operation": "mix",
            "parameters": [
                {
                    "speed": 80
                },
                {
                    "time": 50
                }
            ]
        }
    ]
},
"2":{
    "operations": [],
    "_id": "abbaec0000000abbabefabba",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbee0"
}
}

Note: This will create two details items the first of which using real data.


9.J. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Delete A Details Item

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X DELETE $H/api/v2/production-manager/orders-details/abbaec0000000abbabefabba; # DELETE_A_DETAILS_ITEM

Note: This should delete one item base on an existing id.


9.K. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Retrieve A Details Item

db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl $H/api/v2/production-manager/orders-details/abbaec0000000abbabefabb9; echo; # RETRIEVE_A_DETAILS_ITEM
{"result":[{
    "operations": [
        {
            "index": 0,
            "submodule_id": "8ab4424b",
            "operation": "dispense",
            "parameters": [
                {
                    "amount": "4",
                    "unit": "g"
                }
            ]
        },
        {
            "index": 1,
            "submodule_id": "42342",
            "operation": "mix",
            "parameters": [
                {
                    "speed": 80
                },
                {
                    "time": 50
                }
            ]
        }
    ],
    "_id": "abbaec0000000abbabefabb9",
    "__v": 0,
    "detailsForOrderId": "beef0abba1234567deadbeef"
}]}

Note: This will retrieve a previously created orders details item.


9.J. API Endpoints: Production Manager Related, Retrieve And Seed A Single Orders Detail Object: Retrieve A Details Item

  • Endpoint: curl -X GET $H/api/v2/production-manager-simplified/orders-status
  • Status: PENDING, RECEIVED, IN_PROGRESS, DONE, ERROR, WARNING (only one IN_PROGRESS per Fablab): pending means received and converted and ready to be processed by CODY; received means received by CODY; in progress means fablab is doing it; done means the fablab just finished the process; error means it finished it but with errors; warning, finished but with some small issues.
curl $H/api/v2/production-manager-simplified/orders-status;
curl $H/api/v2/production-manager-simplified/orders-status/:irisId;
curl $H/api/v2/production-manager-simplified/orders-status/:irisOrderNumber;

Response:

{
    "result": {
        "irisId": "98765432-1234-5678-abcd-123456789012",
        "irisOrderNumber": "00000001",
        "status": "STRING",
        "updatedAt": 1654277400165
    }
}

Responses if id or order num not present:

{
    "results": [{
        "irisId": "98765432-1234-5678-abcd-123456789012",
        "irisOrderNumber": "00000001",
        "status": "STRING",
        "updatedAt": 1654277400165
    }]
}


10. API Endpoints: FeedStock Manager Related, Retrieve And Seed A Raw Material

  • Method: GET
  • Method: Post w/ PostData: {} OR
  • Method: Post w/ PostData: {"_id":"c0ffee0dead0c0000fffeee1"} OR
  • Method: Post w/ PostData: {"_id":"c0ffee0dead0c0000fffeee1","rawName":"abc"} OR
  • Method: Post w/ PostData: {"_id":"c0ffee0dead0c0000fffeee1","rawName":"abc","density":1}
  • Endpoint: curl $H/api/v2/stock-manager/raw-materials
  • Endpoint: curl $H/api/v2/stock-manager/raw-materials/:id
  • DataFormat: Integer date format
  • Formats:
    • rawName (str); formula_type (str, powder, liquid OR both');
    • formula_type (str default detergent); formula_state (str, parts OR balance);
    • calc_method (str parts OR balance); uop (str admix OR sprayon);
    • owner_id (str default null); external_idx (str default null)
    • usage_tag (str stain OR scent OR other); unit_price (number);
    • co2_prod (number); co2_transport (number);
    • is_suspended (boolean default false);
    • density (Decimal128 default 0.1);
    • density_unit (str default g/l)
  • Note: the default raw name is "brightener"
  • This endpoint like all the others contains a raw-materials-full alias endpoint.
{
  "rawName": "brightener",
  "formula_type": "detergent",
  "formula_state": "powder",
  "calc_method": "parts",
  "uop": "admix",
  "owner_id": null,
  "external_idx": null,
  "usage_tag": "other",
  "unit_price": 1,
  "co2_prod": 0,
  "co2_transport": 0,
  "is_suspended": false,
  "density": { "$numberDecimal": "0.1" },
  "density_unit": "g/l",
  "_id": "636e56e963707d22b7cda1d1",
  "__v": 0
}

10.A. API Endpoints: FeedStock Manager Related, Retrieve And Seed A Raw Material: Cleanup

function db_clean_r () { curl -X DELETE $H/api/v2/admin/clean-collection/raw-materials; }; db_clean_r

Note: This is to make sure we are starting from a clean slate.


10.B. API Endpoints: FeedStock Manager Related, Retrieve And Seed Raw Materials: Create W Known Id, Name, Density And All Others

db_clean_r; db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee1","rawName":"Sodium","formula_type":"detergent","formula_state":"liquid","calc_method":"balance","uop":"sprayon","owner_id":null,"external_idx":null,"usage_tag":"stain","unit_price":19.99,"co2_prod":42,"co2_transport":13,"is_suspended":false,"density":3.141,"density_unit":"mg/cm3"}' $H/api/v2/stock-manager/raw-materials; echo; # CREATE_W_KNOWN_ID_NAME_DENSITY_AND_ALL_OTHERS
{
    "rawName": "Sodium",
    "formula_type": "detergent",
    "formula_state": "liquid",
    "calc_method": "balance",
    "uop": "sprayon",
    "owner_id": null,
    "external_idx": null,
    "usage_tag": "stain",
    "unit_price": 19.99,
    "co2_prod": 42,
    "co2_transport": 13,
    "is_suspended": false,
    "density": { "$numberDecimal": "3.141" },
    "density_unit": "mg/cm3",
    "_id": "c0ffee0dead0c0000fffeee1",
    "__v": 0
}

Note: This will create a raw material item with custom id and all the associated details like: rawName, formula_type, formula_state, calc_method, uop, owner_id, external_idx, usage_tag, unit_price, co2_prod, co2_transport, is_suspended, density, density_unit.


10.C. API Endpoints: FeedStock Manager Related, Retrieve And Seed Raw Materials: Create W Known Id, Name And Other Defaults

db_clean_r; db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee1","rawName":"Sodium"}' $H/api/v2/stock-manager/raw-materials; echo # CREATE_W_KNOWN_ID_NAME_AND_OTHER_DEFAULTS
{
    "rawName": "Sodium",
    "formula_type": "detergent",
    "formula_state": "powder",
    "calc_method": "parts",
    "uop": "admix",
    "owner_id": null,
    "external_idx": null,
    "usage_tag": "other",
    "unit_price": 1,
    "co2_prod": 0,
    "co2_transport": 0,
    "is_suspended": false,
    "density": { "$numberDecimal": "0.1" },
    "density_unit": "g/l",
    "_id": "c0ffee0dead0c0000fffeee1",
    "__v": 0
}

Note: This will create a raw material item with custom id and custom name while the rest will automatically go to default values.


10.D. API Endpoints: FeedStock Manager Related, Retrieve And Seed Raw Materials: Throw Error Raw Name Is Required

db_clean_r; db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"rawName":null}' $H/api/v2/stock-manager/raw-materials; echo # THROW_ERROR_RAW_NAME_IS_REQUIRED
{
	"400_error_code": "RawMaterials validation failed: rawName: Path rawName is required."
}

Note: This should throw the path rawName is required error.


10.E. API Endpoints: FeedStock Manager Related, Retrieve And Seed Raw Materials: Create Two Items W Known Ids Using Real Raw Data

db_clean_r; db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee1","rawName":"Sodium","formula_type":"detergent","formula_state":"liquid","calc_method":"balance","uop":"sprayon","owner_id":null,"external_idx":null,"usage_tag":"stain","unit_price":19.99,"co2_prod":42,"co2_transport":13,"is_suspended":false,"density":3.141,"density_unit":"mg/cm3"}' $H/api/v2/stock-manager/raw-materials; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee2","rawName":"Surfactant","formula_type":"detergent","formula_state":"powder","calc_method":"balance","uop":"sprayon","owner_id":null,"external_idx":null,"usage_tag":"stain","unit_price":29.99,"co2_prod":43,"co2_transport":14,"is_suspended":false,"density":6.282,"density_unit":"mg/cm3"}' $H/api/v2/stock-manager/raw-materials; echo; # CREATE_TWO_ITEMS_W_KNOWN_IDS_USING_REAL_RAW_DATA
{
"1": {
    "rawName": "Sodium",
    "formula_type": "detergent",
    "formula_state": "liquid",
    "calc_method": "balance",
    "uop": "sprayon",
    "owner_id": null,
    "external_idx": null,
    "usage_tag": "stain",
    "unit_price": 19.99,
    "co2_prod": 42,
    "co2_transport": 13,
    "is_suspended": false,
    "density": { "$numberDecimal": "3.141" },
    "density_unit": "mg/cm3",
    "_id": "c0ffee0dead0c0000fffeee1",
    "__v": 0
},
"2": {
    "rawName": "Surfactant",
    "formula_type": "detergent",
    "formula_state": "powder",
    "calc_method": "balance",
    "uop": "sprayon",
    "owner_id": null,
    "external_idx": null,
    "usage_tag": "stain",
    "unit_price": 29.99,
    "co2_prod": 43,
    "co2_transport": 14,
    "is_suspended": false,
    "density": { "$numberDecimal": "6.282" },
    "density_unit": "mg/cm3",
    "_id": "c0ffee0dead0c0000fffeee2",
    "__v": 0
}
}

Note: This will create two raw items with real data.


10.F. API Endpoints: FeedStock Manager Related, Retrieve And Seed Raw Materials: Delete A Raw Materials Item

db_clean_r; db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee1","density":3.141}' $H/api/v2/stock-manager/raw-materials; echo; curl -X DELETE $H/api/v2/stock-manager/raw-materials/c0ffee0dead0c0000fffeee1; echo; # DELETE_A_RAW_MATERIALS_ITEM

Note: This should delete one item base on an existing id.


10.G. API Endpoints: FeedStock Manager Related, Retrieve And Seed Raw Materials: Retrieve A Raw Materials Item

db_clean_r; db_clean_od; db_clean_om; db_clean_d; db_clean; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f5"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefac81bc04b648f6","fablabName":"456"}' $H/api/v2/hw-manager/fablabs-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef1","submodules":[11,12]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"deadbeeeefdeadbeeeeeeef0","submodules":[101,102]}' $H/api/v2/hw-manager/fablabs-details; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbeef","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"IN_PROGRESS"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"beef0abba1234567deadbee0","createdAt":1654277451164,"updatedAt":1654277451164,"orderStatus":"DONE"}' $H/api/v2/production-manager/orders-metadata-items; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabb9","operations":[{"index":0,"submodule_id":"8ab4424b","operation":"dispense","parameters":[{"amount":"4","unit":"g"}]},{"index":1,"submodule_id":"42342","operation":"mix","parameters":[{"speed":80},{"time":50}]}]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"abbaec0000000abbabefabba","detailsForOrderId":"beef0abba1234567deadbee0","operations":[]}' $H/api/v2/production-manager/orders-details; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee1","rawName":"Sodium","formula_type":"detergent","formula_state":"liquid","calc_method":"balance","uop":"sprayon","owner_id":null,"external_idx":null,"usage_tag":"stain","unit_price":19.99,"co2_prod":42,"co2_transport":13,"is_suspended":false,"density":3.141,"density_unit":"mg/cm3"}' $H/api/v2/stock-manager/raw-materials; echo; curl -X POST -H "$J" -d '{"_id":"c0ffee0dead0c0000fffeee2","rawName":"Surfactant","formula_type":"detergent","formula_state":"powder","calc_method":"balance","uop":"sprayon","owner_id":null,"external_idx":null,"usage_tag":"stain","unit_price":29.99,"co2_prod":43,"co2_transport":14,"is_suspended":false,"density":6.282,"density_unit":"mg/cm3"}' $H/api/v2/stock-manager/raw-materials; echo; curl $H/api/v2/stock-manager/raw-materials/c0ffee0dead0c0000fffeee1; echo; # RETRIEVE_A_RAW_MATERIALS_ITEM
{
    "rawName": "Sodium",
    "formula_type": "detergent",
    "formula_state": "liquid",
    "calc_method": "balance",
    "uop": "sprayon",
    "owner_id": null,
    "external_idx": null,
    "usage_tag": "stain",
    "unit_price": 19.99,
    "co2_prod": 42,
    "co2_transport": 13,
    "is_suspended": false,
    "density": { "$numberDecimal": "3.141" },
    "density_unit": "mg/cm3",
    "_id": "c0ffee0dead0c0000fffeee1",
    "__v": 0
}

Note: This will retrieve a previously created raw item.



11. API Endpoints: Postman Exported JSON Collection

Below you can find the exported Postman Json Collection.

Please save it in a text file and give it a name like: Diy4u.postman_collection.json

{
	"info": {
		"_postman_id": "5581efa6-2a0b-4f51-bd37-4de0f8db8287",
		"name": "Diy4uVirtualFablab",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
		"_exporter_id": "14077535"
	},
	"item": [
		{
			"name": "6.A. FablabMetadataItms: Retrieve",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/hw-manager/fablabs-metadata-items",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"hw-manager",
						"fablabs-metadata-items"
					]
				}
			},
			"response": []
		},
		{
			"name": "6.B. FablabMetadataItms: Retrieve Full",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/hw-manager/fablabs-metadata-items-full",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"hw-manager",
						"fablabs-metadata-items-full"
					]
				}
			},
			"response": []
		},
		{
			"name": "6.C. FablabMetadataItms: Cleanup",
			"request": {
				"method": "DELETE",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/admin/clean-collection/fablabs-metadata-items",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"admin",
						"clean-collection",
						"fablabs-metadata-items"
					]
				}
			},
			"response": []
		},
		{
			"name": "6.D. FablabMetadataItms: Create W Known Id",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "text"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\"_id\":\"deadbeeeefac81bc04b648f5\",\"fablabName\":\"123\"}"
				},
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/hw-manager/fablabs-metadata-items",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"hw-manager",
						"fablabs-metadata-items"
					]
				}
			},
			"response": []
		},
		{
			"name": "7.A. FablabDetails: Retrieve",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/hw-manager/fablabs-details",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"hw-manager",
						"fablabs-details"
					]
				}
			},
			"response": []
		},
		{
			"name": "7.B. FablabDetails: Retrieve Full",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/hw-manager/fablabs-details-full",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"hw-manager",
						"fablabs-details-full"
					]
				}
			},
			"response": []
		},
		{
			"name": "7.C. FablabDetails: Cleanup",
			"request": {
				"method": "DELETE",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/admin/clean-collection/fablabs-details",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"admin",
						"clean-collection",
						"fablabs-details"
					]
				}
			},
			"response": []
		},
		{
			"name": "7.D. FablabDetails: Create W Known Id And ForId",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "text"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n  \"_id\": \"deadbeeeefdeadbeeeeeeef1\",\n  \"detailsForFablabId\": \"deadbeeeefac81bc04b648f5\",\n  \"submodules\": [\n    {\n      \"submodule_id\": \"34566cd\",\n      \"specifications\": {\n        \"submodule_type\": \"M310.2\", \"description\": \"DispensingUnit\",\n        \"available_operations\": [\n          { \"name\": \"dispense\",\n            \"description\": \"DispenseIngredient\",\n            \"operation_parameters\": [\n              { \"name\": \"volume\", \"type\": \"float\", \"default\": null,\n                \"unit_primary\": \"g\", \"units_secondary\": [], \"min\": 0,\n                \"max\": null, \"description\": \"volume2dispense\" } ]\n          }\n        ],\n        \"submodule_parameters\": [\n          { \"name\": \"container_volume\", \"type\": \"float\", \"default\": \"1.3\",\n            \"unit_primary\": \"l\", \"units_secondary\": [], \"min\": 0,\n            \"max\": null, \"description\": \"maxVolOfContainer\" },\n          { \"name\": \"stroke_volume\", \"type\": \"float\", \"default\": \"0.012\",\n            \"unit_primary\": \"l\", \"units_secondary\": [], \"min\": 0,\n            \"max\": null, \"description\": \"volumeDispensedPerTurn\" }\n        ]\n      }\n    }\n  ]\n}\n"
				},
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/hw-manager/fablabs-details",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"hw-manager",
						"fablabs-details"
					]
				}
			},
			"response": []
		},
		{
			"name": "8.A. OrderMetadataItms: Retrieve",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/production-manager/orders-metadata-items",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"production-manager",
						"orders-metadata-items"
					]
				}
			},
			"response": []
		},
		{
			"name": "8.B. OrderMetadataItms: Retrieve Full",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/production-manager/orders-metadata-items-full",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"production-manager",
						"orders-metadata-items-full"
					]
				}
			},
			"response": []
		},
		{
			"name": "8.C. OrderMetadataItms: Cleanup",
			"request": {
				"method": "DELETE",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/admin/clean-collection/orders-metadata-items",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"admin",
						"clean-collection",
						"orders-metadata-items"
					]
				}
			},
			"response": []
		},
		{
			"name": "8.D. OrderMetadataItms: Create W Kn Id, ForId & Date",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "text"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"_id\":\"beef0abba1234567deadbeef\",\n    \"forFablabDetailId\":\"deadbeeeefdeadbeeeeeeef1\",\n    \"createdAt\":1654277400165\n}\n"
				},
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/production-manager/orders-metadata-items",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"production-manager",
						"orders-metadata-items"
					]
				}
			},
			"response": []
		},
		{
			"name": "9.A. OrderDetails: Retrieve",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/production-manager/orders-details",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"production-manager",
						"orders-details"
					]
				}
			},
			"response": []
		},
		{
			"name": "9.B. OrderDetails: Retrieve Full",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/production-manager/orders-details-full",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"production-manager",
						"orders-details-full"
					]
				}
			},
			"response": []
		},
		{
			"name": "9.C. OrderDetails: Cleanup",
			"request": {
				"method": "DELETE",
				"header": [],
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/admin/clean-collection/orders-details",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"admin",
						"clean-collection",
						"orders-details"
					]
				}
			},
			"response": []
		},
		{
			"name": "9.D. OrderDetails: Create W Kn Id, ForId & Operations",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"value": "application/json",
						"type": "text"
					}
				],
				"body": {
					"mode": "raw",
					"raw": "{\n    \"_id\":\"abbaec0000000abbabefabba\",\n    \"detailsForOrderId\":\"beef0abba1234567deadbeef\",\n    \"operations\": [\n        {\"index\":0,\"submodule_id\":\"8ab4424b\",\"operation\":\"dispense\",\"parameters\":[{\"amount\":\"4\",\"unit\":\"g\"}]},\n        {\"index\":1,\"submodule_id\":\"34566cd\",\"operation\":\"dispense\",\"parameters\":[{\"amount\":\"320\",\"unit\":\"ml\"}]},\n        {\"index\":2,\"submodule_id\":\"42342\",\"operation\":\"mix\",\"parameters\":[{\"speed\":80},{\"time\":50}]}\n    ]\n}\n"
				},
				"url": {
					"raw": "http://207.244.228.246:3003/api/v2/production-manager/orders-details",
					"protocol": "http",
					"host": [
						"207",
						"244",
						"228",
						"246"
					],
					"port": "3003",
					"path": [
						"api",
						"v2",
						"production-manager",
						"orders-details"
					]
				}
			},
			"response": []
		}
	]
}


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment