Welcome!
These pages contain the documentation for the boxtribute GraphQL API (queries only). Have fun exploring!
You can interact with the API in either of the following ways:
- Open the endpoint address in your browser. This launches the GraphQL explorer
- Send POST requests to the endpoint from a script or the command line, passing your GraphQL query in the
queryfield of the request JSON
API Endpoints
https://api.boxtribute.org
Version
v2.8.6
Terms of Service
In line with the Service Agreement and other related documents as signed with Boxtribute (Stichting Boxwise)
Authentication and Authorization
For using the API, you have to authenticate, and then are given a unique token holding your user information and permissions. You have to pass the token along when requesting data from the API.
- You need your username and password that you log in to
app.boxtribute.orgwith. Pass it in the JSON part of a POST response toapi.boxtribute.org/token, like{"username": "my-email-address", "password": "PASSWORD"} - Copy the content of the
access_tokenfield of the response JSON - Paste the token into the HTTP headers when sending a request to the API, like
{"Authorization": "Bearer TOKEN"} - When using the GraphQL explorer, paste the header into the respective field in the bottom left.
Queries
base
Description
Return Base with specified ID. Accessible for clients who are members of this base.
Example
Query
query base($id: ID!) {
base(id: $id) {
id
name
organisation {
...OrganisationFragment
}
deletedOn
beneficiaries {
...BeneficiaryPageFragment
}
currencyName
locations {
...ClassicLocationFragment
}
products {
...ProductFragment
}
tags {
...TagFragment
}
distributionSpots {
...DistributionSpotFragment
}
distributionEvents {
...DistributionEventFragment
}
distributionEventsBeforeReturnedFromDistributionState {
...DistributionEventFragment
}
distributionEventsInReturnedFromDistributionState {
...DistributionEventFragment
}
distributionEventsTrackingGroups {
...DistributionEventsTrackingGroupFragment
}
distributionEventsStatistics {
...DistributionEventsStatisticsFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"base": {
"id": 4,
"name": "Lesvos",
"organisation": Organisation,
"deletedOn": "2016-10-17T01:08:03",
"beneficiaries": BeneficiaryPage,
"currencyName": "drops",
"locations": [ClassicLocation],
"products": [Product],
"tags": [Tag],
"distributionSpots": [DistributionSpot],
"distributionEvents": [DistributionEvent],
"distributionEventsBeforeReturnedFromDistributionState": [
DistributionEvent
],
"distributionEventsInReturnedFromDistributionState": [
DistributionEvent
],
"distributionEventsTrackingGroups": [
DistributionEventsTrackingGroup
],
"distributionEventsStatistics": [
DistributionEventsStatistics
]
}
}
}
bases
Description
Return all non-deleted Bases that the client is authorized to view.
Response
Returns [Base!]!
Arguments
| Name | Description |
|---|---|
filterInput - FilterBaseInput
|
Example
Query
query bases($filterInput: FilterBaseInput) {
bases(filterInput: $filterInput) {
id
name
organisation {
...OrganisationFragment
}
deletedOn
beneficiaries {
...BeneficiaryPageFragment
}
currencyName
locations {
...ClassicLocationFragment
}
products {
...ProductFragment
}
tags {
...TagFragment
}
distributionSpots {
...DistributionSpotFragment
}
distributionEvents {
...DistributionEventFragment
}
distributionEventsBeforeReturnedFromDistributionState {
...DistributionEventFragment
}
distributionEventsInReturnedFromDistributionState {
...DistributionEventFragment
}
distributionEventsTrackingGroups {
...DistributionEventsTrackingGroupFragment
}
distributionEventsStatistics {
...DistributionEventsStatisticsFragment
}
}
}
Variables
{"filterInput": FilterBaseInput}
Response
{
"data": {
"bases": [
{
"id": "4",
"name": "Lesvos",
"organisation": Organisation,
"deletedOn": "2016-10-17T01:08:03",
"beneficiaries": BeneficiaryPage,
"currencyName": "drops",
"locations": [ClassicLocation],
"products": [Product],
"tags": [Tag],
"distributionSpots": [DistributionSpot],
"distributionEvents": [DistributionEvent],
"distributionEventsBeforeReturnedFromDistributionState": [
DistributionEvent
],
"distributionEventsInReturnedFromDistributionState": [
DistributionEvent
],
"distributionEventsTrackingGroups": [
DistributionEventsTrackingGroup
],
"distributionEventsStatistics": [
DistributionEventsStatistics
]
}
]
}
}
beneficiaries
Description
Return all Beneficiaries that the client is authorized to view. Optionally pass filter.
Response
Returns a BeneficiaryPage!
Arguments
| Name | Description |
|---|---|
paginationInput - PaginationInput
|
|
filterInput - FilterBeneficiaryInput
|
Example
Query
query beneficiaries(
$paginationInput: PaginationInput,
$filterInput: FilterBeneficiaryInput
) {
beneficiaries(
paginationInput: $paginationInput,
filterInput: $filterInput
) {
elements {
...BeneficiaryFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"paginationInput": PaginationInput,
"filterInput": FilterBeneficiaryInput
}
Response
{
"data": {
"beneficiaries": {
"elements": [Beneficiary],
"pageInfo": PageInfo,
"totalCount": 987
}
}
}
beneficiary
Description
Return Beneficiary with specified ID. Accessible for clients who are members of the beneficiary's base
Response
Returns a Beneficiary
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query beneficiary($id: ID!) {
beneficiary(id: $id) {
id
firstName
lastName
dateOfBirth
age
comment
base {
...BaseFragment
}
groupIdentifier
gender
languages
familyHead {
...BeneficiaryFragment
}
active
isVolunteer
signed
registered
phoneNumber
signature
dateOfSignature
tokens
transactions {
...TransactionFragment
}
createdBy {
...UserFragment
}
createdOn
lastModifiedBy {
...UserFragment
}
lastModifiedOn
tags {
...TagFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"beneficiary": {
"id": "4",
"firstName": "Some",
"lastName": "One",
"dateOfBirth": "2020-11-20",
"age": 25,
"comment": "very nice",
"base": Base,
"groupIdentifier": "xyz789",
"gender": "Male",
"languages": ["nl"],
"familyHead": Beneficiary,
"active": false,
"isVolunteer": true,
"signed": false,
"registered": true,
"phoneNumber": "abc123",
"signature": "xyz789",
"dateOfSignature": "2020-11-20",
"tokens": 987,
"transactions": [Transaction],
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"tags": [Tag]
}
}
}
beneficiaryDemographics
Response
Returns a BeneficiaryDemographicsData
Arguments
| Name | Description |
|---|---|
baseId - Int!
|
Example
Query
query beneficiaryDemographics($baseId: Int!) {
beneficiaryDemographics(baseId: $baseId) {
facts {
...BeneficiaryDemographicsResultFragment
}
dimensions {
...BeneficiaryDemographicsDimensionsFragment
}
}
}
Variables
{"baseId": 123}
Response
{
"data": {
"beneficiaryDemographics": {
"facts": [BeneficiaryDemographicsResult],
"dimensions": BeneficiaryDemographicsDimensions
}
}
}
box
Description
Return Box with specified label identifier. For a box in InTransit, Receiving, or NotDelivered state, clients of both source and target base of the underlying shipment are allowed to view it. Otherwise the client must be permitted to access the base of the box location
Example
Query
query box($labelIdentifier: String!) {
box(labelIdentifier: $labelIdentifier) {
id
labelIdentifier
location {
...LocationFragment
}
distributionEvent {
...DistributionEventFragment
}
numberOfItems
product {
...ProductFragment
}
size {
...SizeFragment
}
displayUnit {
...UnitFragment
}
measureValue
state
qrCode {
...QrCodeFragment
}
createdBy {
...UserFragment
}
createdOn
lastModifiedBy {
...UserFragment
}
lastModifiedOn
deletedOn
comment
tags {
...TagFragment
}
history {
...HistoryEntryFragment
}
shipmentDetail {
...ShipmentDetailFragment
}
}
}
Variables
{"labelIdentifier": "abc123"}
Response
{
"data": {
"box": {
"id": "4",
"labelIdentifier": "xyz789",
"location": Location,
"distributionEvent": DistributionEvent,
"numberOfItems": 123,
"product": Product,
"size": "XL",
"displayUnit": Unit,
"measureValue": 987.65,
"state": "InStock",
"qrCode": QrCode,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"deletedOn": "2016-10-17T01:08:03",
"comment": "very new",
"tags": [Tag],
"history": [HistoryEntry],
"shipmentDetail": ShipmentDetail
}
}
}
boxes
Description
Return page of non-deleted Boxes in base with specified ID. Optionally pass filters
Response
Returns a BoxPage!
Arguments
| Name | Description |
|---|---|
baseId - ID!
|
|
paginationInput - PaginationInput
|
|
filterInput - FilterBoxInput
|
Example
Query
query boxes(
$baseId: ID!,
$paginationInput: PaginationInput,
$filterInput: FilterBoxInput
) {
boxes(
baseId: $baseId,
paginationInput: $paginationInput,
filterInput: $filterInput
) {
elements {
...BoxFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"baseId": 4,
"paginationInput": PaginationInput,
"filterInput": FilterBoxInput
}
Response
{
"data": {
"boxes": {
"elements": [Box],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
createdBoxes
Response
Returns a CreatedBoxesData
Arguments
| Name | Description |
|---|---|
baseId - Int!
|
Example
Query
query createdBoxes($baseId: Int!) {
createdBoxes(baseId: $baseId) {
facts {
...CreatedBoxesResultFragment
}
dimensions {
...CreatedBoxDataDimensionsFragment
}
}
}
Variables
{"baseId": 123}
Response
{
"data": {
"createdBoxes": {
"facts": [CreatedBoxesResult],
"dimensions": CreatedBoxDataDimensions
}
}
}
distributionEvent
Response
Returns a DistributionEvent
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query distributionEvent($id: ID!) {
distributionEvent(id: $id) {
id
distributionSpot {
...DistributionSpotFragment
}
name
state
plannedStartDateTime
plannedEndDateTime
packingListEntries {
...PackingListEntryFragment
}
boxes {
...BoxFragment
}
unboxedItemsCollections {
...UnboxedItemsCollectionFragment
}
distributionEventsTrackingGroup {
...DistributionEventsTrackingGroupFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"distributionEvent": {
"id": 4,
"distributionSpot": DistributionSpot,
"name": "abc123",
"state": "Planning",
"plannedStartDateTime": "2016-10-17T01:08:03",
"plannedEndDateTime": "2016-10-17T01:08:03",
"packingListEntries": [PackingListEntry],
"boxes": [Box],
"unboxedItemsCollections": [UnboxedItemsCollection],
"distributionEventsTrackingGroup": DistributionEventsTrackingGroup
}
}
}
distributionEventsTrackingGroup
Response
Returns a DistributionEventsTrackingGroup
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query distributionEventsTrackingGroup($id: ID!) {
distributionEventsTrackingGroup(id: $id) {
id
state
distributionEvents {
...DistributionEventFragment
}
distributionEventsTrackingEntries {
...DistributionEventsTrackingEntryFragment
}
createdOn
}
}
Variables
{"id": 4}
Response
{
"data": {
"distributionEventsTrackingGroup": {
"id": 4,
"state": "InProgress",
"distributionEvents": [DistributionEvent],
"distributionEventsTrackingEntries": [
DistributionEventsTrackingEntry
],
"createdOn": "2016-10-17T01:08:03"
}
}
}
distributionSpot
Response
Returns a DistributionSpot
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query distributionSpot($id: ID!) {
distributionSpot(id: $id) {
id
name
base {
...BaseFragment
}
boxes {
...BoxPageFragment
}
comment
latitude
longitude
distributionEvents {
...DistributionEventFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"distributionSpot": {
"id": "4",
"name": "xyz789",
"base": Base,
"boxes": BoxPage,
"comment": "abc123",
"latitude": 987.65,
"longitude": 987.65,
"distributionEvents": [DistributionEvent]
}
}
}
distributionSpots
Response
Returns [DistributionSpot!]!
Example
Query
query distributionSpots {
distributionSpots {
id
name
base {
...BaseFragment
}
boxes {
...BoxPageFragment
}
comment
latitude
longitude
distributionEvents {
...DistributionEventFragment
}
}
}
Response
{
"data": {
"distributionSpots": [
{
"id": "4",
"name": "abc123",
"base": Base,
"boxes": BoxPage,
"comment": "abc123",
"latitude": 123.45,
"longitude": 987.65,
"distributionEvents": [DistributionEvent]
}
]
}
}
location
Description
Return ClassicLocation with specified ID. Accessible for clients who are members of the location's base
Response
Returns a ClassicLocation
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query location($id: ID!) {
location(id: $id) {
id
base {
...BaseFragment
}
name
seq
isShop
isStockroom
boxes {
...BoxPageFragment
}
defaultBoxState
createdBy {
...UserFragment
}
createdOn
lastModifiedBy {
...UserFragment
}
lastModifiedOn
}
}
Variables
{"id": 4}
Response
{
"data": {
"location": {
"id": "4",
"base": Base,
"name": "abc123",
"seq": 987,
"isShop": true,
"isStockroom": false,
"boxes": BoxPage,
"defaultBoxState": "InStock",
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03"
}
}
}
locations
Description
Return all ClassicLocations that the client is authorized to view.
Response
Returns [ClassicLocation!]!
Example
Query
query locations {
locations {
id
base {
...BaseFragment
}
name
seq
isShop
isStockroom
boxes {
...BoxPageFragment
}
defaultBoxState
createdBy {
...UserFragment
}
createdOn
lastModifiedBy {
...UserFragment
}
lastModifiedOn
}
}
Response
{
"data": {
"locations": [
{
"id": 4,
"base": Base,
"name": "xyz789",
"seq": 123,
"isShop": true,
"isStockroom": true,
"boxes": BoxPage,
"defaultBoxState": "InStock",
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03"
}
]
}
}
metrics
Description
Return various metrics about stock and beneficiaries for client's organisation.
Example
Query
query metrics($organisationId: ID) {
metrics(organisationId: $organisationId) {
numberOfFamiliesServed
numberOfBeneficiariesServed
numberOfSales
stockOverview {
...StockOverviewFragment
}
}
}
Variables
{"organisationId": 4}
Response
{
"data": {
"metrics": {
"numberOfFamiliesServed": 987,
"numberOfBeneficiariesServed": 987,
"numberOfSales": 987,
"stockOverview": StockOverview
}
}
}
movedBoxes
Response
Returns a MovedBoxesData
Arguments
| Name | Description |
|---|---|
baseId - Int!
|
Example
Query
query movedBoxes($baseId: Int!) {
movedBoxes(baseId: $baseId) {
facts {
...MovedBoxesResultFragment
}
dimensions {
...MovedBoxDataDimensionsFragment
}
}
}
Variables
{"baseId": 987}
Response
{
"data": {
"movedBoxes": {
"facts": [MovedBoxesResult],
"dimensions": MovedBoxDataDimensions
}
}
}
organisation
Description
Return Organisation with specified ID.
Response
Returns an Organisation
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query organisation($id: ID!) {
organisation(id: $id) {
id
name
bases {
...BaseFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"organisation": {
"id": 4,
"name": "Helpful Helpers",
"bases": [Base]
}
}
}
organisations
Description
Return all non-deleted Organisations.
Response
Returns [Organisation!]!
Example
Query
query organisations {
organisations {
id
name
bases {
...BaseFragment
}
}
}
Response
{
"data": {
"organisations": [
{
"id": 4,
"name": "Helpful Helpers",
"bases": [Base]
}
]
}
}
packingListEntry
Response
Returns a PackingListEntry
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query packingListEntry($id: ID!) {
packingListEntry(id: $id) {
id
product {
...ProductFragment
}
size {
...SizeFragment
}
numberOfItems
matchingPackedItemsCollections {
...ItemsCollectionFragment
}
state
}
}
Variables
{"id": 4}
Response
{
"data": {
"packingListEntry": {
"id": "4",
"product": Product,
"size": Size,
"numberOfItems": 987,
"matchingPackedItemsCollections": [ItemsCollection],
"state": "NotStarted"
}
}
}
product
Description
Return Product with specified ID. Accessible for clients who are members of the product's base
Example
Query
query product($id: ID!) {
product(id: $id) {
id
name
type
category {
...ProductCategoryFragment
}
sizeRange {
...SizeRangeFragment
}
base {
...BaseFragment
}
standardProduct {
...StandardProductFragment
}
price
gender
comment
instockItemsCount
transferItemsCount
inShop
createdBy {
...UserFragment
}
createdOn
lastModifiedBy {
...UserFragment
}
lastModifiedOn
deletedOn
}
}
Variables
{"id": 4}
Response
{
"data": {
"product": {
"id": "4",
"name": "gloves",
"type": "Custom",
"category": ProductCategory,
"sizeRange": SizeRange,
"base": Base,
"standardProduct": StandardProduct,
"price": 987.65,
"gender": "Men",
"comment": "abc123",
"instockItemsCount": 987,
"transferItemsCount": 987,
"inShop": false,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"deletedOn": "2016-10-17T01:08:03"
}
}
}
productCategories
Description
Return all ProductCategories.
Response
Returns [ProductCategory!]!
Example
Query
query productCategories {
productCategories {
id
name
products {
...ProductPageFragment
}
hasGender
}
}
Response
{
"data": {
"productCategories": [
{
"id": "4",
"name": "Clothing",
"products": ProductPage,
"hasGender": true
}
]
}
}
productCategory
Description
Return ProductCategory with specified ID.
Response
Returns a ProductCategory
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query productCategory($id: ID!) {
productCategory(id: $id) {
id
name
products {
...ProductPageFragment
}
hasGender
}
}
Variables
{"id": 4}
Response
{
"data": {
"productCategory": {
"id": "4",
"name": "Clothing",
"products": ProductPage,
"hasGender": false
}
}
}
products
Description
Return all Products (incl. deleted) that the client is authorized to view. If baseId specified, return only the products registered in the requested base
Response
Returns a ProductPage!
Arguments
| Name | Description |
|---|---|
baseId - ID
|
|
paginationInput - PaginationInput
|
Example
Query
query products(
$baseId: ID,
$paginationInput: PaginationInput
) {
products(
baseId: $baseId,
paginationInput: $paginationInput
) {
elements {
...ProductFragment
}
pageInfo {
...PageInfoFragment
}
totalCount
}
}
Variables
{
"baseId": "4",
"paginationInput": PaginationInput
}
Response
{
"data": {
"products": {
"elements": [Product],
"pageInfo": PageInfo,
"totalCount": 123
}
}
}
qrCode
Description
Return QrCode with specified code (an MD5 hash in hex format of length 32), or an error in case of insufficient permission or missing resource.
Response
Returns a QrCodeResult!
Arguments
| Name | Description |
|---|---|
code - String!
|
Example
Query
query qrCode($code: String!) {
qrCode(code: $code) {
... on QrCode {
...QrCodeFragment
}
... on InsufficientPermissionError {
...InsufficientPermissionErrorFragment
}
... on ResourceDoesNotExistError {
...ResourceDoesNotExistErrorFragment
}
}
}
Variables
{"code": "xyz789"}
Response
{"data": {"qrCode": QrCode}}
qrExists
shipment
Description
Return Shipment with specified ID. Clients are authorized to view a shipment if they're member of either the source or the target base
Example
Query
query shipment($id: ID!) {
shipment(id: $id) {
id
labelIdentifier
sourceBase {
...BaseFragment
}
targetBase {
...BaseFragment
}
state
startedBy {
...UserFragment
}
startedOn
sentBy {
...UserFragment
}
sentOn
receivingStartedBy {
...UserFragment
}
receivingStartedOn
completedBy {
...UserFragment
}
completedOn
canceledBy {
...UserFragment
}
canceledOn
transferAgreement {
...TransferAgreementFragment
}
details {
...ShipmentDetailFragment
}
}
}
Variables
{"id": 4}
Response
{
"data": {
"shipment": {
"id": 4,
"labelIdentifier": "xyz789",
"sourceBase": Base,
"targetBase": Base,
"state": "Preparing",
"startedBy": User,
"startedOn": "2016-10-17T01:08:03",
"sentBy": User,
"sentOn": "2016-10-17T01:08:03",
"receivingStartedBy": User,
"receivingStartedOn": "2016-10-17T01:08:03",
"completedBy": User,
"completedOn": "2016-10-17T01:08:03",
"canceledBy": User,
"canceledOn": "2016-10-17T01:08:03",
"transferAgreement": TransferAgreement,
"details": [ShipmentDetail]
}
}
}
shipments
Description
Return all Shipments that the client is authorized to view. Optionally filter for shipments of certain state(s).
Response
Returns [Shipment!]!
Arguments
| Name | Description |
|---|---|
states - [ShipmentState!]
|
Example
Query
query shipments($states: [ShipmentState!]) {
shipments(states: $states) {
id
labelIdentifier
sourceBase {
...BaseFragment
}
targetBase {
...BaseFragment
}
state
startedBy {
...UserFragment
}
startedOn
sentBy {
...UserFragment
}
sentOn
receivingStartedBy {
...UserFragment
}
receivingStartedOn
completedBy {
...UserFragment
}
completedOn
canceledBy {
...UserFragment
}
canceledOn
transferAgreement {
...TransferAgreementFragment
}
details {
...ShipmentDetailFragment
}
}
}
Variables
{"states": ["Preparing"]}
Response
{
"data": {
"shipments": [
{
"id": 4,
"labelIdentifier": "xyz789",
"sourceBase": Base,
"targetBase": Base,
"state": "Preparing",
"startedBy": User,
"startedOn": "2016-10-17T01:08:03",
"sentBy": User,
"sentOn": "2016-10-17T01:08:03",
"receivingStartedBy": User,
"receivingStartedOn": "2016-10-17T01:08:03",
"completedBy": User,
"completedOn": "2016-10-17T01:08:03",
"canceledBy": User,
"canceledOn": "2016-10-17T01:08:03",
"transferAgreement": TransferAgreement,
"details": [ShipmentDetail]
}
]
}
}
sizeRanges
Description
Return all SizeRanges.
Response
Returns [SizeRange!]!
Example
Query
query sizeRanges {
sizeRanges {
id
name
label
sizes {
...SizeFragment
}
units {
...UnitFragment
}
}
}
Response
{
"data": {
"sizeRanges": [
{
"id": 4,
"name": "xyz789",
"label": "xyz789",
"sizes": [Size],
"units": [Unit]
}
]
}
}
standardProduct
Description
Return StandardProduct with specified ID, or an error in case of insufficient permission or missing resource.
Response
Returns a StandardProductResult
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query standardProduct($id: ID!) {
standardProduct(id: $id) {
... on StandardProduct {
...StandardProductFragment
}
... on InsufficientPermissionError {
...InsufficientPermissionErrorFragment
}
... on ResourceDoesNotExistError {
...ResourceDoesNotExistErrorFragment
}
}
}
Variables
{"id": 4}
Response
{"data": {"standardProduct": StandardProduct}}
standardProducts
Description
Return standard products of latest version. Optionally include all standard products enabled for specified base.
Response
Returns a StandardProductsResult
Arguments
| Name | Description |
|---|---|
baseId - ID
|
Example
Query
query standardProducts($baseId: ID) {
standardProducts(baseId: $baseId) {
... on StandardProductPage {
...StandardProductPageFragment
}
... on InsufficientPermissionError {
...InsufficientPermissionErrorFragment
}
... on UnauthorizedForBaseError {
...UnauthorizedForBaseErrorFragment
}
}
}
Variables
{"baseId": "4"}
Response
{"data": {"standardProducts": StandardProductPage}}
stockOverview
Response
Returns a StockOverviewData
Arguments
| Name | Description |
|---|---|
baseId - Int!
|
Example
Query
query stockOverview($baseId: Int!) {
stockOverview(baseId: $baseId) {
facts {
...StockOverviewResultFragment
}
dimensions {
...StockOverviewDataDimensionsFragment
}
}
}
Variables
{"baseId": 123}
Response
{
"data": {
"stockOverview": {
"facts": [StockOverviewResult],
"dimensions": StockOverviewDataDimensions
}
}
}
tag
Description
Return Tag with specified ID. Accessible for clients who are members of the tag's base
Example
Query
query tag($id: ID!) {
tag(id: $id) {
id
name
description
color
type
taggedResources {
... on Box {
...BoxFragment
}
... on Beneficiary {
...BeneficiaryFragment
}
}
base {
...BaseFragment
}
createdBy {
...UserFragment
}
createdOn
lastModifiedBy {
...UserFragment
}
lastModifiedOn
deletedOn
}
}
Variables
{"id": 4}
Response
{
"data": {
"tag": {
"id": 4,
"name": "xyz789",
"description": "xyz789",
"color": "xyz789",
"type": "Box",
"taggedResources": [Box],
"base": Base,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"deletedOn": "2016-10-17T01:08:03"
}
}
}
topProductsCheckedOut
Response
Returns a TopProductsCheckedOutData
Arguments
| Name | Description |
|---|---|
baseId - Int!
|
Example
Query
query topProductsCheckedOut($baseId: Int!) {
topProductsCheckedOut(baseId: $baseId) {
facts {
...TopProductsCheckedOutResultFragment
}
dimensions {
...TopProductsDimensionsFragment
}
}
}
Variables
{"baseId": 123}
Response
{
"data": {
"topProductsCheckedOut": {
"facts": [TopProductsCheckedOutResult],
"dimensions": TopProductsDimensions
}
}
}
topProductsDonated
Response
Returns a TopProductsDonatedData
Arguments
| Name | Description |
|---|---|
baseId - Int!
|
Example
Query
query topProductsDonated($baseId: Int!) {
topProductsDonated(baseId: $baseId) {
facts {
...TopProductsDonatedResultFragment
}
dimensions {
...TopProductsDimensionsFragment
}
}
}
Variables
{"baseId": 987}
Response
{
"data": {
"topProductsDonated": {
"facts": [TopProductsDonatedResult],
"dimensions": TopProductsDimensions
}
}
}
transferAgreement
Description
Return TransferAgreement with specified ID. Clients are authorized to view an agreement if they're member of at least one of the agreement's source or target bases
Response
Returns a TransferAgreement
Arguments
| Name | Description |
|---|---|
id - ID!
|
Example
Query
query transferAgreement($id: ID!) {
transferAgreement(id: $id) {
id
sourceOrganisation {
...OrganisationFragment
}
targetOrganisation {
...OrganisationFragment
}
state
type
requestedBy {
...UserFragment
}
requestedOn
acceptedBy {
...UserFragment
}
acceptedOn
terminatedBy {
...UserFragment
}
terminatedOn
validFrom
validUntil
comment
sourceBases {
...BaseFragment
}
targetBases {
...BaseFragment
}
shipments {
...ShipmentFragment
}
}
}
Variables
{"id": "4"}
Response
{
"data": {
"transferAgreement": {
"id": "4",
"sourceOrganisation": Organisation,
"targetOrganisation": Organisation,
"state": "UnderReview",
"type": "SendingTo",
"requestedBy": User,
"requestedOn": "2016-10-17T01:08:03",
"acceptedBy": User,
"acceptedOn": "2016-10-17T01:08:03",
"terminatedBy": User,
"terminatedOn": "2016-10-17T01:08:03",
"validFrom": "2016-10-17T01:08:03",
"validUntil": "2016-10-17T01:08:03",
"comment": "abc123",
"sourceBases": [Base],
"targetBases": [Base],
"shipments": [Shipment]
}
}
}
transferAgreements
Description
Return all TransferAgreements that the client is authorized to view. Without any arguments, return transfer agreements that involve client's organisation, regardless of agreement state. Optionally filter for agreements of certain state(s).
Response
Returns [TransferAgreement!]!
Arguments
| Name | Description |
|---|---|
states - [TransferAgreementState!]
|
Example
Query
query transferAgreements($states: [TransferAgreementState!]) {
transferAgreements(states: $states) {
id
sourceOrganisation {
...OrganisationFragment
}
targetOrganisation {
...OrganisationFragment
}
state
type
requestedBy {
...UserFragment
}
requestedOn
acceptedBy {
...UserFragment
}
acceptedOn
terminatedBy {
...UserFragment
}
terminatedOn
validFrom
validUntil
comment
sourceBases {
...BaseFragment
}
targetBases {
...BaseFragment
}
shipments {
...ShipmentFragment
}
}
}
Variables
{"states": ["UnderReview"]}
Response
{
"data": {
"transferAgreements": [
{
"id": "4",
"sourceOrganisation": Organisation,
"targetOrganisation": Organisation,
"state": "UnderReview",
"type": "SendingTo",
"requestedBy": User,
"requestedOn": "2016-10-17T01:08:03",
"acceptedBy": User,
"acceptedOn": "2016-10-17T01:08:03",
"terminatedBy": User,
"terminatedOn": "2016-10-17T01:08:03",
"validFrom": "2016-10-17T01:08:03",
"validUntil": "2016-10-17T01:08:03",
"comment": "abc123",
"sourceBases": [Base],
"targetBases": [Base],
"shipments": [Shipment]
}
]
}
}
user
Description
Return User with specified ID. Some fields might be restricted.
Example
Query
query user($id: ID) {
user(id: $id) {
id
organisation {
...OrganisationFragment
}
name
email
validFirstDay
validLastDay
bases {
...BaseFragment
}
lastLogin
lastAction
}
}
Variables
{"id": "4"}
Response
{
"data": {
"user": {
"id": 4,
"organisation": Organisation,
"name": "xyz789",
"email": "abc123",
"validFirstDay": "2020-11-20",
"validLastDay": "2020-11-20",
"bases": [Base],
"lastLogin": "2016-10-17T01:08:03",
"lastAction": "2016-10-17T01:08:03"
}
}
}
users
Description
Return all Users. Accessible for god users only
Response
Returns [User!]!
Example
Query
query users {
users {
id
organisation {
...OrganisationFragment
}
name
email
validFirstDay
validLastDay
bases {
...BaseFragment
}
lastLogin
lastAction
}
}
Response
{
"data": {
"users": [
{
"id": 4,
"organisation": Organisation,
"name": "xyz789",
"email": "abc123",
"validFirstDay": "2020-11-20",
"validLastDay": "2020-11-20",
"bases": [Base],
"lastLogin": "2016-10-17T01:08:03",
"lastAction": "2016-10-17T01:08:03"
}
]
}
}
Types
Base
Description
Representation of a base. The base is managed by a specific Organisation.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
organisation - Organisation!
|
|
deletedOn - Datetime
|
|
beneficiaries - BeneficiaryPage
|
List of all Beneficiaries registered in this base. Optionally pass filters |
Arguments
|
|
currencyName - String
|
|
locations - [ClassicLocation!]!
|
List of all non-deleted ClassicLocations present in this base |
products - [Product!]!
|
List of all non-deleted Products registered in this base |
Arguments
|
|
tags - [Tag!]
|
List of all non-deleted Tags registered in this base. Optionally filter for a resource type |
Arguments
|
|
distributionSpots - [DistributionSpot!]!
|
|
distributionEvents - [DistributionEvent!]!
|
|
Arguments
|
|
distributionEventsBeforeReturnedFromDistributionState - [DistributionEvent!]!
|
|
distributionEventsInReturnedFromDistributionState - [DistributionEvent!]!
|
|
distributionEventsTrackingGroups - [DistributionEventsTrackingGroup!]!
|
|
Arguments |
|
distributionEventsStatistics - [DistributionEventsStatistics!]!
|
|
Example
{
"id": 4,
"name": "Lesvos",
"organisation": Organisation,
"deletedOn": "2016-10-17T01:08:03",
"beneficiaries": BeneficiaryPage,
"currencyName": "drops",
"locations": [ClassicLocation],
"products": [Product],
"tags": [Tag],
"distributionSpots": [DistributionSpot],
"distributionEvents": [DistributionEvent],
"distributionEventsBeforeReturnedFromDistributionState": [
DistributionEvent
],
"distributionEventsInReturnedFromDistributionState": [
DistributionEvent
],
"distributionEventsTrackingGroups": [
DistributionEventsTrackingGroup
],
"distributionEventsStatistics": [
DistributionEventsStatistics
]
}
BasicDimensionInfo
Possible Types
| BasicDimensionInfo Types |
|---|
Example
{"id": 987, "name": "abc123"}
Beneficiary
Description
Representation of a beneficiary. The beneficiary is registered in a specific Base.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
firstName - String!
|
|
lastName - String!
|
|
dateOfBirth - Date
|
|
age - Int
|
If dateOfBirth is not set, age will be null. |
comment - String
|
|
base - Base
|
|
groupIdentifier - String!
|
All members of a family have the same group identifier |
gender - HumanGender
|
|
languages - [Language!]
|
|
familyHead - Beneficiary
|
Null if this beneficiary is the family head |
active - Boolean!
|
|
isVolunteer - Boolean!
|
|
signed - Boolean!
|
|
registered - Boolean!
|
|
phoneNumber - String
|
|
signature - String
|
|
dateOfSignature - Date
|
|
tokens - Int
|
Number of tokens the beneficiary holds (sum of all transaction values) |
transactions - [Transaction!]
|
List of all Transactions that this beneficiary executed |
createdBy - User
|
|
createdOn - Datetime
|
|
lastModifiedBy - User
|
|
lastModifiedOn - Datetime
|
|
tags - [Tag!]
|
Example
{
"id": 4,
"firstName": "Some",
"lastName": "One",
"dateOfBirth": "2020-11-20",
"age": 25,
"comment": "very nice",
"base": Base,
"groupIdentifier": "abc123",
"gender": "Male",
"languages": ["nl"],
"familyHead": Beneficiary,
"active": true,
"isVolunteer": true,
"signed": true,
"registered": true,
"phoneNumber": "abc123",
"signature": "xyz789",
"dateOfSignature": "2020-11-20",
"tokens": 123,
"transactions": [Transaction],
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"tags": [Tag]
}
BeneficiaryDemographicsData
Fields
| Field Name | Description |
|---|---|
facts - [BeneficiaryDemographicsResult]
|
|
dimensions - BeneficiaryDemographicsDimensions
|
Example
{
"facts": [BeneficiaryDemographicsResult],
"dimensions": BeneficiaryDemographicsDimensions
}
BeneficiaryDemographicsDimensions
Fields
| Field Name | Description |
|---|---|
tag - [TagDimensionInfo]
|
Example
{"tag": [TagDimensionInfo]}
BeneficiaryDemographicsResult
BeneficiaryPage
Description
Utility type holding a page of Beneficiaries.
Fields
| Field Name | Description |
|---|---|
elements - [Beneficiary!]
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"elements": [Beneficiary],
"pageInfo": PageInfo,
"totalCount": 123
}
Boolean
Description
The Boolean scalar type represents true or false.
Example
true
Box
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
labelIdentifier - String!
|
Sequence of numbers for identifying the box, usually written on box label |
location - Location
|
If the client is not authorized to access the location's base, return null instead of raising an authorization error. This enables the target side of a shipment to scan boxes that are not yet reconciliated into their stock (but still registered at the source side) |
distributionEvent - DistributionEvent
|
|
numberOfItems - Int
|
|
product - Product
|
If the client is not authorized to access the product's base, return null instead of raising an authorization error. This enables the target side of a shipment to scan boxes that are not yet reconciliated into their stock (but still registered at the source side) |
size - Size
|
If the box holds a 'measure' product (i.e. classified by a package measure like 500gr), its size is null |
displayUnit - Unit
|
Information about the unit that the measure shall be displayed in. If the box holds a product with size (e.g. clothing), its unit is null |
measureValue - Float
|
The value of the measure, expressed in unit. If the box holds a product with size (e.g. clothing), its measure value is null |
state - BoxState!
|
|
qrCode - QrCode
|
|
createdBy - User
|
|
createdOn - Datetime
|
|
lastModifiedBy - User
|
|
lastModifiedOn - Datetime
|
|
deletedOn - Datetime
|
|
comment - String
|
|
tags - [Tag!]
|
|
history - [HistoryEntry!]
|
Sorted by date, newest first |
shipmentDetail - ShipmentDetail
|
Returns null if box is not part of an active shipment |
Example
{
"id": "4",
"labelIdentifier": "abc123",
"location": Location,
"distributionEvent": DistributionEvent,
"numberOfItems": 987,
"product": Product,
"size": "XL",
"displayUnit": Unit,
"measureValue": 987.65,
"state": "InStock",
"qrCode": QrCode,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"deletedOn": "2016-10-17T01:08:03",
"comment": "very new",
"tags": [Tag],
"history": [HistoryEntry],
"shipmentDetail": ShipmentDetail
}
BoxPage
BoxResult
Types
| Union Types |
|---|
Example
Box
BoxState
Description
Classificators for Box state.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"InStock"
ClassicLocation
Description
Representation of a classic physical location used to store Boxes (e.g. a warehouse). The location is part of a specific Base.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
base - Base
|
|
name - String
|
|
seq - Int
|
Used for ordering purposes |
isShop - Boolean!
|
|
isStockroom - Boolean!
|
|
boxes - BoxPage
|
List of all Boxes (incl. deleted) in this classic location |
Arguments
|
|
defaultBoxState - BoxState
|
Default state for boxes in this classic location |
createdBy - User
|
|
createdOn - Datetime
|
|
lastModifiedBy - User
|
|
lastModifiedOn - Datetime
|
|
Example
{
"id": 4,
"base": Base,
"name": "abc123",
"seq": 123,
"isShop": false,
"isStockroom": true,
"boxes": BoxPage,
"defaultBoxState": "InStock",
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03"
}
CreatedBoxDataDimensions
Fields
| Field Name | Description |
|---|---|
product - [ProductDimensionInfo]
|
|
category - [DimensionInfo]
|
|
tag - [TagDimensionInfo]
|
Example
{
"product": [ProductDimensionInfo],
"category": [DimensionInfo],
"tag": [TagDimensionInfo]
}
CreatedBoxesData
Fields
| Field Name | Description |
|---|---|
facts - [CreatedBoxesResult]
|
|
dimensions - CreatedBoxDataDimensions
|
Example
{
"facts": [CreatedBoxesResult],
"dimensions": CreatedBoxDataDimensions
}
CreatedBoxesResult
DataCube
Fields
| Field Name | Description |
|---|---|
facts - [Result]
|
|
dimensions - Dimensions
|
Possible Types
| DataCube Types |
|---|
Example
{
"facts": [BeneficiaryDemographicsResult],
"dimensions": BeneficiaryDemographicsDimensions
}
Date
Example
"2020-11-20"
Datetime
Example
"2016-10-17T01:08:03"
DimensionInfo
Dimensions
Example
BeneficiaryDemographicsDimensions
DistributionEvent
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
distributionSpot - DistributionSpot
|
|
name - String
|
|
state - DistributionEventState!
|
|
plannedStartDateTime - Datetime!
|
|
plannedEndDateTime - Datetime!
|
|
packingListEntries - [PackingListEntry!]!
|
|
boxes - [Box!]!
|
|
unboxedItemsCollections - [UnboxedItemsCollection!]!
|
|
distributionEventsTrackingGroup - DistributionEventsTrackingGroup
|
Example
{
"id": "4",
"distributionSpot": DistributionSpot,
"name": "xyz789",
"state": "Planning",
"plannedStartDateTime": "2016-10-17T01:08:03",
"plannedEndDateTime": "2016-10-17T01:08:03",
"packingListEntries": [PackingListEntry],
"boxes": [Box],
"unboxedItemsCollections": [UnboxedItemsCollection],
"distributionEventsTrackingGroup": DistributionEventsTrackingGroup
}
DistributionEventState
Description
TODO: Add description here once specs are final/confirmed
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Planning"
DistributionEventTrackingFlowDirection
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"In"
DistributionEventsStatistics
Fields
| Field Name | Description |
|---|---|
productName - String!
|
|
genderLabel - String!
|
|
categoryLabel - String!
|
|
sizeLabel - String!
|
|
inflow - Int!
|
|
outflow - Int!
|
|
earliestPossibleDistroDate - String!
|
|
latestPossibleDistroDate - String!
|
|
potentiallyInvolvedDistributionSpots - String!
|
|
involvedDistributionEventIds - String!
|
|
distroEventTrackingGroupId - String!
|
|
productId - String!
|
|
sizeId - String!
|
Example
{
"productName": "abc123",
"genderLabel": "abc123",
"categoryLabel": "abc123",
"sizeLabel": "xyz789",
"inflow": 987,
"outflow": 987,
"earliestPossibleDistroDate": "abc123",
"latestPossibleDistroDate": "xyz789",
"potentiallyInvolvedDistributionSpots": "abc123",
"involvedDistributionEventIds": "xyz789",
"distroEventTrackingGroupId": "abc123",
"productId": "abc123",
"sizeId": "abc123"
}
DistributionEventsTrackingEntry
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
product - Product!
|
|
size - Size!
|
|
numberOfItems - Int!
|
|
distributionEventsTrackingGroup - DistributionEventsTrackingGroup!
|
|
dateTimeOfTracking - Datetime!
|
|
flowDirection - DistributionEventTrackingFlowDirection!
|
Example
{
"id": 4,
"product": Product,
"size": Size,
"numberOfItems": 123,
"distributionEventsTrackingGroup": DistributionEventsTrackingGroup,
"dateTimeOfTracking": "2016-10-17T01:08:03",
"flowDirection": "In"
}
DistributionEventsTrackingGroup
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
state - DistributionEventsTrackingGroupState!
|
|
distributionEvents - [DistributionEvent!]!
|
|
distributionEventsTrackingEntries - [DistributionEventsTrackingEntry!]!
|
|
createdOn - Datetime!
|
Example
{
"id": "4",
"state": "InProgress",
"distributionEvents": [DistributionEvent],
"distributionEventsTrackingEntries": [
DistributionEventsTrackingEntry
],
"createdOn": "2016-10-17T01:08:03"
}
DistributionEventsTrackingGroupState
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"InProgress"
DistributionSpot
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String
|
|
base - Base
|
|
boxes - BoxPage
|
Not implemented, only for compatibility with Location interface |
Arguments
|
|
comment - String!
|
|
latitude - Float
|
|
longitude - Float
|
|
distributionEvents - [DistributionEvent!]!
|
|
Example
{
"id": 4,
"name": "abc123",
"base": Base,
"boxes": BoxPage,
"comment": "abc123",
"latitude": 123.45,
"longitude": 987.65,
"distributionEvents": [DistributionEvent]
}
FilterBaseInput
Fields
| Input Field | Description |
|---|---|
includeDeleted - Boolean
|
Example
{"includeDeleted": true}
FilterBeneficiaryInput
Description
Optional filter values when retrieving Beneficiaries. If several fields are defined (not null), they are combined into a filter expression using logical AND (i.e. the filter returns only elements for which all fields are true).
Fields
| Input Field | Description |
|---|---|
createdFrom - Date
|
Filter for all beneficiaries who were created on this date (incl.), or later. |
createdUntil - Date
|
Filter for all beneficiaries who were created on this date (incl.), or earlier. |
active - Boolean
|
|
isVolunteer - Boolean
|
|
registered - Boolean
|
|
pattern - String
|
Filter for all beneficiaries where pattern is (case-insensitive) part of first name, last name, or comment, or where pattern matches the group identifier |
Example
{
"createdFrom": "2020-11-20",
"createdUntil": "2020-11-20",
"active": true,
"isVolunteer": true,
"registered": true,
"pattern": "xyz789"
}
FilterBoxInput
Description
Optional filter values when retrieving Boxes. If several fields are defined (not null), they are combined into a filter expression using logical AND (i.e. the filter returns only elements for which all fields are true).
Fields
| Input Field | Description |
|---|---|
states - [BoxState!]
|
Filter for all boxes that have one of the specified states. |
lastModifiedFrom - Date
|
Filter for all boxes that who were last modified on this date (incl.), or later. |
lastModifiedUntil - Date
|
Filter for all boxes that who were last modified on this date (incl.), or earlier. |
productGender - ProductGender
|
|
productCategoryId - Int
|
|
productId - Int
|
|
sizeId - Int
|
|
tagIds - [Int!]
|
Filter for all boxes that have at least one of the specified tags. |
Example
{
"states": ["InStock"],
"lastModifiedFrom": "2020-11-20",
"lastModifiedUntil": "2020-11-20",
"productGender": "Men",
"productCategoryId": 123,
"productId": 987,
"sizeId": 987,
"tagIds": [123]
}
FilterProductInput
Fields
| Input Field | Description |
|---|---|
includeDeleted - Boolean
|
|
type - ProductTypeFilter
|
Example
{"includeDeleted": true, "type": "Custom"}
Float
Description
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
987.65
HistoryEntry
HumanGender
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"Male"
ID
Description
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
Example
"4"
InsufficientPermissionError
Fields
| Field Name | Description |
|---|---|
name - String!
|
e.g. 'product:write' missing |
Example
{"name": "abc123"}
Int
Description
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
123
ItemsCollection
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
product - Product
|
|
size - Size
|
|
numberOfItems - Int
|
|
location - Location
|
|
distributionEvent - DistributionEvent
|
Possible Types
| ItemsCollection Types |
|---|
Example
{
"id": "4",
"product": Product,
"size": Size,
"numberOfItems": 123,
"location": Location,
"distributionEvent": DistributionEvent
}
Language
Description
Language codes.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"nl"
Location
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
base - Base
|
|
name - String
|
|
boxes - BoxPage
|
|
Arguments
|
|
Possible Types
| Location Types |
|---|
Example
{
"id": 4,
"base": Base,
"name": "abc123",
"boxes": BoxPage
}
Metrics
Fields
| Field Name | Description |
|---|---|
numberOfFamiliesServed - Int
|
Return number of families served by client's organisation in optional date range. If after and before are specified, construct date range for filtering. If one of after or before is specified, construct half-open date range. If none is specified, the result is an all-time number. |
numberOfBeneficiariesServed - Int
|
Like numberOfFamiliesServed but add up all members of served families |
numberOfSales - Int
|
Return number of sales performed by client's organisation in optional date range. See numberOfFamiliesServed about using the after and before parameters. |
stockOverview - StockOverview
|
Return number of boxes, and number of contained items, managed by client's organisation. |
Example
{
"numberOfFamiliesServed": 987,
"numberOfBeneficiariesServed": 987,
"numberOfSales": 987,
"stockOverview": StockOverview
}
MovedBoxDataDimensions
Fields
| Field Name | Description |
|---|---|
category - [DimensionInfo]
|
|
size - [DimensionInfo]
|
|
tag - [TagDimensionInfo!]!
|
|
target - [TargetDimensionInfo]
|
|
dimension - [DimensionInfo!]!
|
'Dimension' in the sense of Mass or Volume |
Example
{
"category": [DimensionInfo],
"size": [DimensionInfo],
"tag": [TagDimensionInfo],
"target": [TargetDimensionInfo],
"dimension": [DimensionInfo]
}
MovedBoxesData
Fields
| Field Name | Description |
|---|---|
facts - [MovedBoxesResult]
|
|
dimensions - MovedBoxDataDimensions
|
Example
{
"facts": [MovedBoxesResult],
"dimensions": MovedBoxDataDimensions
}
MovedBoxesResult
Description
A box can be moved in various ways:
- within a base (location ID with InStock/Donated)
- because it's lost (Lost)
- because it becomes scrap (Scrap)
- because it's about to be shipped (target base ID with MarkedForShipment)
- because it's being shipped (target base ID with InTransit/Receiving)
Fields
| Field Name | Description |
|---|---|
movedOn - Date!
|
|
targetId - ID!
|
|
categoryId - Int!
|
|
productName - String!
|
|
gender - ProductGender!
|
|
sizeId - Int
|
Null for boxes with measure-product |
dimensionId - Int
|
'Dimension' in the sense of Mass or Volume; null for boxes with size-product |
absoluteMeasureValue - Float
|
Null for boxes with size-product |
organisationName - String
|
Shipment target organisation name; null for BoxState/OutgoingLocation target types |
tagIds - [Int!]
|
|
itemsCount - Int!
|
|
boxesCount - Int!
|
Example
{
"movedOn": "2020-11-20",
"targetId": "4",
"categoryId": 123,
"productName": "abc123",
"gender": "Men",
"sizeId": 987,
"dimensionId": 987,
"absoluteMeasureValue": 987.65,
"organisationName": "abc123",
"tagIds": [987],
"itemsCount": 123,
"boxesCount": 123
}
Organisation
Description
Representation of an organisation.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
bases - [Base!]
|
List of all non-deleted Bases managed by this organisation. Accessible for any authenticated user |
Arguments
|
|
Example
{
"id": "4",
"name": "Helpful Helpers",
"bases": [Base]
}
PackingListEntry
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
product - Product
|
|
size - Size
|
|
numberOfItems - Int!
|
|
matchingPackedItemsCollections - [ItemsCollection!]!
|
|
state - PackingListEntryState!
|
Example
{
"id": "4",
"product": Product,
"size": Size,
"numberOfItems": 123,
"matchingPackedItemsCollections": [ItemsCollection],
"state": "NotStarted"
}
PackingListEntryState
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"NotStarted"
PageInfo
Description
Additional information passed along in *Page types. The client shall use the has*Page fields to determine whether to fetch more data.
Fields
| Field Name | Description |
|---|---|
hasPreviousPage - Boolean!
|
If true, a previous page is available. |
hasNextPage - Boolean!
|
If true, a next page is available. |
startCursor - String!
|
An identifier for the first element on the page. The client shall use it for the PaginationInput.before field |
endCursor - String!
|
An identifier for the last element on the page. The client shall use it for the PaginationInput.after field |
Example
{
"hasPreviousPage": true,
"hasNextPage": true,
"startCursor": "xyz789",
"endCursor": "abc123"
}
PaginationInput
Description
Optional input for queries/fields that return a page of elements. The specified fields must be either none OR first OR after, first OR before, last. Other combinations result in unexpected behavior and/or errors. The default page size (first and last, resp.) is 50. This format is inspired by https://relay.dev/graphql/connections.htm#sec-Forward-pagination-arguments
Fields
| Input Field | Description |
|---|---|
after - String
|
Indicate requesting paginating of the first X elements after this cursor. By default, the first relevant element of the database. See also PageInfo.endCursor |
first - Int
|
|
before - String
|
Indicate requesting paginating of the last X elements before this cursor. See also PageInfo.startCursor |
last - Int
|
Example
{"after": "c00ffeeb33f", "first": 50, "before": null, "last": null}
Product
Description
Representation of a product, containing information about ProductCategory, size, and ProductGender. The product is registered in a specific Base.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
type - ProductType!
|
|
category - ProductCategory!
|
|
sizeRange - SizeRange!
|
|
base - Base
|
|
standardProduct - StandardProduct
|
null for products of type Custom |
price - Float
|
|
gender - ProductGender
|
|
comment - String
|
|
instockItemsCount - Int!
|
Number of items of all non-deleted InStock boxes containing the product. |
transferItemsCount - Int!
|
Number of items of all transfer boxes containing the product. |
inShop - Boolean!
|
|
createdBy - User
|
|
createdOn - Datetime
|
|
lastModifiedBy - User
|
|
lastModifiedOn - Datetime
|
|
deletedOn - Datetime
|
Example
{
"id": 4,
"name": "gloves",
"type": "Custom",
"category": ProductCategory,
"sizeRange": SizeRange,
"base": Base,
"standardProduct": StandardProduct,
"price": 987.65,
"gender": "Men",
"comment": "abc123",
"instockItemsCount": 123,
"transferItemsCount": 123,
"inShop": true,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"deletedOn": "2016-10-17T01:08:03"
}
ProductCategory
Description
Representation of a product category.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
products - ProductPage
|
List of all products registered in bases the client is authorized to view. |
Arguments
|
|
hasGender - Boolean!
|
Non-clothing categories don't have a product gender. |
Example
{
"id": 4,
"name": "Clothing",
"products": ProductPage,
"hasGender": true
}
ProductDimensionInfo
Fields
| Field Name | Description |
|---|---|
id - Int
|
|
name - String
|
|
gender - ProductGender
|
Example
{
"id": 987,
"name": "xyz789",
"gender": "Men"
}
ProductGender
Description
Classificators for Product gender.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Men"
ProductPage
Description
Utility type holding a page of Products.
Fields
| Field Name | Description |
|---|---|
elements - [Product!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"elements": [Product],
"pageInfo": PageInfo,
"totalCount": 123
}
ProductType
Description
Classificators for Product type.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"Custom"
ProductTypeFilter
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"Custom"
QrCode
Description
Representation of a QR code, possibly associated with a Box.
Example
{
"id": 4,
"code": "abc123",
"box": Box,
"createdOn": "2016-10-17T01:08:03"
}
QrCodeResult
Types
| Union Types |
|---|
Example
QrCode
ResourceDoesNotExistError
Result
Example
BeneficiaryDemographicsResult
Shipment
Description
Representation of a shipment of boxes between two bases of two distinct organisations. The content is tracked via ShipmentDetails
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
labelIdentifier - String!
|
Unique identifier of the shipment, constructed from ID, start date, source and target base names. E.g. S042-230815-THxLE |
sourceBase - Base!
|
|
targetBase - Base!
|
|
state - ShipmentState
|
|
startedBy - User!
|
|
startedOn - Datetime!
|
|
sentBy - User
|
|
sentOn - Datetime
|
|
receivingStartedBy - User
|
|
receivingStartedOn - Datetime
|
|
completedBy - User
|
|
completedOn - Datetime
|
|
canceledBy - User
|
|
canceledOn - Datetime
|
|
transferAgreement - TransferAgreement
|
If no agreement associated with the shipment, it's an intra-org one |
details - [ShipmentDetail!]!
|
Example
{
"id": 4,
"labelIdentifier": "abc123",
"sourceBase": Base,
"targetBase": Base,
"state": "Preparing",
"startedBy": User,
"startedOn": "2016-10-17T01:08:03",
"sentBy": User,
"sentOn": "2016-10-17T01:08:03",
"receivingStartedBy": User,
"receivingStartedOn": "2016-10-17T01:08:03",
"completedBy": User,
"completedOn": "2016-10-17T01:08:03",
"canceledBy": User,
"canceledOn": "2016-10-17T01:08:03",
"transferAgreement": TransferAgreement,
"details": [ShipmentDetail]
}
ShipmentDetail
Description
Representation of a box in a shipment. Boxes might be added or removed on the source side, and received or marked as lost on the target side. All properties (product, location, size, quantity) at source and target side are tracked here
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
sourceProduct - Product
|
|
targetProduct - Product
|
|
sourceLocation - ClassicLocation
|
|
targetLocation - ClassicLocation
|
|
sourceSize - Size
|
|
targetSize - Size
|
|
sourceQuantity - Int
|
|
targetQuantity - Int
|
|
box - Box!
|
|
shipment - Shipment!
|
|
createdBy - User!
|
|
createdOn - Datetime!
|
|
removedBy - User
|
|
removedOn - Datetime
|
|
lostBy - User
|
|
lostOn - Datetime
|
|
receivedBy - User
|
|
receivedOn - Datetime
|
|
autoMatchingTargetProduct - Product
|
Return matching target product if the source product is an ASSORT product with an existing instantiation in the target base; null if no matching possible |
Example
{
"id": 4,
"sourceProduct": Product,
"targetProduct": Product,
"sourceLocation": ClassicLocation,
"targetLocation": ClassicLocation,
"sourceSize": Size,
"targetSize": Size,
"sourceQuantity": 987,
"targetQuantity": 987,
"box": Box,
"shipment": Shipment,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"removedBy": User,
"removedOn": "2016-10-17T01:08:03",
"lostBy": User,
"lostOn": "2016-10-17T01:08:03",
"receivedBy": User,
"receivedOn": "2016-10-17T01:08:03",
"autoMatchingTargetProduct": Product
}
ShipmentState
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Preparing"
Size
SizeRange
Description
Representation of group of sizes (e.g. clothing sizes "S, M, L, XL"), or of a dimension (mass or volume).
Example
{
"id": 4,
"name": "xyz789",
"label": "xyz789",
"sizes": [Size],
"units": [Unit]
}
StandardProduct
Description
Representation of a standard product, containing information about ProductCategory, size, and ProductGender. Users can enable this standard product for their bases which creates a standard product instantiation.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
category - ProductCategory!
|
|
sizeRange - SizeRange!
|
|
gender - ProductGender!
|
|
version - Int!
|
|
instantiation - Product
|
If the standard product is enabled in the current base, this field provides the corresponding product instantiation. The field is only set in the result of the standardProducts query with non-null baseId input, and null otherwise. |
addedBy - User
|
|
addedOn - Datetime
|
|
deprecatedBy - User
|
|
deprecatedOn - Datetime
|
|
precededByProduct - StandardProduct
|
|
supercededByProduct - StandardProduct
|
Example
{
"id": "4",
"name": "xyz789",
"category": ProductCategory,
"sizeRange": SizeRange,
"gender": "Men",
"version": 987,
"instantiation": Product,
"addedBy": User,
"addedOn": "2016-10-17T01:08:03",
"deprecatedBy": User,
"deprecatedOn": "2016-10-17T01:08:03",
"precededByProduct": StandardProduct,
"supercededByProduct": StandardProduct
}
StandardProductPage
Description
Utility type holding a page of StandardProducts.
Fields
| Field Name | Description |
|---|---|
elements - [StandardProduct!]!
|
|
pageInfo - PageInfo!
|
|
totalCount - Int!
|
Example
{
"elements": [StandardProduct],
"pageInfo": PageInfo,
"totalCount": 987
}
StandardProductResult
Types
| Union Types |
|---|
Example
StandardProduct
StandardProductsResult
Types
| Union Types |
|---|
Example
StandardProductPage
StockOverview
StockOverviewData
Fields
| Field Name | Description |
|---|---|
facts - [StockOverviewResult!]!
|
|
dimensions - StockOverviewDataDimensions!
|
Example
{
"facts": [StockOverviewResult],
"dimensions": StockOverviewDataDimensions
}
StockOverviewDataDimensions
Fields
| Field Name | Description |
|---|---|
category - [DimensionInfo!]!
|
|
size - [DimensionInfo!]!
|
|
tag - [TagDimensionInfo!]!
|
|
location - [DimensionInfo!]!
|
|
dimension - [DimensionInfo!]!
|
'Dimension' in the sense of Mass or Volume |
Example
{
"category": [DimensionInfo],
"size": [DimensionInfo],
"tag": [TagDimensionInfo],
"location": [DimensionInfo],
"dimension": [DimensionInfo]
}
StockOverviewResult
Fields
| Field Name | Description |
|---|---|
categoryId - Int!
|
|
productName - String!
|
|
gender - ProductGender!
|
|
sizeId - Int
|
Null for boxes with measure-product |
dimensionId - Int
|
'Dimension' in the sense of Mass or Volume; null for boxes with size-product |
absoluteMeasureValue - Float
|
Null for boxes with size-product |
tagIds - [Int!]
|
|
locationId - Int!
|
|
boxState - BoxState!
|
|
itemsCount - Int!
|
|
boxesCount - Int!
|
Example
{
"categoryId": 123,
"productName": "abc123",
"gender": "Men",
"sizeId": 987,
"dimensionId": 987,
"absoluteMeasureValue": 987.65,
"tagIds": [987],
"locationId": 123,
"boxState": "InStock",
"itemsCount": 123,
"boxesCount": 123
}
String
Description
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"
Tag
Description
Representation of a tag.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
name - String!
|
|
description - String
|
|
color - String
|
|
type - TagType!
|
|
taggedResources - [TaggableResource!]
|
List of boxes and/or beneficiaries that have this tag assigned |
base - Base!
|
|
createdBy - User
|
|
createdOn - Datetime
|
|
lastModifiedBy - User
|
|
lastModifiedOn - Datetime
|
|
deletedOn - Datetime
|
Example
{
"id": 4,
"name": "xyz789",
"description": "xyz789",
"color": "abc123",
"type": "Box",
"taggedResources": [Box],
"base": Base,
"createdBy": User,
"createdOn": "2016-10-17T01:08:03",
"lastModifiedBy": User,
"lastModifiedOn": "2016-10-17T01:08:03",
"deletedOn": "2016-10-17T01:08:03"
}
TagDimensionInfo
TagType
Description
Classificators for Tag type.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"Box"
TaggableResource
Description
Union for resources that tags can be applied to.
Types
| Union Types |
|---|
Example
Box
TaggableResourceType
Description
Classificator for resources that a Tag can be applied to (according to TaggableResource).
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"Box"
TargetDimensionInfo
Fields
| Field Name | Description |
|---|---|
id - ID
|
|
name - String
|
|
type - TargetType
|
Example
{
"id": 4,
"name": "abc123",
"type": "Shipment"
}
TargetType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"Shipment"
TopProductsCheckedOutData
Fields
| Field Name | Description |
|---|---|
facts - [TopProductsCheckedOutResult]
|
|
dimensions - TopProductsDimensions
|
Example
{
"facts": [TopProductsCheckedOutResult],
"dimensions": TopProductsDimensions
}
TopProductsCheckedOutResult
TopProductsDimensions
Fields
| Field Name | Description |
|---|---|
size - [DimensionInfo]
|
Always null for topProductsCheckedOut query |
product - [ProductDimensionInfo]
|
|
category - [DimensionInfo]
|
Example
{
"size": [DimensionInfo],
"product": [ProductDimensionInfo],
"category": [DimensionInfo]
}
TopProductsDonatedData
Fields
| Field Name | Description |
|---|---|
facts - [TopProductsDonatedResult]
|
|
dimensions - TopProductsDimensions
|
Example
{
"facts": [TopProductsDonatedResult],
"dimensions": TopProductsDimensions
}
TopProductsDonatedResult
Transaction
Description
Representation of a transaction executed by a beneficiary (spending or receiving tokens).
Example
{
"id": 4,
"beneficiary": Beneficiary,
"product": Product,
"count": 987,
"tokens": 987,
"description": "abc123",
"createdBy": User,
"createdOn": "2016-10-17T01:08:03"
}
TransferAgreement
Description
Representation of an agreement between two organisations prior to start mutual shipments.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
sourceOrganisation - Organisation!
|
|
targetOrganisation - Organisation!
|
|
state - TransferAgreementState
|
|
type - TransferAgreementType!
|
|
requestedBy - User!
|
|
requestedOn - Datetime!
|
|
acceptedBy - User
|
|
acceptedOn - Datetime
|
|
terminatedBy - User
|
|
terminatedOn - Datetime
|
|
validFrom - Datetime!
|
|
validUntil - Datetime
|
|
comment - String
|
|
sourceBases - [Base!]
|
List of all non-deleted bases of the source organisation included in the agreement |
Arguments
|
|
targetBases - [Base!]
|
List of all non-deleted bases of the target organisation included in the agreement |
Arguments
|
|
shipments - [Shipment!]!
|
|
Example
{
"id": 4,
"sourceOrganisation": Organisation,
"targetOrganisation": Organisation,
"state": "UnderReview",
"type": "SendingTo",
"requestedBy": User,
"requestedOn": "2016-10-17T01:08:03",
"acceptedBy": User,
"acceptedOn": "2016-10-17T01:08:03",
"terminatedBy": User,
"terminatedOn": "2016-10-17T01:08:03",
"validFrom": "2016-10-17T01:08:03",
"validUntil": "2016-10-17T01:08:03",
"comment": "abc123",
"sourceBases": [Base],
"targetBases": [Base],
"shipments": [Shipment]
}
TransferAgreementState
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"UnderReview"
TransferAgreementType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Example
"SendingTo"
UnboxedItemsCollection
Example
{
"id": "4",
"product": Product,
"size": Size,
"numberOfItems": 987,
"label": "abc123",
"location": Location,
"distributionEvent": DistributionEvent
}
Unit
User
Description
Representation of a boxtribute user.
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
organisation - Organisation
|
The Organisation the user is a member of. Meaningful only if the currently authenticated user queries themselves |
name - String
|
First and last name. Accessible to any authenticated user |
email - String
|
Available only if the currently authenticated user queries themselves |
validFirstDay - Date
|
|
validLastDay - Date
|
|
bases - [Base]
|
List of all Bases this user can access. Meaningful only if the currently authenticated user queries themselves |
lastLogin - Datetime
|
|
lastAction - Datetime
|
Example
{
"id": "4",
"organisation": Organisation,
"name": "abc123",
"email": "abc123",
"validFirstDay": "2020-11-20",
"validLastDay": "2020-11-20",
"bases": [Base],
"lastLogin": "2016-10-17T01:08:03",
"lastAction": "2016-10-17T01:08:03"
}