Authentication
Using JSON Web Tokens
You can either use the warehouseLogin mutation or the integratorLogin mutation (depending on wether you're logging as an IntegratorUser or a WarehouseWorker)
Both mutations will return an accessToken, which is a valid JWT.
In order to authenticate calls to the API, you need to pass the JWT as a HTTP header like this:
{
"authorization": "Bearer {your-jwt}"
}
Note that you can inspect any JWT via jwt.io and see which data is carried within it.
Integrator setup
Role
If you want to create WarehouseWorkers you need at the very least a Role with permissions like this:
mutation {
createRole(
name: "my-integrator-role"
permissions: [{ table: WAREHOUSE_WORKER, mode: WRITE }]
) {
id
name
}
}
User
Then you also need a user account that can log in
mutation {
createIntegratorUser(
email: "jdoe+integrator@example.com"
password: "$ecret"
roleId: "my-integrator-role-id"
integratorId: "my-integrator-id"
) {
id
email
}
}
Login
Log into your user account to obtain a JSON Web Token (JWT)
mutation {
integratorLogin(
email: "jdoe+integrator@example.com"
password: "$ecret"
integratorId: "my-integrator-id"
) {
accessToken
}
}
Create a WarehouseWorker
You can now create your first WarehouseWorker.
We're going to call him the "Warehouse admin" since we will give him permissions to invite his colleagues
mutation {
createRole(
name: "acme-labs-admin"
permissions: [
{ table: WAREHOUSE_WORKER, mode: WRITE }
{ table: ARTICLE, mode: WRITE }
]
) {
id
name
}
}
mutation {
createWarehouseWorker(
username: "warehouse-admin"
password: "$ecret"
roleId: "acme-labs-admin-id"
warehouseId: "my-warehouse-id"
) {
id
username
}
}
We've now created an admin that can invite other WarehouseWorkers into his Client account!
Client setup
As a Client organization, you have a WarehouseWorker user that can log in via the warehouseLogin mutation
mutation {
warehouseLogin(
username: "warehouse-admin-1"
password: "$ecret"
warehouseId: "my-warehouse"
) {
accessToken
}
}
You can then perform actions into the Warehouse depending on your permissions, such as:
Creating a temp worker
mutation {
createRole(
name: "temp-worker-role"
permissions: [{ table: ARTICLE, mode: READ }]
) {
id
name
}
}
mutation {
createWarehouseWorker(
username: "temp-worker-1"
password: "$ecret"
roleId: "temp-worker-role-id"
warehouseId: "my-warehouse-id"
) {
id
username
}
}
Creating an Article
mutation {
createArticle(
input: {
name: "my-article"
accountId: 1
companyId: 1
status: 1
code: "testcode"
length: 24.2
width: 2.3
height: 1.4
baseUnitWeight: 1.02
boxWeight: 1.2
boxQuantity: 3
baseUnitPicking: true
boxPicking: false
cubingType: 1
permanentProduct: false
}
) {
id
name
created
}
}