MENU navbar-image

Introduction

This documentation aims to provide all the information you need to work with our API.

Base URL

https://api.beep.nl/

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer your-token".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token by enabling the development option of your browser and logging in at app.beep.nl. Then get your api_token from the /authenticate response and use it as your Bearer [api_token].

Endpoints

Display a listing of the resource.

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/hive-tags" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/hive-tags"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/hive-tags

Store a newly created resource in storage.

Example request:
curl --request POST \
    "https://api.beep.nl/api/hive-tags" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"tag\": \"possimus\",
    \"router_link\": \"corrupti\",
    \"hive_id\": 12,
    \"action_id\": 2
}"
const url = new URL(
    "https://api.beep.nl/api/hive-tags"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "tag": "possimus",
    "router_link": "corrupti",
    "hive_id": 12,
    "action_id": 2
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/hive-tags

Body Parameters

tag  string  

router_link  string  

hive_id  integer optional  

action_id  integer optional  

Display the specified resource.

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/hive-tags/eos" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/hive-tags/eos"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/hive-tags/{id}

URL Parameters

id  string  

The ID of the hive tag.

Update the specified resource in storage.

Example request:
curl --request PUT \
    "https://api.beep.nl/api/hive-tags/ratione" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"tag\": \"veniam\",
    \"router_link\": \"hic\",
    \"hive_id\": 7,
    \"action_id\": 16
}"
const url = new URL(
    "https://api.beep.nl/api/hive-tags/ratione"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "tag": "veniam",
    "router_link": "hic",
    "hive_id": 7,
    "action_id": 16
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/hive-tags/{id}

PATCH api/hive-tags/{id}

URL Parameters

id  string  

The ID of the hive tag.

Body Parameters

tag  string  

router_link  string  

hive_id  integer optional  

action_id  integer optional  

Remove the specified resource from storage.

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/hive-tags/saepe" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/hive-tags/saepe"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/hive-tags/{id}

URL Parameters

id  string  

The ID of the hive tag.

Api\AlertController

Manage your alerts

api/alerts GET List all user alerts that are not deleted.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/alerts" \
    --header "Authorization: Bearer e38v6Pb64ak5dhZEgVfDc1a" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alerts"
);

const headers = {
    "Authorization": "Bearer e38v6Pb64ak5dhZEgVfDc1a",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/alerts

api/alerts/{id} POST Create the specified user alert.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/alerts" \
    --header "Authorization: Bearer E1vekbaPcdg5Z3V4h6a86fD" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"alert_rule_id\": 16,
    \"measurement_id\": 11,
    \"alert_value\": \"sunt\",
    \"show\": true
}"
const url = new URL(
    "https://api.beep.nl/api/alerts"
);

const headers = {
    "Authorization": "Bearer E1vekbaPcdg5Z3V4h6a86fD",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "alert_rule_id": 16,
    "measurement_id": 11,
    "alert_value": "sunt",
    "show": true
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/alerts

Body Parameters

alert_rule_id  integer  

The alert rule that has been alerted for.

measurement_id  integer  

The physical quantity / unit to alert for.

alert_value  string  

The alert value.

show  boolean optional  

Set to false (0) if the alert should NOT be shown anymore.

api/alerts/{id} GET Display the specified user alert.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/alerts/13" \
    --header "Authorization: Bearer agecfk16PE86VvdaZb4hD35" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alerts/13"
);

const headers = {
    "Authorization": "Bearer agecfk16PE86VvdaZb4hD35",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/alerts/{id}

URL Parameters

id  integer  

The ID of the alert.

api/alerts/{id} PATCH Update the specified user alert.

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/alerts/19" \
    --header "Authorization: Bearer 36aahdVeD6Z4gc8kPb51Evf" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"show\": true
}"
const url = new URL(
    "https://api.beep.nl/api/alerts/19"
);

const headers = {
    "Authorization": "Bearer 36aahdVeD6Z4gc8kPb51Evf",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "show": true
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/alerts/{id}

PATCH api/alerts/{id}

URL Parameters

id  integer  

The ID of the alert.

Body Parameters

show  boolean optional  

Set to false (0) if the alert should NOT be shown anymore.

api/alerts/{id} DELETE Delete the specified user alert, or all if id === 'all', or specific id's when provided &alert_ids=1,4,7

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/alerts/18" \
    --header "Authorization: Bearer h1D3cd6avg54ZEkfbeP8V6a" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alerts/18"
);

const headers = {
    "Authorization": "Bearer h1D3cd6avg54ZEkfbeP8V6a",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/alerts/{id}

URL Parameters

id  integer  

The ID of the alert.

Api\AlertRuleController

Manage your alert rules

api/alert-rules GET List all user alert rules that are not deleted.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/alert-rules" \
    --header "Authorization: Bearer 58ZvVeE66fa3D14cPhbadgk" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alert-rules"
);

const headers = {
    "Authorization": "Bearer 58ZvVeE66fa3D14cPhbadgk",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/alert-rules

api/alert-rules/{id} POST Create the specified user alert rule.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/alert-rules" \
    --header "Authorization: Bearer aV4h8ZdED36gbcP5k1af6ev" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"reprehenderit\",
    \"description\": \"numquam\",
    \"measurement_id\": 9,
    \"calculation\": \"qui\",
    \"comparator\": \"minus\",
    \"comparison\": \"perferendis\",
    \"threshold_value\": 838333.551539176,
    \"calculation_minutes\": 17,
    \"alert_on_occurrences\": 4,
    \"alert_via_email\": true,
    \"webhook_url\": \"qui\",
    \"active\": false,
    \"exclude_months\": [
        1,
        2,
        3,
        11,
        12
    ],
    \"exclude_hours\": [
        0,
        1,
        2,
        3,
        22,
        23
    ],
    \"exclude_hive_ids\": [
        \"ad\"
    ]
}"
const url = new URL(
    "https://api.beep.nl/api/alert-rules"
);

const headers = {
    "Authorization": "Bearer aV4h8ZdED36gbcP5k1af6ev",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "reprehenderit",
    "description": "numquam",
    "measurement_id": 9,
    "calculation": "qui",
    "comparator": "minus",
    "comparison": "perferendis",
    "threshold_value": 838333.551539176,
    "calculation_minutes": 17,
    "alert_on_occurrences": 4,
    "alert_via_email": true,
    "webhook_url": "qui",
    "active": false,
    "exclude_months": [
        1,
        2,
        3,
        11,
        12
    ],
    "exclude_hours": [
        0,
        1,
        2,
        3,
        22,
        23
    ],
    "exclude_hive_ids": [
        "ad"
    ]
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/alert-rules

Body Parameters

name  string optional  

The name of the alert rule.

description  string optional  

The description of the alert rule.

measurement_id  integer  

The physical quantity / unit to alert for.

calculation  string  

Calculation to be done with measurement value(s): (min, max, ave, der, cnt) -> Minimum, Maximum, Average (mean), Derivative, Count.

comparator  string  

Logical comparator to perform with comparison calculation result and threshold_value (=, <, >, <=, >=).

comparison  string  

Comparison function to perform with measurement value(s): (val, dif, abs, abs_dif) -> Value, Difference, Absolute value, Absolute value of the difference.

threshold_value  number  

The threshold value beyond which the alert will be sent.

calculation_minutes  integer optional  

The amount of minutes used for calculating the (min, max, ave, der, cnt) of the measurement value(s). If not provided, the last recorded value is used as a reference.

alert_on_occurrences  integer optional  

Amount of occurences that a calculated value goed beyond the threshold_value. If not filled the standard is 1 (immediate alert).

alert_via_email  boolean optional  

Set to false (0) if an e-mail should NOT be sent on alert. Default: true (1).

webhook_url  string optional  

URL of optional endpoint to call on alert for web hook integration.

active  boolean optional  

Set to false (0) if the alert should NOT be active. Default: true (1).

exclude_months  string[] optional  

Array of month indexes (1-12). If not filled the standard alert is 'always on'.

exclude_hours  string[] optional  

Array of hour indexes (0-23). If not filled the standard alert is 'always on'.

exclude_hive_ids  string[] optional  

Array of Hive ids. If not filled the standard alert is evaluated on 'all hives'.

api/alert-rules/{id} GET Display the specified user alert rules.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/alert-rules/quo" \
    --header "Authorization: Bearer 64hZac6PfbDaEV8d5e1g3kv" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alert-rules/quo"
);

const headers = {
    "Authorization": "Bearer 64hZac6PfbDaEV8d5e1g3kv",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/alert-rules/{id}

URL Parameters

id  string  

The ID of the alert rule.

api/alert-rules/{id} PATCH Update the specified user alert rule.

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/alert-rules/commodi" \
    --header "Authorization: Bearer Zkha461cP5ef8VEbgv36Dad" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"neque\",
    \"description\": \"quod\",
    \"measurement_id\": 7,
    \"calculation\": \"velit\",
    \"comparator\": \"expedita\",
    \"comparison\": \"dolorem\",
    \"threshold_value\": 250256.9286042,
    \"calculation_minutes\": 4,
    \"alert_on_occurrences\": 17,
    \"alert_via_email\": false,
    \"webhook_url\": \"provident\",
    \"active\": false,
    \"exclude_months\": [
        1,
        2,
        3,
        11,
        12
    ],
    \"exclude_hours\": [
        0,
        1,
        2,
        3,
        22,
        23
    ],
    \"exclude_hive_ids\": [
        \"sed\"
    ]
}"
const url = new URL(
    "https://api.beep.nl/api/alert-rules/commodi"
);

const headers = {
    "Authorization": "Bearer Zkha461cP5ef8VEbgv36Dad",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "neque",
    "description": "quod",
    "measurement_id": 7,
    "calculation": "velit",
    "comparator": "expedita",
    "comparison": "dolorem",
    "threshold_value": 250256.9286042,
    "calculation_minutes": 4,
    "alert_on_occurrences": 17,
    "alert_via_email": false,
    "webhook_url": "provident",
    "active": false,
    "exclude_months": [
        1,
        2,
        3,
        11,
        12
    ],
    "exclude_hours": [
        0,
        1,
        2,
        3,
        22,
        23
    ],
    "exclude_hive_ids": [
        "sed"
    ]
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/alert-rules/{id}

PATCH api/alert-rules/{id}

URL Parameters

id  string  

The ID of the alert rule.

Body Parameters

name  string optional  

The name of the alert rule.

description  string optional  

The description of the alert rule.

measurement_id  integer  

The physical quantity / unit to alert for.

calculation  string  

Calculation to be done with measurement value(s): (min, max, ave, der, cnt) -> Minimum, Maximum, Average (mean), Derivative, Count.

comparator  string  

Logical comparator to perform with comparison calculation result and threshold_value (=, <, >, <=, >=).

comparison  string  

Comparison function to perform with measurement value(s): (val, dif, abs, abs_dif) -> Value, Difference, Absolute value, Absolute value of the difference.

threshold_value  number  

The threshold value beyond which the alert will be sent.

calculation_minutes  integer optional  

The amount of minutes used for calculating the (min, max, ave, der, cnt) of the measurement value(s). If not provided, the last recorded value is used as a reference.

alert_on_occurrences  integer optional  

Amount of occurences that a calculated value goed beyond the threshold_value. If not filled the standard is 1 (immediate alert).

alert_via_email  boolean optional  

Set to false (0) if an e-mail should NOT be sent on alert. Default: true (1).

webhook_url  string optional  

URL of optional endpoint to call on alert for web hook integration.

active  boolean optional  

Set to false (0) if the alert should NOT be active. Default: true (1).

exclude_months  string[] optional  

Array of month indexes (1-12). If not filled the standard alert is 'always on'.

exclude_hours  string[] optional  

Array of hour indexes (0-23). If not filled the standard alert is 'always on'.

exclude_hive_ids  string[] optional  

Array of Hive ids. If not filled the standard alert is evaluated on 'all hives'.

api/alert-rules/{id} DELETE Delete the specified user alert rule.

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/alert-rules/non" \
    --header "Authorization: Bearer ha6fgaVDZve86P1E4dbc53k" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alert-rules/non"
);

const headers = {
    "Authorization": "Bearer ha6fgaVDZve86P1E4dbc53k",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/alert-rules/{id}

URL Parameters

id  string  

The ID of the alert rule.

api/alert-rules-default GET List all default alert rules that are available.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/alert-rules-default" \
    --header "Authorization: Bearer 4kvPEh8bZ5aVaf6Degd361c" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/alert-rules-default"
);

const headers = {
    "Authorization": "Bearer 4kvPEh8bZ5aVaf6Degd361c",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/alert-rules-default

Api\CategoryController

All categories in the categorization tree used for hive inspections Only used to get listing (index) or one category (show)

api/categories Display a listing of the inspection categories.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/categories" \
    --header "Authorization: Bearer v1eagEaV6fk4hb835dZPD6c" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/categories"
);

const headers = {
    "Authorization": "Bearer v1eagEaV6fk4hb835dZPD6c",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "id": 1,
        "type": "system",
        "name": "apiary",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "list",
        "trans": {
            "en": "Apiary",
            "nl": "Bijenstand",
            "de": "Bienenstand",
            "fr": "Rucher",
            "ro": "Stupină",
            "pt": "Apiário",
            "es": "Apiario",
            "da": "Bigård"
        },
        "unit": null,
        "children": [
            {
                "id": 2,
                "type": "0",
                "name": "name",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "text",
                "trans": {
                    "en": "Name",
                    "nl": "Naam",
                    "de": "Name",
                    "fr": "Nom",
                    "ro": "Nume",
                    "pt": "Nome",
                    "es": "Nombre",
                    "da": "Navn"
                },
                "unit": null
            },
            {
                "id": 3,
                "type": "list",
                "name": "location",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "select_location",
                "trans": {
                    "en": "Location",
                    "nl": "Locatie",
                    "de": "Ort",
                    "fr": "Lieux",
                    "ro": "LocaΘ›ie",
                    "pt": "Localização",
                    "es": "Ubicación",
                    "da": "Lokation"
                },
                "unit": null
            },
            {
                "id": 12,
                "type": "1",
                "name": "number_of_bee_colonies",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "number_positive",
                "trans": {
                    "en": "Number of bee colonies",
                    "nl": "Aantal bijenvolken",
                    "de": "Anzahl an Bienenvölkern",
                    "fr": "Nombre de colonies",
                    "ro": "Număr de colonii",
                    "pt": "Número de colónias",
                    "es": "Número de colonias de abejas melíferas",
                    "da": "Antal bifamilier"
                },
                "unit": null
            },
            {
                "id": 13,
                "type": "list",
                "name": "orientation",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "options",
                "trans": {
                    "en": "Orientation",
                    "nl": "Orientatie",
                    "de": "Orientierung",
                    "fr": "Orientation",
                    "ro": "Orientare",
                    "pt": "Orientação",
                    "es": "Orientación",
                    "da": "Retning"
                },
                "unit": null
            },
            {
                "id": 25,
                "type": "list",
                "name": "status",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "options",
                "trans": {
                    "en": "Status",
                    "nl": "Status",
                    "de": "Status",
                    "fr": "Statut",
                    "ro": "Stare",
                    "pt": "Estado",
                    "es": "Estado",
                    "da": "Status"
                },
                "unit": null
            },
            {
                "id": 28,
                "type": "system",
                "name": "photo",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "image",
                "trans": {
                    "en": "Photo",
                    "nl": "Foto",
                    "de": "Foto",
                    "fr": "Photo",
                    "ro": "Poză",
                    "pt": "Fotografia",
                    "es": "Foto",
                    "da": "Foto"
                },
                "unit": null
            },
            {
                "id": 913,
                "type": null,
                "name": "can_be_removed",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "list",
                "trans": {
                    "de": "kann entfernt werden",
                    "ro": "poate fi înlΔƒturat",
                    "es": "Puede ser removido"
                },
                "unit": null
            },
            {
                "id": 932,
                "type": "checklist",
                "name": "type",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "select",
                "trans": {
                    "en": "Type",
                    "nl": "Type",
                    "de": "Typ",
                    "fr": "type",
                    "ro": "Tip",
                    "pt": "Tipo",
                    "es": "Tipo",
                    "da": "Type"
                },
                "unit": null
            }
        ]
    },
    {
        "id": 29,
        "type": "system",
        "name": "hive",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "list",
        "trans": {
            "en": "Hive",
            "nl": "Kast",
            "de": "Beute",
            "fr": "Ruche",
            "ro": "Stup",
            "pt": "Colmeia",
            "es": "Colmena",
            "da": "Stade"
        },
        "unit": null,
        "children": [
            {
                "id": 30,
                "type": "system",
                "name": "id",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "ID",
                    "nl": "ID",
                    "de": "ID",
                    "fr": "ID",
                    "ro": "ID",
                    "pt": "ID",
                    "es": "ID",
                    "da": "ID"
                },
                "unit": null
            },
            {
                "id": 34,
                "type": "system",
                "name": "type",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Type",
                    "nl": "Type",
                    "de": "Typ",
                    "fr": "type",
                    "ro": "Tip",
                    "pt": "Tipo",
                    "es": "Tipo",
                    "da": "Type"
                },
                "unit": null
            },
            {
                "id": 64,
                "type": "system",
                "name": "frame_size",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Frame size",
                    "nl": "Raam afmetingen",
                    "de": "Rähmchengröße",
                    "fr": "Taille des cadres",
                    "ro": "Dimensiune ramă",
                    "pt": "Tamanho do quadro",
                    "es": "Tamaño de marco",
                    "da": "Rammestørrelse"
                },
                "unit": null
            },
            {
                "id": 84,
                "type": "system",
                "name": "configuration",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Configuration",
                    "nl": "Samenstelling",
                    "de": "Konfiguration",
                    "fr": "Configuration",
                    "ro": "ConfiguraΘ›ie",
                    "pt": "Configuração",
                    "es": "Configuración",
                    "da": "Opbygning"
                },
                "unit": null
            },
            {
                "id": 136,
                "type": "system",
                "name": "location",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Location",
                    "nl": "Locatie",
                    "de": "Ort",
                    "fr": "Lieux",
                    "ro": "LocaΘ›ie",
                    "pt": "Localização",
                    "es": "Ubicación",
                    "da": "Lokation"
                },
                "unit": null
            },
            {
                "id": 614,
                "type": "checklist",
                "name": "weight",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "number_2_decimals",
                "trans": {
                    "en": "Weight",
                    "nl": "Gewicht",
                    "de": "Gewicht",
                    "fr": "Poids",
                    "ro": "Greutate",
                    "pt": "Peso",
                    "es": "Peso",
                    "da": "Vægt"
                },
                "unit": "kg"
            },
            {
                "id": 795,
                "type": "system",
                "name": "photo",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "image",
                "trans": {
                    "en": "Photo",
                    "nl": "Foto",
                    "de": "Foto",
                    "fr": "Photo",
                    "ro": "Poză",
                    "pt": "Fotografia",
                    "es": "Foto",
                    "da": "Foto"
                },
                "unit": null
            },
            {
                "id": 818,
                "type": "system",
                "name": "app",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "list",
                "trans": {
                    "nl": "App",
                    "en": "App",
                    "de": "App",
                    "fr": "App",
                    "ro": "AplicaΘ›ie",
                    "pt": "Aplicação (app)",
                    "es": "App",
                    "da": "App"
                },
                "unit": null
            }
        ]
    },
    {
        "id": 149,
        "type": "list",
        "name": "bee_colony",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "label",
        "trans": {
            "en": "Bee colony",
            "nl": "Bijenvolk",
            "de": "Bienenvolk",
            "fr": "Colonie",
            "ro": "Colonie de albine",
            "pt": "Colónia",
            "es": "Colonia de abejas",
            "da": "Bifamilie"
        },
        "unit": null,
        "children": [
            {
                "id": 73,
                "type": "checklist",
                "name": "space",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Space",
                    "nl": "Ruimte",
                    "de": "Platz",
                    "fr": "Espacement",
                    "ro": "SpaΘ›iu",
                    "pt": "Espaço",
                    "es": "Espacio",
                    "da": "Mellemrum"
                },
                "unit": null
            },
            {
                "id": 150,
                "type": "system",
                "name": "origin",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Origin",
                    "nl": "Oorsprong",
                    "de": "Ursprung",
                    "fr": "Origine",
                    "ro": "Origine",
                    "pt": "Origem",
                    "es": "Origen",
                    "da": "Oprindelse"
                },
                "unit": null
            },
            {
                "id": 165,
                "type": "list",
                "name": "activity",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Activity",
                    "nl": "Activiteit",
                    "de": "Aktivität",
                    "fr": "Activité",
                    "ro": "Activitate",
                    "pt": "Actividade",
                    "es": "Actividad",
                    "da": "Aktivitet"
                },
                "unit": null
            },
            {
                "id": 208,
                "type": "system",
                "name": "status",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Status",
                    "nl": "Status",
                    "de": "Status",
                    "fr": "Statut",
                    "ro": "Stare",
                    "pt": "Estado",
                    "es": "Estado",
                    "da": "Status"
                },
                "unit": null
            },
            {
                "id": 213,
                "type": "list",
                "name": "characteristics",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Characteristics",
                    "nl": "Eigenschappen",
                    "de": "Charakteristiken",
                    "fr": "Caracteristique",
                    "ro": "Caracteristici",
                    "pt": "Características",
                    "es": "Características",
                    "da": "Egenskaber"
                },
                "unit": null
            },
            {
                "id": 253,
                "type": "checklist",
                "name": "swarm_prevention",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Swarm prevention",
                    "nl": "Zwermverhindering",
                    "de": "Schwarmverhinderung",
                    "fr": "Prévention de l'essaimage",
                    "ro": "Prevenirea roirii",
                    "pt": "Prevenção de enxameamento",
                    "es": "Prevención de enjambrazón",
                    "da": "Sværmehindring"
                },
                "unit": null
            },
            {
                "id": 263,
                "type": "list",
                "name": "brood",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Brood",
                    "nl": "Broed",
                    "de": "Brut",
                    "fr": "Couvain",
                    "ro": "Puiet",
                    "pt": "Criação",
                    "es": "Cría",
                    "da": "Yngel"
                },
                "unit": null
            },
            {
                "id": 333,
                "type": "checklist",
                "name": "queen",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Queen",
                    "nl": "Moer",
                    "de": "Königin",
                    "fr": "Reine",
                    "ro": "Matcă",
                    "pt": "Raínha",
                    "es": "Reina",
                    "da": "Dronning"
                },
                "unit": null
            },
            {
                "id": 442,
                "type": "list",
                "name": "drones",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Drones",
                    "nl": "Darren",
                    "de": "Drohnen",
                    "fr": "Mâles",
                    "ro": "Trântori",
                    "pt": "Zangões",
                    "es": "Zánganos",
                    "da": "Droner"
                },
                "unit": null
            },
            {
                "id": 448,
                "type": "checklist",
                "name": "uniting_colonies",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Uniting colonies",
                    "nl": "Volken samenvoegen",
                    "de": "Volksvereinigung",
                    "fr": "Reunion de colonies",
                    "ro": "Unificare colonii",
                    "pt": "União de colónias",
                    "es": "Colmenas fusionadas",
                    "da": "Samling af bifamilier"
                },
                "unit": null
            },
            {
                "id": 453,
                "type": "list",
                "name": "bees_added",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Bees added",
                    "nl": "Bijen toegevoegd",
                    "de": "Bienen hinzugefügt",
                    "fr": "Ajout d'abeille",
                    "ro": "Albine adăugate",
                    "pt": "Abelhas adicionadas",
                    "es": "Abejas agregadas",
                    "da": "Bier tilføjet"
                },
                "unit": null
            },
            {
                "id": 459,
                "type": "list",
                "name": "loss",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Loss",
                    "nl": "Verlies",
                    "de": "Verluste",
                    "fr": "Perdu",
                    "ro": "Pierderi",
                    "pt": "Perdas",
                    "es": "Pérdida",
                    "da": "Tab"
                },
                "unit": null
            },
            {
                "id": 472,
                "type": "list",
                "name": "removal",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Removal",
                    "nl": "Verwijdering",
                    "de": "Entfernt",
                    "fr": "Suppression",
                    "ro": "ÎnlΔƒturare",
                    "pt": "Remoção",
                    "es": "Remoción",
                    "da": "Fjernelse"
                },
                "unit": null
            },
            {
                "id": 755,
                "type": "system",
                "name": "reminder",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "nl": "Herinnnering",
                    "en": "Reminder",
                    "de": "Erinnerung",
                    "fr": "Rappel",
                    "ro": "Aducere aminte",
                    "pt": "Lembrete",
                    "es": "Recordatorio",
                    "da": "Påmindelse"
                },
                "unit": null
            },
            {
                "id": 771,
                "type": "checklist",
                "name": "size",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "nl": "Grootte",
                    "en": "Size",
                    "de": "Größe",
                    "fr": "Taille",
                    "ro": "Mărime",
                    "pt": "Tamanho",
                    "es": "Tamaño",
                    "da": "Størrelse"
                },
                "unit": null
            },
            {
                "id": 776,
                "type": "checklist",
                "name": "splitting_colony",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "nl": "Volk splitsen",
                    "en": "Splitting colony",
                    "de": "Aufgeteiltes Volk",
                    "fr": "Division de colonie",
                    "ro": "ÎmpΔƒrΘ›irea coloniei",
                    "pt": "Colónia desdobrada",
                    "es": "División de colonia",
                    "da": "Opdeling af bifamilie"
                },
                "unit": null
            },
            {
                "id": 867,
                "type": "system",
                "name": "purpose",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Purpose",
                    "nl": "Doel",
                    "de": "Zweck",
                    "fr": "Raison",
                    "ro": "Scop",
                    "pt": "Propósito",
                    "es": "Propósito",
                    "da": "Formål"
                },
                "unit": null
            },
            {
                "id": 960,
                "type": "checklist",
                "name": "comb_replacement",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Comb replacement",
                    "nl": "Raat vervanging",
                    "de": "Wabenerneuerung",
                    "fr": "Remplacement de rayon",
                    "ro": "Înlocuirea fagurelui",
                    "pt": "Substituição de favos",
                    "es": "Reemplazo de panal",
                    "da": "Tavleudskiftning"
                },
                "unit": null
            }
        ]
    },
    {
        "id": 475,
        "type": "list",
        "name": "food",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "label",
        "trans": {
            "en": "Food",
            "nl": "Voedsel",
            "de": "Futter",
            "fr": "Nourriture",
            "ro": "Hrană",
            "pt": "Comida",
            "es": "Alimento",
            "da": "Føde"
        },
        "unit": null,
        "children": [
            {
                "id": 476,
                "type": "checklist",
                "name": "feeding",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Feeding",
                    "nl": "Bijvoeren",
                    "de": "Fütterung",
                    "fr": "Nourrissement",
                    "ro": "Hrănire",
                    "pt": "Alimentação",
                    "es": "Alimentación",
                    "da": "Fodring"
                },
                "unit": null
            },
            {
                "id": 493,
                "type": "checklist",
                "name": "stock",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Stock",
                    "nl": "Voorraad",
                    "de": "Vorrat",
                    "fr": "Stock",
                    "ro": "Stoc",
                    "pt": "Stock",
                    "es": "Stock",
                    "da": "Lager"
                },
                "unit": null
            },
            {
                "id": 500,
                "type": "list",
                "name": "forage",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Forage",
                    "nl": "Dracht",
                    "de": "Futter",
                    "fr": "Butinage",
                    "ro": "Cules",
                    "pt": "Forrageamento",
                    "es": "Forraje"
                },
                "unit": null
            },
            {
                "id": 891,
                "type": "checklist",
                "name": "water",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Water",
                    "nl": "Water",
                    "de": "Wasser",
                    "fr": "Eau",
                    "ro": "Apă",
                    "pt": "Água",
                    "es": "Agua",
                    "da": "Vand"
                },
                "unit": null
            }
        ]
    },
    {
        "id": 513,
        "type": "list",
        "name": "disorder",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "label",
        "trans": {
            "en": "Disorder",
            "nl": "Aandoening",
            "de": "Störung",
            "fr": "Problème",
            "ro": "Boală",
            "pt": "Problemas",
            "es": "Problema",
            "da": "Sygdom"
        },
        "unit": null,
        "children": [
            {
                "id": 514,
                "type": "list",
                "name": "type",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Type",
                    "nl": "Type",
                    "de": "Typ",
                    "fr": "type",
                    "ro": "Tip",
                    "pt": "Tipo",
                    "es": "Tipo",
                    "da": "Type"
                },
                "unit": null
            },
            {
                "id": 582,
                "type": "list",
                "name": "severity",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "score_amount",
                "trans": {
                    "en": "Severity",
                    "nl": "Ernst",
                    "de": "Schweregrad",
                    "fr": "Sévérité",
                    "ro": "Severitate",
                    "pt": "Severidade",
                    "da": "Alvorlighed"
                },
                "unit": null
            },
            {
                "id": 589,
                "type": "checklist",
                "name": "laboratory_test",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Laboratory test",
                    "nl": "Laboratorium test",
                    "de": "Labortest",
                    "fr": "Test laboratoire",
                    "ro": "Test de laborator",
                    "pt": "Teste laboratorial",
                    "es": "Test de laboratorio",
                    "da": "Laboratorietest"
                },
                "unit": null
            },
            {
                "id": 594,
                "type": "list",
                "name": "treatment",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Treatment",
                    "nl": "Behandeling",
                    "de": "Behandlung",
                    "fr": "Traitement",
                    "ro": "Tratament",
                    "pt": "Tratamento",
                    "es": "Tratamiento",
                    "da": "Behandling"
                },
                "unit": null
            },
            {
                "id": 830,
                "type": "checklist",
                "name": "varroa",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Varroa",
                    "nl": "Varroa",
                    "de": "Varoa",
                    "fr": "Varroa",
                    "ro": "Varroa",
                    "pt": "Varroa",
                    "es": "Varroa",
                    "da": "Varroa"
                },
                "unit": null
            }
        ]
    },
    {
        "id": 612,
        "type": "checklist",
        "name": "weather",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "label",
        "trans": {
            "en": "Weather",
            "nl": "Weer",
            "de": "Wetter",
            "fr": "Météo",
            "ro": "Vreme",
            "pt": "Clima",
            "es": "Tiempo atmosférico",
            "da": "Vejr"
        },
        "unit": null,
        "children": [
            {
                "id": 615,
                "type": "checklist",
                "name": "ambient_temperature",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "number",
                "trans": {
                    "en": "Ambient temperature",
                    "nl": "Omgevingstemperatuur",
                    "de": "Umgebungstemperatur",
                    "fr": "Température ambiante",
                    "ro": "Temperatura ambientală",
                    "pt": "Temperatura ambiente",
                    "es": "Temperatura ambiental",
                    "da": "Omgivelsestemperatur"
                },
                "unit": "°C"
            },
            {
                "id": 620,
                "type": "checklist",
                "name": "humidity",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "number_percentage",
                "trans": {
                    "en": "Humidity",
                    "nl": "Luchtvochtigheid",
                    "de": "Feuchtigkeit",
                    "fr": "Humidité",
                    "ro": "Umiditate",
                    "pt": "Humidade",
                    "es": "Humedad",
                    "da": "Fugtighed"
                },
                "unit": "%"
            },
            {
                "id": 621,
                "type": "checklist",
                "name": "cloud_cover",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "options",
                "trans": {
                    "en": "Cloud cover",
                    "nl": "Wolken",
                    "de": "Wolkendecke",
                    "fr": "Couverture nuageuse",
                    "ro": "Nebulozitate",
                    "pt": "Nebulosidade",
                    "es": "Cubierto de nubes",
                    "da": "Skydække"
                },
                "unit": null
            },
            {
                "id": 628,
                "type": "checklist",
                "name": "wind",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "number",
                "trans": {
                    "en": "Wind",
                    "nl": "Wind",
                    "de": "Wind",
                    "fr": "Vent",
                    "ro": "Vânt",
                    "pt": "Vento",
                    "es": "Viento",
                    "da": "Vind"
                },
                "unit": "bft"
            },
            {
                "id": 629,
                "type": "checklist",
                "name": "precipitation",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "number_positive",
                "trans": {
                    "en": "Precipitation",
                    "nl": "Neerslag",
                    "de": "Niederschlag",
                    "fr": "Précipitation",
                    "ro": "PrecipitaΘ›ii",
                    "pt": "Precipitação",
                    "es": "Precipitación",
                    "da": "Nedbør"
                },
                "unit": "mm"
            }
        ]
    },
    {
        "id": 658,
        "type": "system",
        "name": "beekeeper",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "list",
        "trans": {
            "en": "Beekeeper",
            "nl": "Imker",
            "de": "Imker",
            "fr": "Apiculteur",
            "ro": "Apicultor",
            "pt": "Apicultor",
            "es": "Apicultor(a)",
            "da": "Biavler"
        },
        "unit": null,
        "children": [
            {
                "id": 659,
                "type": "0",
                "name": "name",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "boolean",
                "trans": {
                    "en": "Name",
                    "nl": "Naam",
                    "de": "Name",
                    "fr": "Nom",
                    "ro": "Nume",
                    "pt": "Nome",
                    "es": "Nombre",
                    "da": "Navn"
                },
                "unit": null
            },
            {
                "id": 660,
                "type": "list",
                "name": "location",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "select_location",
                "trans": {
                    "en": "Location",
                    "nl": "Locatie",
                    "de": "Ort",
                    "fr": "Lieux",
                    "ro": "LocaΘ›ie",
                    "pt": "Localização",
                    "es": "Ubicación",
                    "da": "Lokation"
                },
                "unit": null
            },
            {
                "id": 666,
                "type": "1",
                "name": "telephone",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "list_item",
                "trans": {
                    "en": "Telephone",
                    "nl": "Telefoon",
                    "de": "Telefon",
                    "fr": "Telephone",
                    "ro": "Telefon",
                    "pt": "Telefone",
                    "es": "Teléfono",
                    "da": "Telefon"
                },
                "unit": null
            },
            {
                "id": 667,
                "type": "2",
                "name": "email",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "list_item",
                "trans": {
                    "en": "Email",
                    "nl": "Email",
                    "de": "Email",
                    "fr": "Email",
                    "ro": "Email",
                    "pt": "Email",
                    "es": "Email",
                    "da": "Email"
                },
                "unit": null
            },
            {
                "id": 668,
                "type": "3",
                "name": "date_of_birth",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "date",
                "trans": {
                    "en": "Date of birth",
                    "nl": "Geboortedatum",
                    "de": "Geburtsdatum",
                    "fr": "Date de naissance",
                    "ro": "Data naΘ™terii",
                    "pt": "Data de nascimento",
                    "es": "Fecha de Nacimiento",
                    "da": "Fødselsdato"
                },
                "unit": null
            },
            {
                "id": 669,
                "type": "4",
                "name": "gender",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "list_item",
                "trans": {
                    "en": "Gender",
                    "nl": "Geslacht",
                    "de": "Geschlecht",
                    "fr": "Genre",
                    "ro": "Gen",
                    "pt": "Género",
                    "es": "Género",
                    "da": "Køn"
                },
                "unit": null
            },
            {
                "id": 670,
                "type": "list",
                "name": "beekeeper_since",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Beekeeper since",
                    "nl": "Imker sinds",
                    "de": "Imker seit",
                    "fr": "Apiculteur depuis",
                    "ro": "Apicultor din",
                    "pt": "Apicultor desde",
                    "es": "Apicultor desde",
                    "da": "Biavler siden"
                },
                "unit": null
            },
            {
                "id": 672,
                "type": "5",
                "name": "beekeeper_id",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "text",
                "trans": {
                    "en": "Beekeeper ID",
                    "nl": "Imker ID",
                    "de": "Imker ID",
                    "fr": "ID apiculteur",
                    "ro": "ID apicultor",
                    "pt": "Número de apicultor",
                    "es": "ID Apicultor",
                    "da": "Biavler ID"
                },
                "unit": null
            },
            {
                "id": 673,
                "type": "list",
                "name": "company",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Company",
                    "nl": "Bedrijf",
                    "de": "Betrieb",
                    "fr": "Société",
                    "ro": "Companie",
                    "pt": "Empresa",
                    "es": "Compañía/Empresa",
                    "da": "Firma"
                },
                "unit": null
            },
            {
                "id": 680,
                "type": "list",
                "name": "method",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "options",
                "trans": {
                    "en": "Method",
                    "nl": "Methode",
                    "de": "Methode",
                    "fr": "Méthode",
                    "ro": "Metodă",
                    "pt": "Método",
                    "es": "Método",
                    "da": "Metode"
                },
                "unit": null
            },
            {
                "id": 688,
                "type": "list",
                "name": "role",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "options",
                "trans": {
                    "en": "Role",
                    "nl": "Rol",
                    "fr": "Rôle",
                    "ro": "Rol",
                    "pt": "Papel",
                    "es": "Rol",
                    "da": "Rolle"
                },
                "unit": null
            },
            {
                "id": 691,
                "type": "system",
                "name": "photo",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "list_item",
                "trans": {
                    "en": "Photo",
                    "nl": "Foto",
                    "de": "Foto",
                    "fr": "Photo",
                    "ro": "Poză",
                    "pt": "Fotografia",
                    "es": "Foto",
                    "da": "Foto"
                },
                "unit": null
            },
            {
                "id": 692,
                "type": "list",
                "name": "inspection_role",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Inspection role",
                    "nl": "Inspectie rol",
                    "fr": "Rôle d'inspection",
                    "ro": "Scopul inspecΘ›iei",
                    "pt": "Inspecção",
                    "es": "Rol durante la inspección"
                },
                "unit": null
            }
        ]
    },
    {
        "id": 698,
        "type": "list",
        "name": "production",
        "icon": null,
        "source": null,
        "required": 0,
        "input": "label",
        "trans": {
            "en": "Production",
            "nl": "Productie",
            "de": "Produktion",
            "fr": "Production",
            "ro": "ProducΘ›ie",
            "pt": "Produção",
            "es": "Producción",
            "da": "Produktion"
        },
        "unit": null,
        "children": [
            {
                "id": 851,
                "type": "checklist",
                "name": "honey",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Honey",
                    "nl": "Honing",
                    "de": "Honig",
                    "fr": "Miel",
                    "ro": "Miere",
                    "pt": "Mel",
                    "es": "Miel",
                    "da": "Honning"
                },
                "unit": null
            },
            {
                "id": 852,
                "type": "checklist",
                "name": "other",
                "icon": null,
                "source": null,
                "required": 0,
                "input": "label",
                "trans": {
                    "en": "Other",
                    "nl": "Andere",
                    "de": "andere",
                    "fr": "Autre",
                    "ro": "Alte",
                    "pt": "Outros",
                    "es": "Otro",
                    "da": "Andet"
                },
                "unit": null
            }
        ]
    }
]
 

Request      

GET api/categories

api/categories/{id} Display the specified category.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/categories/1" \
    --header "Authorization: Bearer 45v1h3g6Vk6aZEbd8PaefcD" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/categories/1"
);

const headers = {
    "Authorization": "Bearer 45v1h3g6Vk6aZEbd8PaefcD",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/categories/{id}

URL Parameters

id  integer  

The ID of the category.

api/categoryinputs List of all available input types of the inspection categories

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/categoryinputs" \
    --header "Authorization: Bearer VZv5b3a8E6ePk1gcf4D6adh" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/categoryinputs"
);

const headers = {
    "Authorization": "Bearer VZv5b3a8E6ePk1gcf4D6adh",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "id": 1,
        "name": "List",
        "type": "list",
        "min": null,
        "max": null,
        "decimals": null
    },
    {
        "id": 2,
        "name": "List item",
        "type": "list_item",
        "min": null,
        "max": null,
        "decimals": null
    },
    {
        "id": 3,
        "name": "Boolean (yes = green)",
        "type": "boolean",
        "min": null,
        "max": null,
        "decimals": null
    }
]
 

Request      

GET api/categoryinputs

Api\ChecklistController

Manage your personal inspection checklists

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/checklists" \
    --header "Authorization: Bearer 8P6ad3DhbEgc5fkZVe4va61" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/checklists"
);

const headers = {
    "Authorization": "Bearer 8P6ad3DhbEgc5fkZVe4va61",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/checklists

POST api/checklists

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/checklists" \
    --header "Authorization: Bearer 3ZgD5Ef6Vchdk618a4aPebv" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/checklists"
);

const headers = {
    "Authorization": "Bearer 3ZgD5Ef6Vchdk618a4aPebv",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/checklists

GET api/checklists/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/checklists/8" \
    --header "Authorization: Bearer eVE8Pbg4Zf6cv6aDa3d5h1k" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/checklists/8"
);

const headers = {
    "Authorization": "Bearer eVE8Pbg4Zf6cv6aDa3d5h1k",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/checklists/{id}

URL Parameters

id  integer  

The ID of the checklist.

PUT api/checklists/{id}

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/checklists/11" \
    --header "Authorization: Bearer PDa1cZf8kvVg4356dh6baeE" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/checklists/11"
);

const headers = {
    "Authorization": "Bearer PDa1cZf8kvVg4356dh6baeE",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/checklists/{id}

PATCH api/checklists/{id}

URL Parameters

id  integer  

The ID of the checklist.

DELETE api/checklists/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/checklists/15" \
    --header "Authorization: Bearer fbPgV5hkv8a36d6ZE14eDca" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/checklists/15"
);

const headers = {
    "Authorization": "Bearer fbPgV5hkv8a36d6ZE14eDca",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/checklists/{id}

URL Parameters

id  integer  

The ID of the checklist.

Api\DeviceController

Store and retreive Devices that produce measurements

api/devices/multiple POST Store/update multiple Devices in an array of Device objects

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/devices/multiple" \
    --header "Authorization: Bearer 43ahcgPv6a6fE5dDkb1Ze8V" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"id\": 14,
    \"key\": \"esse\",
    \"hardware_id\": \"unde\",
    \"name\": \"reiciendis\",
    \"hive_id\": 18,
    \"type\": \"voluptatem\",
    \"last_message_received\": \"ad\",
    \"firmware_version\": \"molestias\",
    \"hardware_version\": \"delectus\",
    \"boot_count\": 11,
    \"measurement_interval_min\": 23830.6,
    \"measurement_transmission_ratio\": 73194.692,
    \"ble_pin\": \"et\",
    \"battery_voltage\": 2637.06,
    \"next_downlink_message\": \"rem\",
    \"last_downlink_result\": \"consequatur\"
}"
const url = new URL(
    "https://api.beep.nl/api/devices/multiple"
);

const headers = {
    "Authorization": "Bearer 43ahcgPv6a6fE5dDkb1Ze8V",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "id": 14,
    "key": "esse",
    "hardware_id": "unde",
    "name": "reiciendis",
    "hive_id": 18,
    "type": "voluptatem",
    "last_message_received": "ad",
    "firmware_version": "molestias",
    "hardware_version": "delectus",
    "boot_count": 11,
    "measurement_interval_min": 23830.6,
    "measurement_transmission_ratio": 73194.692,
    "ble_pin": "et",
    "battery_voltage": 2637.06,
    "next_downlink_message": "rem",
    "last_downlink_result": "consequatur"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/devices/multiple

Body Parameters

id  integer optional  

Device id to update. (Required without key and hardware_id)

key  string optional  

DEV EUI of the sensor to enable storing sensor data incoming on the api/sensors or api/lora_sensors endpoint. (Required without id and hardware_id)

hardware_id  string optional  

Hardware id of the device as device name in TTN. (Required without id and key)

name  string optional  

Device name

hive_id  integer optional  

Hive that the sensor is measuring. Default: null

type  string optional  

Category name of the hive type from the Categories table. Default: beep

last_message_received  timestamp optional  

Will be converted with date('Y-m-d H:i:s', $last_message_received); before storing

firmware_version  string optional  

Firmware version of the Device

hardware_version  string optional  

Hardware version of the Device

boot_count  integer optional  

Amount of boots of the Device

measurement_interval_min  number optional  

Measurement interval in minutes

measurement_transmission_ratio  number optional  

Measurements ratio of non-transmitted vs transmitted messages. If 0 or 1, every measurement gets transmitted.

ble_pin  string optional  

Bleutooth PIN of Device: 6 numbers between 0-9

battery_voltage  number optional  

Last measured battery voltage

next_downlink_message  string optional  

Hex string to send via downlink at next connection (LoRaWAN port 6)

last_downlink_result  string optional  

Result received from BEEP base after downlink message (LoRaWAN port 5)

api/devices/ttn/{dev_id} GET Get a BEEP TTS Cloud Device by Device ID (BEEP hardware_id)

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/devices/ttn/omnis" \
    --header "Authorization: Bearer 16v8PfEac5D4Va6behkdZ3g" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/devices/ttn/omnis"
);

const headers = {
    "Authorization": "Bearer 16v8PfEac5D4Va6behkdZ3g",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/devices/ttn/{dev_id}

URL Parameters

dev_id  string  

The ID of the dev.

api/devices/ttn/{dev_id} POST Create a BEEP TTS Cloud Device by Device ID, lorawan_device.dev_eui, and lorawan_device.app_key

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/devices/ttn/qui" \
    --header "Authorization: Bearer 31hPeV6bvD85ca6afg4EdZk" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"lorawan_device\": {
        \"dev_eui\": \"rliggumjjsfihrcu\",
        \"app_key\": \"egswxyxjkowqkqpdbssecszammlzvgip\"
    }
}"
const url = new URL(
    "https://api.beep.nl/api/devices/ttn/qui"
);

const headers = {
    "Authorization": "Bearer 31hPeV6bvD85ca6afg4EdZk",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "lorawan_device": {
        "dev_eui": "rliggumjjsfihrcu",
        "app_key": "egswxyxjkowqkqpdbssecszammlzvgip"
    }
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/devices/ttn/{dev_id}

URL Parameters

dev_id  string  

The ID of the dev.

Body Parameters

lorawan_device  object optional  

lorawan_device.dev_eui  string  

Must be 16 characters.

lorawan_device.app_key  string  

Must be 32 characters.

api/devices GET List all user Devices

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/devices" \
    --header "Authorization: Bearer khE6dacg48aeZV1P5Dv3b6f" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"hardware_id\": \"tempora\"
}"
const url = new URL(
    "https://api.beep.nl/api/devices"
);

const headers = {
    "Authorization": "Bearer khE6dacg48aeZV1P5Dv3b6f",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "hardware_id": "tempora"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


[
    {
        "id": 1,
        "hive_id": 2,
        "name": "BEEPBASE-0000",
        "key": "000000000000000",
        "created_at": "2020-01-22 09:43:03",
        "last_message_received": null,
        "hardware_id": null,
        "firmware_version": null,
        "hardware_version": null,
        "boot_count": null,
        "measurement_interval_min": null,
        "measurement_transmission_ratio": null,
        "ble_pin": null,
        "battery_voltage": null,
        "next_downlink_message": null,
        "last_downlink_result": null,
        "type": "beep",
        "hive_name": "Hive 2",
        "location_name": "Test stand 1",
        "owner": true,
        "sensor_definitions": [
            {
                "id": 7,
                "name": null,
                "inside": null,
                "offset": 8131,
                "multiplier": null,
                "input_measurement_id": 7,
                "output_measurement_id": 20,
                "device_id": 1,
                "input_abbr": "w_v",
                "output_abbr": "weight_kg"
            }
        ]
    }
]
 

Request      

GET api/devices

Body Parameters

hardware_id  string optional  

Provide to filter on hardware_id

api/devices POST Create or Update a Device

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/devices" \
    --header "Authorization: Bearer gZPb46568Vcevk1dEfha3Da" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"id\": 1,
    \"key\": \"quidem\",
    \"hardware_id\": \"voluptates\",
    \"name\": \"voluptatibus\",
    \"hive_id\": 13,
    \"type\": \"quae\",
    \"last_message_received\": \"ea\",
    \"firmware_version\": \"commodi\",
    \"hardware_version\": \"qui\",
    \"boot_count\": 7,
    \"measurement_interval_min\": 444.989179,
    \"measurement_transmission_ratio\": 895271,
    \"ble_pin\": \"inventore\",
    \"battery_voltage\": 77455810.7115121,
    \"next_downlink_message\": \"omnis\",
    \"last_downlink_result\": \"in\",
    \"create_ttn_device\": false,
    \"app_key\": \"facere\"
}"
const url = new URL(
    "https://api.beep.nl/api/devices"
);

const headers = {
    "Authorization": "Bearer gZPb46568Vcevk1dEfha3Da",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "id": 1,
    "key": "quidem",
    "hardware_id": "voluptates",
    "name": "voluptatibus",
    "hive_id": 13,
    "type": "quae",
    "last_message_received": "ea",
    "firmware_version": "commodi",
    "hardware_version": "qui",
    "boot_count": 7,
    "measurement_interval_min": 444.989179,
    "measurement_transmission_ratio": 895271,
    "ble_pin": "inventore",
    "battery_voltage": 77455810.7115121,
    "next_downlink_message": "omnis",
    "last_downlink_result": "in",
    "create_ttn_device": false,
    "app_key": "facere"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/devices

Body Parameters

id  integer optional  

Device id to update. (Required without key and hardware_id)

key  string optional  

DEV EUI of the sensor to enable storing sensor data incoming on the api/sensors or api/lora_sensors endpoint. (Required without id and hardware_id)

hardware_id  string optional  

Hardware id of the device as device name in TTN. (Required without id and key)

name  string optional  

Device name

hive_id  integer optional  

Hive that the sensor is measuring. Default: null

type  string optional  

Category name of the hive type from the Categories table. Default: beep

last_message_received  timestamp optional  

Will be converted with date('Y-m-d H:i:s', $last_message_received); before storing

firmware_version  string optional  

Firmware version of the Device

hardware_version  string optional  

Hardware version of the Device

boot_count  integer optional  

Amount of boots of the Device

measurement_interval_min  number optional  

Measurement interval in minutes

measurement_transmission_ratio  number optional  

Measurements ratio of non-transmitted vs transmitted messages. If 0 or 1, every measurement gets transmitted.

ble_pin  string optional  

Bleutooth PIN of Device: 6 numbers between 0-9

battery_voltage  number optional  

Last measured battery voltage

next_downlink_message  string optional  

Hex string to send via downlink at next connection (LoRaWAN port 6)

last_downlink_result  string optional  

Result received from BEEP base after downlink message (LoRaWAN port 5)

create_ttn_device  boolean optional  

If true, create a new LoRaWAN device in the BEEP TTN console. If succesfull, create the device.

app_key  string optional  

BEEP base LoRaWAN application key that you would like to store in TTN

api/devices/{id} GET List one Device by id

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/devices/19" \
    --header "Authorization: Bearer 64aZd13f8Ev5bhDkVcPa6eg" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/devices/19"
);

const headers = {
    "Authorization": "Bearer 64aZd13f8Ev5bhDkVcPa6eg",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/devices/{id}

URL Parameters

id  integer  

The ID of the device.

api/devices PUT/PATCH Update an existing Device

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/devices/12" \
    --header "Authorization: Bearer ZP6cgfvaDV35a46dhk1Eeb8" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"id\": 4,
    \"key\": \"consequatur\",
    \"hardware_id\": \"adipisci\",
    \"name\": \"nihil\",
    \"hive_id\": 3,
    \"type\": \"quae\",
    \"delete\": false,
    \"last_message_received\": \"voluptate\",
    \"firmware_version\": \"illo\",
    \"hardware_version\": \"perspiciatis\",
    \"boot_count\": 3,
    \"measurement_interval_min\": 15.96,
    \"measurement_transmission_ratio\": 5521.70175,
    \"ble_pin\": \"dolorum\",
    \"battery_voltage\": 147400.568,
    \"next_downlink_message\": \"fugiat\",
    \"last_downlink_result\": \"et\"
}"
const url = new URL(
    "https://api.beep.nl/api/devices/12"
);

const headers = {
    "Authorization": "Bearer ZP6cgfvaDV35a46dhk1Eeb8",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "id": 4,
    "key": "consequatur",
    "hardware_id": "adipisci",
    "name": "nihil",
    "hive_id": 3,
    "type": "quae",
    "delete": false,
    "last_message_received": "voluptate",
    "firmware_version": "illo",
    "hardware_version": "perspiciatis",
    "boot_count": 3,
    "measurement_interval_min": 15.96,
    "measurement_transmission_ratio": 5521.70175,
    "ble_pin": "dolorum",
    "battery_voltage": 147400.568,
    "next_downlink_message": "fugiat",
    "last_downlink_result": "et"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/devices/{id}

PATCH api/devices/{id}

URL Parameters

id  integer  

The ID of the device.

Body Parameters

id  integer optional  

Device id to update. (Required without key and hardware_id)

key  string optional  

DEV EUI of the sensor to enable storing sensor data incoming on the api/sensors or api/lora_sensors endpoint. (Required without id and hardware_id)

hardware_id  string optional  

Hardware id of the device as device name in TTN. (Required without id and key)

name  string optional  

Name of the sensor

hive_id  integer optional  

Hive that the sensor is measuring. Default: null

type  string optional  

Category name of the hive type from the Categories table. Default: beep

delete  boolean optional  

If true delete the sensor and all it's data in the Influx database

last_message_received  timestamp optional  

Will be converted with date('Y-m-d H:i:s', $last_message_received); before storing

firmware_version  string optional  

Firmware version of the Device

hardware_version  string optional  

Hardware version of the Device

boot_count  integer optional  

Amount of boots of the Device

measurement_interval_min  number optional  

Measurement interval in minutes

measurement_transmission_ratio  number optional  

Measurements ratio of non-transmitted vs transmitted messages. If 0 or 1, every measurement gets transmitted.

ble_pin  string optional  

Bleutooth PIN of Device: 6 numbers between 0-9

battery_voltage  number optional  

Last measured battery voltage

next_downlink_message  string optional  

Hex string to send via downlink at next connection (LoRaWAN port 6)

last_downlink_result  string optional  

Result received from BEEP base after downlink message (LoRaWAN port 5)

Api\ExportController

Export all data to an Excel file by email (GDPR)

api/export/csv POST Generate a CSV measurement data export from InfluxDB. Make sure not to load a too large timespan (i.e. > 30 days), because the call will not succeed due to memory overload.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/export/csv" \
    --header "Authorization: Bearer 1bkc6Z64vhad5Egaf8V3ePD" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"device_id\": \"inventore\",
    \"start\": \"2020-05-27 16:16\",
    \"end\": \"2020-05-30 00:00\",
    \"separator\": \";\",
    \"measurements\": \"\'am2315_t,am2315_h,mhz_co2\'\",
    \"link\": false
}"
const url = new URL(
    "https://api.beep.nl/api/export/csv"
);

const headers = {
    "Authorization": "Bearer 1bkc6Z64vhad5Egaf8V3ePD",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "device_id": "inventore",
    "start": "2020-05-27 16:16",
    "end": "2020-05-30 00:00",
    "separator": ";",
    "measurements": "'am2315_t,am2315_h,mhz_co2'",
    "link": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/export/csv

Body Parameters

device_id  required optional  

Device id to download data from

start  date  

Date for start of data export.

end  date  

Date for end of data export.

separator  string optional  

Symbol that should be used to separate columns in CSV file.

measurements  string optional  

Comma separated list of measurement types to load. If you want a lot of data (i.e. > 30 days), make sure not to load more than one measurement.

link  boolean optional  

filled means: save the export to a file and provide the link, not filled means: output a text/html header with text containing the .csv content. Example:

GET api/export

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/export" \
    --header "Authorization: Bearer 6Pf6v5eED4cb1h8V3aZgadk" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/export"
);

const headers = {
    "Authorization": "Bearer 6Pf6v5eED4cb1h8V3aZgadk",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/export

Api\FlashLogController

api/flashlogs GET Provide a list of the available flashlogs

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/flashlogs" \
    --header "Authorization: Bearer ab366Zv18efh4aEcg5PVDkd" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/flashlogs"
);

const headers = {
    "Authorization": "Bearer ab366Zv18efh4aEcg5PVDkd",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/flashlogs

api/flashlogs/{id} GET Provide the contents of the log_file_parsed property of the flashlog

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/flashlogs/18?id=7" \
    --header "Authorization: Bearer 6cPEf3hbaga1548keDV6vZd" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"matches_min\": 2,
    \"match_props\": 7,
    \"db_records\": 15,
    \"block_id\": 1,
    \"block_data_index\": 0,
    \"data_minutes\": 17,
    \"from_cache\": false,
    \"save_result\": false,
    \"csv\": 0,
    \"json\": 0
}"
const url = new URL(
    "https://api.beep.nl/api/flashlogs/18"
);

const params = {
    "id": "7",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 6cPEf3hbaga1548keDV6vZd",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "matches_min": 2,
    "match_props": 7,
    "db_records": 15,
    "block_id": 1,
    "block_data_index": 0,
    "data_minutes": 17,
    "from_cache": false,
    "save_result": false,
    "csv": 0,
    "json": 0
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/flashlogs/{id}

URL Parameters

id  integer  

The ID of the flashlog.

Query Parameters

id  integer  

Flashlog ID to parse

Body Parameters

matches_min  integer optional  

Flashlog minimum amount of inline measurements that should be matched. Default: 5.

match_props  integer optional  

Flashlog minimum amount of measurement properties that should match. Default: 9.

db_records  integer optional  

Flashlog minimum amount of inline measurements that should be matched. Default: 80.

block_id  integer optional  

Flashlog block index to get both Flashlog as database data from.

block_data_index  integer optional  

Flashlog data index to get both Flashlog as database data from.

data_minutes  integer optional  

Flashlog data amount of minutes to show data from. Default: 10080 (1 week).

from_cache  boolean optional  

get Flashlog parse result from cache (24 hours). Default: true.

save_result  boolean optional  

Flashlog save the parsed result as new log_file_parsed. Default: false.

csv  integer optional  

Save the Flashlog block_id data as a CSV file (1) and return a link. Default: 0.

json  integer optional  

Save the Flashlog block_id data as a JSON file (1) and return a link. Default: 0.

api/flashlogs/{id} POST Fill the missing database values with Flashlog values that match

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/flashlogs/6?id=7" \
    --header "Authorization: Bearer 51EdV4g8h3eck6bfvaaZD6P" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"matches_min\": 2,
    \"match_props\": 7,
    \"db_records\": 15,
    \"block_id\": 1,
    \"from_cache\": false,
    \"save_result\": false
}"
const url = new URL(
    "https://api.beep.nl/api/flashlogs/6"
);

const params = {
    "id": "7",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 51EdV4g8h3eck6bfvaaZD6P",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "matches_min": 2,
    "match_props": 7,
    "db_records": 15,
    "block_id": 1,
    "from_cache": false,
    "save_result": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/flashlogs/{id}

URL Parameters

id  integer  

The ID of the flashlog.

Query Parameters

id  integer  

Flashlog ID to parse

Body Parameters

matches_min  integer optional  

Flashlog minimum amount of inline measurements that should be matched. Default: 5.

match_props  integer optional  

Flashlog minimum amount of measurement properties that should match. Default: 9.

db_records  integer optional  

Flashlog minimum amount of inline measurements that should be matched. Default: 80.

block_id  integer optional  

Flashlog block index to get both Flashlog as database data from.

from_cache  boolean optional  

get Flashlog parse result from cache (24 hours). Default: true.

save_result  boolean optional  

Flashlog save the parsed result as new log_file_parsed. Default: false.

api/flashlogs/{id} DELETE Delete a block of data (block_id filled), or the whole Flashlog file

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/flashlogs/9?id=13" \
    --header "Authorization: Bearer kZD6683gbaEP4Vfhe1vdc5a" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"block_id\": 6
}"
const url = new URL(
    "https://api.beep.nl/api/flashlogs/9"
);

const params = {
    "id": "13",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer kZD6683gbaEP4Vfhe1vdc5a",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "block_id": 6
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

DELETE api/flashlogs/{id}

URL Parameters

id  integer  

The ID of the flashlog.

Query Parameters

id  integer  

Flashlog ID to delete the complete Flashlog file

Body Parameters

block_id  integer optional  

Flashlog block index to delete (only the) previously persisted data from the database

Api\GroupController

Manage collaboration groups

api/groups/checktoken POST Check a token for a group id, and accept or decline the invite

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/groups/checktoken" \
    --header "Authorization: Bearer Dkc4VZg6a6eEavd1hP83bf5" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"token\": \"distinctio\",
    \"group_id\": \"cum\",
    \"decline\": false
}"
const url = new URL(
    "https://api.beep.nl/api/groups/checktoken"
);

const headers = {
    "Authorization": "Bearer Dkc4VZg6a6eEavd1hP83bf5",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "token": "distinctio",
    "group_id": "cum",
    "decline": false
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/groups/checktoken

Body Parameters

token  string  

group_id  string  

decline  boolean optional  

GET api/groups

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/groups" \
    --header "Authorization: Bearer ZgEbdc6v3k4VPe1aD8a56hf" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/groups"
);

const headers = {
    "Authorization": "Bearer ZgEbdc6v3k4VPe1aD8a56hf",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/groups

POST api/groups

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/groups" \
    --header "Authorization: Bearer acZDfa1v4kEbh686gPdV5e3" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/groups"
);

const headers = {
    "Authorization": "Bearer acZDfa1v4kEbh686gPdV5e3",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/groups

GET api/groups/{id}

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/groups/20" \
    --header "Authorization: Bearer 5kfZhVag1cP4v663adeED8b" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/groups/20"
);

const headers = {
    "Authorization": "Bearer 5kfZhVag1cP4v663adeED8b",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/groups/{id}

URL Parameters

id  integer  

The ID of the group.

PUT api/groups/{id}

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/groups/6" \
    --header "Authorization: Bearer 6V6DaPZecv4gfbka8d15Eh3" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/groups/6"
);

const headers = {
    "Authorization": "Bearer 6V6DaPZecv4gfbka8d15Eh3",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/groups/{id}

PATCH api/groups/{id}

URL Parameters

id  integer  

The ID of the group.

DELETE api/groups/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/groups/9" \
    --header "Authorization: Bearer 8ka6Pbd46aZ13Eh5cvDeVfg" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/groups/9"
);

const headers = {
    "Authorization": "Bearer 8ka6Pbd46aZ13Eh5cvDeVfg",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/groups/{id}

URL Parameters

id  integer  

The ID of the group.

DELETE api/groups/detach/{id}

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/groups/detach/impedit" \
    --header "Authorization: Bearer g41Daf8EaZh5ckedb6P3V6v" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/groups/detach/impedit"
);

const headers = {
    "Authorization": "Bearer g41Daf8EaZh5ckedb6P3V6v",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/groups/detach/{id}

URL Parameters

id  string  

The ID of the detach.

Api\HiveController

Manage your hives

api/hives GET Display a listing of user hives.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/hives" \
    --header "Authorization: Bearer 5vbDPZ6hEfeV46k3aga1c8d" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/hives"
);

const headers = {
    "Authorization": "Bearer 5vbDPZ6hEfeV46k3aga1c8d",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "hives": [
        {
            "id": 1,
            "location_id": 1,
            "hive_type_id": 43,
            "color": "#35f200",
            "name": "Kast 1",
            "created_at": "2017-07-13 23:34:49",
            "type": "spaarkast",
            "location": "",
            "attention": null,
            "impression": null,
            "reminder": null,
            "reminder_date": null,
            "inspection_count": 0,
            "sensors": [
                3,
                19
            ],
            "owner": true,
            "layers": [
                {
                    "id": 1,
                    "order": 0,
                    "color": "#35f200",
                    "type": "brood",
                    "framecount": 10
                },
                {
                    "id": 2,
                    "order": 1,
                    "color": "#35f200",
                    "type": "brood",
                    "framecount": 10
                },
                {
                    "id": 3,
                    "order": 2,
                    "color": "#35f200",
                    "type": "honey",
                    "framecount": 10
                }
            ],
            "queen": null
        }
    ]
}
 

Request      

GET api/hives

api/hives POST Store a newly created Hive in storage for the authenticated user.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/hives" \
    --header "Authorization: Bearer a6V45PcbeD6k1Zha3fg8dvE" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"accusantium\",
    \"location_id\": 14,
    \"brood_layers\": 0,
    \"honey_layers\": 0,
    \"frames\": 0,
    \"order\": 11,
    \"layers\": [
        \"ut\"
    ],
    \"color\": \"ctnhdh\",
    \"hive_type_id\": 16,
    \"bb_width_cm\": 0,
    \"bb_depth_cm\": 0,
    \"bb_height_cm\": 0,
    \"fr_width_cm\": 0,
    \"fr_height_cm\": 0,
    \"queen\": {
        \"race_id\": 16,
        \"birth_date\": \"2022-06-24T08:14:26\",
        \"name\": \"accusantium\",
        \"description\": \"sunt\",
        \"line\": \"et\",
        \"tree\": \"possimus\",
        \"color\": \"h\",
        \"clipped\": 9,
        \"fertilized\": 3
    },
    \"timezone\": \"Africa\\/Johannesburg\"
}"
const url = new URL(
    "https://api.beep.nl/api/hives"
);

const headers = {
    "Authorization": "Bearer a6V45PcbeD6k1Zha3fg8dvE",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "accusantium",
    "location_id": 14,
    "brood_layers": 0,
    "honey_layers": 0,
    "frames": 0,
    "order": 11,
    "layers": [
        "ut"
    ],
    "color": "ctnhdh",
    "hive_type_id": 16,
    "bb_width_cm": 0,
    "bb_depth_cm": 0,
    "bb_height_cm": 0,
    "fr_width_cm": 0,
    "fr_height_cm": 0,
    "queen": {
        "race_id": 16,
        "birth_date": "2022-06-24T08:14:26",
        "name": "accusantium",
        "description": "sunt",
        "line": "et",
        "tree": "possimus",
        "color": "h",
        "clipped": 9,
        "fertilized": 3
    },
    "timezone": "Africa\/Johannesburg"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/hives

Body Parameters

name  string  

location_id  integer  

brood_layers  integer optional  

This field is required when layers is not present. Must be at least 0.

honey_layers  integer optional  

This field is required when layers is not present. Must be at least 0.

frames  integer optional  

Must be at least 0.

order  integer optional  

layers  string[] optional  

This field is required when none of brood_layers and honey_layers are present.

color  string optional  

Must not be greater than 7 characters.

hive_type_id  integer optional  

bb_width_cm  number optional  

Must be at least 0.

bb_depth_cm  number optional  

Must be at least 0.

bb_height_cm  number optional  

Must be at least 0.

fr_width_cm  number optional  

Must be at least 0.

fr_height_cm  number optional  

Must be at least 0.

queen  object optional  

queen.race_id  integer optional  

queen.birth_date  string optional  

Must be a valid date.

queen.name  string optional  

queen.description  string optional  

queen.line  string optional  

queen.tree  string optional  

queen.color  string optional  

Must not be greater than 7 characters.

queen.clipped  integer optional  

queen.fertilized  integer optional  

timezone  string optional  

Must be a valid time zone, such as Africa/Accra.

api/hives/{id} GET Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/hives/1" \
    --header "Authorization: Bearer D8Za41hEkdV65f3ga6cbPve" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/hives/1"
);

const headers = {
    "Authorization": "Bearer D8Za41hEkdV65f3ga6cbPve",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/hives/{id}

URL Parameters

id  integer  

The ID of the hive.

api/hives/{id} PATCH Update the specified user Hive in storage.

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/hives/1" \
    --header "Authorization: Bearer 4gabVvcZ8fdEaD663eP5k1h" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"ipsam\",
    \"location_id\": 4,
    \"brood_layers\": 0,
    \"honey_layers\": 0,
    \"frames\": 0,
    \"order\": 10,
    \"layers\": [
        \"quisquam\"
    ],
    \"color\": \"fex\",
    \"hive_type_id\": 1,
    \"bb_width_cm\": 0,
    \"bb_depth_cm\": 0,
    \"bb_height_cm\": 0,
    \"fr_width_cm\": 0,
    \"fr_height_cm\": 0,
    \"queen\": {
        \"race_id\": 18,
        \"birth_date\": \"2022-06-24T08:14:26\",
        \"name\": \"beatae\",
        \"description\": \"voluptas\",
        \"line\": \"quibusdam\",
        \"tree\": \"tempore\",
        \"color\": \"tsi\",
        \"clipped\": 6,
        \"fertilized\": 2
    },
    \"timezone\": \"Pacific\\/Marquesas\"
}"
const url = new URL(
    "https://api.beep.nl/api/hives/1"
);

const headers = {
    "Authorization": "Bearer 4gabVvcZ8fdEaD663eP5k1h",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "ipsam",
    "location_id": 4,
    "brood_layers": 0,
    "honey_layers": 0,
    "frames": 0,
    "order": 10,
    "layers": [
        "quisquam"
    ],
    "color": "fex",
    "hive_type_id": 1,
    "bb_width_cm": 0,
    "bb_depth_cm": 0,
    "bb_height_cm": 0,
    "fr_width_cm": 0,
    "fr_height_cm": 0,
    "queen": {
        "race_id": 18,
        "birth_date": "2022-06-24T08:14:26",
        "name": "beatae",
        "description": "voluptas",
        "line": "quibusdam",
        "tree": "tempore",
        "color": "tsi",
        "clipped": 6,
        "fertilized": 2
    },
    "timezone": "Pacific\/Marquesas"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/hives/{id}

PATCH api/hives/{id}

URL Parameters

id  integer  

The ID of the hive.

Body Parameters

name  string  

location_id  integer  

brood_layers  integer optional  

This field is required when layers is not present. Must be at least 0.

honey_layers  integer optional  

This field is required when layers is not present. Must be at least 0.

frames  integer optional  

Must be at least 0.

order  integer optional  

layers  string[] optional  

This field is required when none of brood_layers and honey_layers are present.

color  string optional  

Must not be greater than 7 characters.

hive_type_id  integer optional  

bb_width_cm  number optional  

Must be at least 0.

bb_depth_cm  number optional  

Must be at least 0.

bb_height_cm  number optional  

Must be at least 0.

fr_width_cm  number optional  

Must be at least 0.

fr_height_cm  number optional  

Must be at least 0.

queen  object optional  

queen.race_id  integer optional  

queen.birth_date  string optional  

Must be a valid date.

queen.name  string optional  

queen.description  string optional  

queen.line  string optional  

queen.tree  string optional  

queen.color  string optional  

Must not be greater than 7 characters.

queen.clipped  integer optional  

queen.fertilized  integer optional  

timezone  string optional  

Must be a valid time zone, such as Africa/Accra.

api/hives/{id} DELETE Remove the specified user Hive from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/hives/1" \
    --header "Authorization: Bearer fVdh4avDk6g8b31Z5ceEaP6" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/hives/1"
);

const headers = {
    "Authorization": "Bearer fVdh4avDk6g8b31Z5ceEaP6",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/hives/{id}

URL Parameters

id  integer  

The ID of the hive.

Api\ImageController

Store and retreive image metadata (image_url, thumb_url, width, category_id, etc.)

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/images" \
    --header "Authorization: Bearer 3dc1h5aa8gfb6ZkVe6vEP4D" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/images"
);

const headers = {
    "Authorization": "Bearer 3dc1h5aa8gfb6ZkVe6vEP4D",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/images

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/images" \
    --header "Authorization: Bearer Z15e4PV3dghkEvaaDb6c6f8" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/images"
);

const headers = {
    "Authorization": "Bearer Z15e4PV3dghkEvaaDb6c6f8",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/images

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/images/5" \
    --header "Authorization: Bearer 36ZE6b1V8hk4agfdevPc5aD" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/images/5"
);

const headers = {
    "Authorization": "Bearer 36ZE6b1V8hk4agfdevPc5aD",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/images/{id}

URL Parameters

id  integer  

The ID of the image.

Update the specified resource in storage.

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/images/3" \
    --header "Authorization: Bearer f5k1gdZaEb6hvD6e38VPc4a" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/images/3"
);

const headers = {
    "Authorization": "Bearer f5k1gdZaEb6hvD6e38VPc4a",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/images/{id}

PATCH api/images/{id}

URL Parameters

id  integer  

The ID of the image.

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/images" \
    --header "Authorization: Bearer Pca5E648fg3ha1dkD6vZVeb" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/images"
);

const headers = {
    "Authorization": "Bearer Pca5E648fg3ha1dkD6vZVeb",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/images

Api\InspectionsController

Manage manual hive inspections

api/inspections GET Show the 'inspections' list with objects reflecting only the general inspection data.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/inspections" \
    --header "Authorization: Bearer 1agEdkf83bD6PVva6ecZ5h4" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/inspections"
);

const headers = {
    "Authorization": "Bearer 1agEdkf83bD6PVva6ecZ5h4",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/inspections

api/inspections/lists GET List checklists and its inspections linked to Hive id. The 'inspections' object contains a descending date ordered list of general inspection data. The 'items_by_date' object contains a list of (rows of) inspection items that can be placed (in columns) under the inspections by created_at date (table format). NB: Use 'Accept-Language' Header (default nl_NL) to provide localized category names (anc, name) in items_by_date.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/inspections/lists" \
    --header "Authorization: Bearer dPhecb5a6Vg3D8v1fZEa4k6" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"id\": 16
}"
const url = new URL(
    "https://api.beep.nl/api/inspections/lists"
);

const headers = {
    "Authorization": "Bearer dPhecb5a6Vg3D8v1fZEa4k6",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "id": 16
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "checklists": [
        {
            "id": 810,
            "type": "beep_v2_copy",
            "name": "Beep v2 - info@beep.nl",
            "description": null,
            "created_at": "2020-01-13 18:30:02",
            "updated_at": "2020-01-13 19:58:47",
            "category_ids": [
                149,
                771,
                963,
                964,
                965,
                966,
                263,
                265,
                270,
                276
            ],
            "required_ids": [],
            "owner": true,
            "researches": []
        }
    ]
}
 

Request      

GET api/inspections/lists

Body Parameters

id  integer  

The hive to request inspections from.

api/inspections/{id} GET Show the 'inspection' object. The object reflects only the general inspection data.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/inspections/dolor" \
    --header "Authorization: Bearer k5P66e81bgdahcEVaZD43fv" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/inspections/dolor"
);

const headers = {
    "Authorization": "Bearer k5P66e81bgdahcEVaZD43fv",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/inspections/{id}

URL Parameters

id  string  

The id of the inspection.

api/inspections/hive/{hive_id} GET List all inspections linked to Hive id. The 'inspections' object contains a descending date ordered list of general inspection data. The 'items_by_date' object contains a list of (rows of) inspection items that can be placed (in columns) under the inspections by created_at date (table format). NB: Use 'Accept-Language' Header (default nl_NL) to provide localized category names (anc, name) in items_by_date.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/inspections/hive/et" \
    --header "Authorization: Bearer P8k61ca6bfeaV5g4DZE3dvh" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/inspections/hive/et"
);

const headers = {
    "Authorization": "Bearer P8k61ca6bfeaV5g4DZE3dvh",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "inspections": [
        {
            "id": 93,
            "notes": null,
            "reminder": null,
            "reminder_date": null,
            "impression": 1,
            "attention": null,
            "created_at": "2020-05-18 12:34:00",
            "checklist_id": 829,
            "image_id": null,
            "owner": true,
            "thumb_url": null,
            "hive_id": 42
        },
        {
            "id": 91,
            "notes": null,
            "reminder": null,
            "reminder_date": null,
            "impression": 3,
            "attention": 0,
            "created_at": "2020-05-18 11:43:00",
            "checklist_id": 829,
            "image_id": null,
            "owner": true,
            "thumb_url": null,
            "hive_id": 42
        }
    ],
    "items_by_date": [
        {
            "anc": null,
            "name": "Bee colony",
            "items": null
        },
        {
            "anc": "Bee colony > Brood > ",
            "name": "Pattern consistency",
            "type": "score",
            "range": "min: 1 - max: 5",
            "items": [
                {
                    "id": 138,
                    "value": "3",
                    "inspection_id": 93,
                    "category_id": 279,
                    "val": "3",
                    "unit": null,
                    "type": "score"
                },
                ""
            ]
        },
        {
            "anc": "Bee colony > Brood > Status > ",
            "name": "All stages",
            "type": "boolean",
            "range": null,
            "items": [
                "",
                {
                    "id": 77,
                    "value": "1",
                    "inspection_id": 91,
                    "category_id": 868,
                    "val": "Yes",
                    "unit": null,
                    "type": "boolean"
                }
            ]
        },
        {
            "anc": "Bee colony > Brood > Status > ",
            "name": "Eggs",
            "type": "boolean",
            "range": null,
            "items": [
                "",
                {
                    "id": 308,
                    "value": "1",
                    "inspection_id": 91,
                    "category_id": 270,
                    "val": "Yes",
                    "unit": null,
                    "type": "boolean"
                }
            ]
        }
    ]
}
 

Request      

GET api/inspections/hive/{hive_id}

URL Parameters

hive_id  string  

The hive to request inspections from.

api/inspections POST Register a new hive inspection the 'inspection' object. The object reflects only the general inspection data.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/inspections/store" \
    --header "Authorization: Bearer 1faEg4abeZ5cvkhD8dP3V66" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"date\": \"2020-05-18 16:16\",
    \"items\": {
        \"547\": 0,
        \"595\": 1,
        \"845\": \"814\"
    },
    \"hive_ids\": 42,
    \"location_id\": \"2\",
    \"id\": 15,
    \"impression\": -1,
    \"attention\": 1,
    \"reminder\": \"This is an inspection reminder\",
    \"reminder_date\": \"2020-05-27 16:16\",
    \"notes\": \"This is an inspection note\",
    \"checklist_id\": 829
}"
const url = new URL(
    "https://api.beep.nl/api/inspections/store"
);

const headers = {
    "Authorization": "Bearer 1faEg4abeZ5cvkhD8dP3V66",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "date": "2020-05-18 16:16",
    "items": {
        "547": 0,
        "595": 1,
        "845": "814"
    },
    "hive_ids": 42,
    "location_id": "2",
    "id": 15,
    "impression": -1,
    "attention": 1,
    "reminder": "This is an inspection reminder",
    "reminder_date": "2020-05-27 16:16",
    "notes": "This is an inspection note",
    "checklist_id": 829
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/inspections/store

Body Parameters

date  date  

The (local time) date time of the inspection.

items  object  

An object of category id's containing their inspected values (id's in case of lists, otherwise numeric/textual values).

hive_ids  string[]  

Array of Hive ids to which this inspection should be linked.

location_id  Location optional  

id to which this inspection should be linked.

id  integer optional  

If provided, edit and do not create inspection. Required to edit the inspection.

impression  integer optional  

Numeric impression value -1 (unfilled) to 1-3 (smileys).

attention  integer optional  

Numeric impression value -1 (unfilled) to 0-1 (needs attention).

reminder  string optional  

Textual value of the reminder fields.

reminder_date  date optional  

The (local time) date time for an optional reminder that can be fed to the users calender.

notes  string optional  

Textual value of the notes fields.

checklist_id  integer optional  

Id of the user checklist for generating this inspection.

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/inspections/10" \
    --header "Authorization: Bearer v5EP1ZV8ha4aegd6b6c3Dfk" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/inspections/10"
);

const headers = {
    "Authorization": "Bearer v5EP1ZV8ha4aegd6b6c3Dfk",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/inspections/{id}

URL Parameters

id  integer  

The ID of the inspection.

Api\LocationController

Manage Apiaries

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/locations" \
    --header "Authorization: Bearer ga56hEb4cDZPef6V13k8dva" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/locations"
);

const headers = {
    "Authorization": "Bearer ga56hEb4cDZPef6V13k8dva",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/locations

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/locations" \
    --header "Authorization: Bearer 4Pgcae3DZ8Eb61f5vV6dkha" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"odit\",
    \"hive_type_id\": 19
}"
const url = new URL(
    "https://api.beep.nl/api/locations"
);

const headers = {
    "Authorization": "Bearer 4Pgcae3DZ8Eb61f5vV6dkha",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "odit",
    "hive_type_id": 19
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/locations

Body Parameters

name  string  

hive_type_id  integer optional  

Display the specified resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/locations/2" \
    --header "Authorization: Bearer gVfhE1eaZD34v5dba6kPc86" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/locations/2"
);

const headers = {
    "Authorization": "Bearer gVfhE1eaZD34v5dba6kPc86",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/locations/{id}

URL Parameters

id  integer  

The ID of the location.

Update the specified resource in storage.

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/locations/1" \
    --header "Authorization: Bearer vZP54khEbcf66D3g1edaa8V" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"nemo\",
    \"hive_type_id\": 5
}"
const url = new URL(
    "https://api.beep.nl/api/locations/1"
);

const headers = {
    "Authorization": "Bearer vZP54khEbcf66D3g1edaa8V",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "nemo",
    "hive_type_id": 5
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/locations/{id}

PATCH api/locations/{id}

URL Parameters

id  integer  

The ID of the location.

Body Parameters

name  string  

hive_type_id  integer optional  

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/locations/2" \
    --header "Authorization: Bearer g4Zh385DP1vbafcV6dEeak6" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/locations/2"
);

const headers = {
    "Authorization": "Bearer g4Zh385DP1vbafcV6dEeak6",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/locations/{id}

URL Parameters

id  integer  

The ID of the location.

Api\MeasurementController

Store and retreive sensor data (both LoRa and API POSTs) from a Device

api/sensors POST Store sensor measurement data (see BEEP sensor data API definition) from API, or TTN. See /sensors/measurement_types?locale=en which measurement types can be used to POST data to.

Example request:
curl --request POST \
    "https://api.beep.nl/api/sensors?key/data=ut" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"key\\/data\": \"exercitationem\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensors"
);

const params = {
    "key/data": "ut",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "key\/data": "exercitationem"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/sensors

Query Parameters

key/data  string  

Measurement formatted as URL query: key=your_beep_device_key&t=18.4&t_i=34.5&weight_kg=57.348&h=58&bv=3.54

Body Parameters

key/data  json  

Measurement data as JSON: {"key":"your_beep_device_key", "t":18.4, t_i":34.5, "weight_kg":57.348, "h":58, "bv":3.54}

api/lora_sensors POST Store sensor measurement data (see BEEP sensor data API definition) from TTN or KPN (Simpoint) When Simpoint payload is supplied, the LoRa HEX to key/value pairs decoding is done within function $this->parse_ttn_payload() When TTN payload is supplied, the TTN HTTP integration decoder/converter is assumed to have already converted the payload from LoRa HEX to key/value conversion

Example request:
curl --request POST \
    "https://api.beep.nl/api/lora_sensors" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"key\": \"et\",
    \"payload_raw\": \"et\",
    \"payload_fields\": \"repellat\",
    \"DevEUI_uplink\": \"et\"
}"
const url = new URL(
    "https://api.beep.nl/api/lora_sensors"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "key": "et",
    "payload_raw": "et",
    "payload_fields": "repellat",
    "DevEUI_uplink": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lora_sensors

Body Parameters

key  string  

DEV EUI of the Device to enable storing sensor data

payload_raw  string optional  

TTN BEEP Measurement data in Base 64 encoded string

payload_fields  json optional  

TTN Measurement data array

DevEUI_uplink  json optional  

KPN Measurement data array

api/sensors/measurement_types GET Request all currently available sensor measurement types that can be POSTed to

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensors/measurement_types?locale=en" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/sensors/measurement_types"
);

const params = {
    "locale": "en",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):

Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 3
x-ratelimit-remaining: 2
access-control-allow-origin: *
 

{
    "t": "Temperature",
    "h": "Humidity",
    "p": "Pressure",
    "w": "Weight sum",
    "l": "Light",
    "bv": "Battery voltage",
    "w_v": "Weight sum",
    "w_fl": "Weight front-left",
    "w_fr": "Weight front-right",
    "w_bl": "Weight back-left",
    "w_br": "Weight back-right",
    "s_fan_4": "Sound fanning 4 days old",
    "s_fan_6": "Sound fanning 6 days old",
    "s_fan_9": "Sound fanning 9 days old",
    "s_fly_a": "Sound flying",
    "s_tot": "Sound total",
    "t_i": "Temperature inside",
    "bc_i": "Bee count in",
    "bc_o": "Bee count out",
    "weight_kg": "Weight",
    "weight_kg_corrected": "Weight corrected",
    "rssi": "Received signal strength",
    "snr": "Signal to noise ratio",
    "lat": "Lattitude",
    "lon": "lon",
    "s_bin098_146Hz": "S bin098 146Hz",
    "s_bin146_195Hz": "S bin146 195Hz",
    "s_bin195_244Hz": "S bin195 244Hz",
    "s_bin244_293Hz": "S bin244 293Hz",
    "s_bin293_342Hz": "S bin293 342Hz",
    "s_bin342_391Hz": "S bin342 391Hz",
    "s_bin391_439Hz": "S bin391 439Hz",
    "s_bin439_488Hz": "S bin439 488Hz",
    "s_bin488_537Hz": "S bin488 537Hz",
    "s_bin537_586Hz": "S bin537 586Hz",
    "calibrating_weight": "Calibrating weight",
    "w_fl_kg_per_val": "W fl kg per val",
    "w_fr_kg_per_val": "W fr kg per val",
    "w_bl_kg_per_val": "W bl kg per val",
    "w_br_kg_per_val": "W br kg per val",
    "w_fl_offset": "W fl offset",
    "w_fr_offset": "W fr offset",
    "w_bl_offset": "W bl offset",
    "w_br_offset": "W br offset",
    "bc_tot": "Bc tot",
    "s_spl": "S spl",
    "h_i": "H i",
    "w_v_offset": "W v offset",
    "w_v_kg_per_val": "W v kg per val",
    "s_bin_0_201": "S bin 0 201",
    "s_bin_201_402": "S bin 201 402",
    "s_bin_402_602": "S bin 402 602",
    "s_bin_602_803": "S bin 602 803",
    "s_bin_803_1004": "S bin 803 1004",
    "s_bin_1004_1205": "S bin 1004 1205",
    "s_bin_1205_1406": "S bin 1205 1406",
    "s_bin_1406_1607": "S bin 1406 1607",
    "s_bin_1607_1807": "S bin 1607 1807",
    "s_bin_1807_2008": "S bin 1807 2008",
    "t_0": "T 0",
    "t_1": "T 1",
    "t_2": "T 2",
    "t_3": "T 3",
    "t_4": "T 4",
    "t_5": "T 5",
    "t_6": "T 6",
    "t_7": "T 7",
    "t_8": "T 8",
    "t_9": "T 9",
    "s_bin_122_173": "S bin 122 173",
    "s_bin_71_122": "S bin 71 122",
    "s_bin_173_224": "S bin 173 224",
    "s_bin_224_276": "S bin 224 276",
    "s_bin_276_327": "S bin 276 327",
    "s_bin_327_378": "S bin 327 378",
    "s_bin_378_429": "S bin 378 429",
    "s_bin_429_480": "S bin 429 480",
    "s_bin_480_532": "S bin 480 532",
    "s_bin_532_583": "S bin 532 583"
}
 

Request      

GET api/sensors/measurement_types

Query Parameters

locale  string optional  

Two digit locale to get translated sensor measurement types.

api/sensors POST Store sensor measurement data (see BEEP sensor data API definition) from API, or TTN. See /sensors/measurement_types?locale=en which measurement types can be used to POST data to.

Example request:
curl --request POST \
    "https://api.beep.nl/api/sensors_auth?key/data=quisquam" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"key\\/data\": \"sed\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensors_auth"
);

const params = {
    "key/data": "quisquam",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "key\/data": "sed"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/sensors_auth

Query Parameters

key/data  string  

Measurement formatted as URL query: key=your_beep_device_key&t=18.4&t_i=34.5&weight_kg=57.348&h=58&bv=3.54

Body Parameters

key/data  json  

Measurement data as JSON: {"key":"your_beep_device_key", "t":18.4, t_i":34.5, "weight_kg":57.348, "h":58, "bv":3.54}

api/lora_sensors POST Store sensor measurement data (see BEEP sensor data API definition) from TTN or KPN (Simpoint) When Simpoint payload is supplied, the LoRa HEX to key/value pairs decoding is done within function $this->parse_ttn_payload() When TTN payload is supplied, the TTN HTTP integration decoder/converter is assumed to have already converted the payload from LoRa HEX to key/value conversion

Example request:
curl --request POST \
    "https://api.beep.nl/api/lora_sensors_auth" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"key\": \"soluta\",
    \"payload_raw\": \"perspiciatis\",
    \"payload_fields\": \"sit\",
    \"DevEUI_uplink\": \"nobis\"
}"
const url = new URL(
    "https://api.beep.nl/api/lora_sensors_auth"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "key": "soluta",
    "payload_raw": "perspiciatis",
    "payload_fields": "sit",
    "DevEUI_uplink": "nobis"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/lora_sensors_auth

Body Parameters

key  string  

DEV EUI of the Device to enable storing sensor data

payload_raw  string optional  

TTN BEEP Measurement data in Base 64 encoded string

payload_fields  json optional  

TTN Measurement data array

DevEUI_uplink  json optional  

KPN Measurement data array

api/sensors/measurements GET Request all sensor measurements from a certain interval (hour, day, week, month, year) and index (0=until now, 1=previous interval, etc.)

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensors/measurements" \
    --header "Authorization: Bearer Evhkaa4ZeP6d35V61bgcDf8" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"id\": 19,
    \"key\": \"dolorum\",
    \"hive_id\": 8,
    \"start\": \"2020-05-27 16:16\",
    \"end\": \"2020-05-30 00:00\",
    \"index\": 17,
    \"interval\": \"qui\",
    \"timeGroup\": \"omnis\",
    \"names\": \"voluptatibus\",
    \"weather\": 1,
    \"timezone\": \"Europe\\/Amsterdam\",
    \"relative_interval\": 15
}"
const url = new URL(
    "https://api.beep.nl/api/sensors/measurements"
);

const headers = {
    "Authorization": "Bearer Evhkaa4ZeP6d35V61bgcDf8",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "id": 19,
    "key": "dolorum",
    "hive_id": 8,
    "start": "2020-05-27 16:16",
    "end": "2020-05-30 00:00",
    "index": 17,
    "interval": "qui",
    "timeGroup": "omnis",
    "names": "voluptatibus",
    "weather": 1,
    "timezone": "Europe\/Amsterdam",
    "relative_interval": 15
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensors/measurements

Body Parameters

id  integer optional  

ID to look up the sensor (Device)

key  string optional  

DEV EUI to look up the sensor (Device).

hive_id  integer optional  

Hive ID to look up the sensor (Device)

start  date optional  

Date for start of measurements. Required without interval & index.

end  date optional  

Date for end of measurements. Required without interval & index.

index  integer optional  

Interval index (>=0; 0=until now, 1=previous interval, etc.). Default: 0.

interval  string optional  

Data interval for interpolation of measurement values: hour (2min), day (10min), week (1 hour), month (3 hours), year (1 day). Default: day.

timeGroup  string optional  

names  string optional  

comma separated list of Measurement abbreviations to filter request data (weight_kg, t, h, etc.)

weather  integer optional  

Load corresponding weather data from the weather database (1) or not (0).

timezone  string optional  

Provide the front-end timezone to correct the time from UTC to front-end time.

relative_interval  integer optional  

Load data from the selected interval relative to current time (1), or load data in absolute intervals (from start-end of hour/day/week/etc) (0). Default: 0.

api/sensors/lastvalues GET Request last measurement values of all sensor measurements from a Device

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensors/lastvalues" \
    --header "Authorization: Bearer 3hcgd1fe6k6VE45DvPb8Zaa" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"key\": \"est\",
    \"id\": 10,
    \"hive_id\": 19
}"
const url = new URL(
    "https://api.beep.nl/api/sensors/lastvalues"
);

const headers = {
    "Authorization": "Bearer 3hcgd1fe6k6VE45DvPb8Zaa",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "key": "est",
    "id": 10,
    "hive_id": 19
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensors/lastvalues

Body Parameters

key  string optional  

DEV EUI to look up the Device.

id  integer optional  

ID to look up the Device

hive_id  integer optional  

Hive ID to look up the Device

api/sensors/lastweight GET Request last weight related measurement values from a sensor (Device), used by legacy webapp to show calibration data: ['w_fl', 'w_fr', 'w_bl', 'w_br', 'w_v', 'weight_kg', 'weight_kg_corrected', 'calibrating_weight', 'w_v_offset', 'w_v_kg_per_val', 'w_fl_offset', 'w_fr_offset', 'w_bl_offset', 'w_br_offset']

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensors/lastweight" \
    --header "Authorization: Bearer aEde3c6fPZah6D48Vkgb1v5" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"key\": \"qui\",
    \"id\": 3,
    \"hive_id\": 2
}"
const url = new URL(
    "https://api.beep.nl/api/sensors/lastweight"
);

const headers = {
    "Authorization": "Bearer aEde3c6fPZah6D48Vkgb1v5",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "key": "qui",
    "id": 3,
    "hive_id": 2
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensors/lastweight

Body Parameters

key  string optional  

DEV EUI to look up the sensor (Device)

id  integer optional  

ID to look up the sensor (Device)

hive_id  integer optional  

Hive ID to look up the sensor (Device)

api/sensors/calibrateweight Legacy method, used by legacy webapp to store weight calibration value e.g.[w_v_kg_per_val] in Influx database, to lookup and calculate [weight_kg] at incoming measurement value storage

At the next measurement coming in, calibrate each weight sensor with it's part of a given weight. Because the measurements can come in only each hour/ 3hrs, set a value to trigger the calculation on next measurement

  1. If $next_measurement == true: save 'calibrating' = true in Influx with the sensor key
  2. If $next_measurement == false: save 'calibrating' = false in Influx with the sensor key and...
  3. Get the last measured weight values for this sensor key, Divide the given weight (in kg) with the amount of sensor values > 1.0 (assuming the weight is evenly distributed) Calculate the multiplier per sensor by dividing the multiplier = weight_part / (value - offset) Save the multiplier as $device_name.'_kg_per_val' in Influx
Example request:
curl --request POST \
    "https://api.beep.nl/api/sensors/calibrateweight" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"next_measurement\": true,
    \"weight_kg\": 6.8499141
}"
const url = new URL(
    "https://api.beep.nl/api/sensors/calibrateweight"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "next_measurement": true,
    "weight_kg": 6.8499141
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/sensors/calibrateweight

Body Parameters

next_measurement  boolean optional  

weight_kg  number optional  

This field is required when next_measurement is true.

POST api/sensors/offsetweight

Example request:
curl --request POST \
    "https://api.beep.nl/api/sensors/offsetweight" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/sensors/offsetweight"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/sensors/offsetweight

GET api/sensors/measurement_types_available

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensors/measurement_types_available" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/sensors/measurement_types_available"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensors/measurement_types_available

api/sensors/flashlog POST data from BEEP base fw 1.5.0+ FLASH log (with timestamp), interpret data and store in InlfuxDB (overwriting existing data). BEEP base BLE cmd: when the response is 200 OK and erase_mx_flash > -1, provide the ERASE_MX_FLASH BLE command (0x21) to the BEEP base with the last byte being the HEX value of the erase_mx_flash value (0 = 0x00, 1 = 0x01, i.e.0x2100, or 0x2101, i.e. erase_type:"fatfs", or erase_type:"full")

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/sensors/flashlog?show=16&save=19&fill=16&log_size_bytes=17" \
    --header "Authorization: Bearer 6Vc1dv8bZ3a6E4gkfPDhae5" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"id\": 11,
    \"key\": \"dolore\",
    \"hardware_id\": \"aut\",
    \"data\": \"eum\",
    \"file\": \"beatae\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensors/flashlog"
);

const params = {
    "show": "16",
    "save": "19",
    "fill": "16",
    "log_size_bytes": "17",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 6Vc1dv8bZ3a6E4gkfPDhae5",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "id": 11,
    "key": "dolore",
    "hardware_id": "aut",
    "data": "eum",
    "file": "beatae"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
"lines_received": 20039,
"bytes_received": 9872346,
"log_saved": true,
"log_parsed": false,
"log_messages":29387823
"erase_mx_flash": -1,
"erase":false,
"erase_type":"fatfs"
}
 

Request      

POST api/sensors/flashlog

Query Parameters

show  integer optional  

1 for displaying info in result JSON, 0 for not displaying (default).

save  integer optional  

1 for saving the data to a file (default), 0 for not save log file.

fill  integer optional  

1 for filling data gaps in the database, 0 for not filling gaps (default).

log_size_bytes  integer optional  

0x22 decimal result of log size requested from BEEP base.

Body Parameters

id  integer optional  

Device id to update. (Required without key and hardware_id)

key  string optional  

DEV EUI of the sensor to enable storing sensor data incoming on the api/sensors or api/lora_sensors endpoint. (Required without id and hardware_id)

hardware_id  string optional  

Hardware id of the device as device name in TTN. (Required without id and key)

data  string optional  

MX_FLASH_LOG Hexadecimal string lines (new line) separated, with many rows of log data, or text file binary with all data inside.

file  binary optional  

File with MX_FLASH_LOG Hexadecimal string lines (new line) separated, with many rows of log data, or text file binary with all data inside.

GET api/sensors/decode/p/{port}/pl/{payload}

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensors/decode/p/eius/pl/eum" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/sensors/decode/p/eius/pl/eum"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensors/decode/p/{port}/pl/{payload}

URL Parameters

port  string  

payload  string  

Api\ResearchController

Manage your research consent

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/research" \
    --header "Authorization: Bearer dZh8ev4V6bf1EDPac35ga6k" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/research"
);

const headers = {
    "Authorization": "Bearer dZh8ev4V6bf1EDPac35ga6k",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/research

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/research/7/add_consent" \
    --header "Authorization: Bearer 616c8Z4vfa3PhgDV5aEedkb" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/research/7/add_consent"
);

const headers = {
    "Authorization": "Bearer 616c8Z4vfa3PhgDV5aEedkb",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/research/11/remove_consent" \
    --header "Authorization: Bearer ed4vZk8g5c6af6Eah13bDPV" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/research/11/remove_consent"
);

const headers = {
    "Authorization": "Bearer ed4vZk8g5c6af6Eah13bDPV",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

requires authentication

Example request:
curl --request PATCH \
    "https://api.beep.nl/api/research/12/edit/magni" \
    --header "Authorization: Bearer gceh81Db3k6EPa6VZ4vfd5a" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/research/12/edit/magni"
);

const headers = {
    "Authorization": "Bearer gceh81Db3k6EPa6VZ4vfd5a",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "PATCH",
    headers,
}).then(response => response.json());

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/research/6/delete/exercitationem" \
    --header "Authorization: Bearer 36DfZgd5Vbck418vPhEae6a" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/research/6/delete/exercitationem"
);

const headers = {
    "Authorization": "Bearer 36DfZgd5Vbck418vPhEae6a",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Api\ResearchDataController

Retreive owned or viewable Research data

api/researchdata GET List all available Researches

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/researchdata" \
    --header "Authorization: Bearer kc6hZ416f538edbagaDVEPv" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/researchdata"
);

const headers = {
    "Authorization": "Bearer kc6hZ416f538edbagaDVEPv",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


[
    {
        "id": 1,
        "created_at": "2020-02-25 03:01:57",
        "updated_at": "2020-11-13 17:08:31",
        "name": "B-GOOD",
        "url": "https://b-good-project.eu/",
        "description": "B-GOOD has the overall goal to provide guidance for beekeepers and help them make better and more informed decisions.",
        "type": "research-b-good",
        "institution": "Wageningen University & Research",
        "type_of_data_used": "Hive inspections, hive settings, BEEP base measurement data",
        "start_date": "2019-07-01 00:00:00",
        "end_date": "2023-06-30 00:00:00",
        "image_id": 1,
        "consent": true,
        "consent_history": [
            {
                "id": 185,
                "created_at": "2020-11-12 22:28:09",
                "updated_at": "2020-06-12 22:28:00",
                "user_id": 1,
                "research_id": 1,
                "consent": 1,
                "consent_location_ids": null,
                "consent_hive_ids": null,
                "consent_sensor_ids": null
            },
            {
                "id": 1,
                "created_at": "2020-02-25 03:02:23",
                "updated_at": "2020-05-27 03:03:00",
                "user_id": 1,
                "research_id": 1,
                "consent": 0,
                "consent_location_ids": null,
                "consent_hive_ids": null,
                "consent_sensor_ids": null
            },
            {
                "id": 97,
                "created_at": "2020-05-14 16:24:41",
                "updated_at": "2020-03-14 16:24:00",
                "user_id": 1,
                "research_id": 1,
                "consent": 1,
                "consent_location_ids": null,
                "consent_hive_ids": null,
                "consent_sensor_ids": null
            }
        ],
        "checklist_names": [
            "1 Winter",
            "2 Varroa",
            "3 Summer+",
            "4 Summer",
            "5 Health"
        ],
        "thumb_url": "/storage/users/1/thumbs/research/6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
        "image": {
            "id": 1,
            "created_at": "2020-02-25 03:01:57",
            "updated_at": "2020-02-25 03:01:57",
            "filename": "6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
            "image_url": "/storage/users/1/images/research/6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
            "thumb_url": "/storage/users/1/thumbs/research/6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
            "description": "B-GOOD has the overall goal to provide guidance for beekeepers and help them make better and more informed decisions.",
            "type": "research",
            "height": 1271,
            "width": 1271,
            "size_kb": 51,
            "date": "2020-02-25 03:01:57",
            "hive_id": null,
            "category_id": null,
            "inspection_id": null
        }
    }
]
 

Request      

GET api/researchdata

api/researchdata/{id} GET List one Research by id with list of consent_users

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/researchdata/sit" \
    --header "Authorization: Bearer D83aP1hdkVf646E5vgceaZb" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/researchdata/sit"
);

const headers = {
    "Authorization": "Bearer D83aP1hdkVf646E5vgceaZb",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "research": {
        "id": 1,
        "created_at": "2020-02-25 03:01:57",
        "updated_at": "2020-11-18 10:33:23",
        "name": "B-GOOD",
        "url": "https://b-good-project.eu/",
        "description": "B-GOOD has the overall goal to provide guidance for beekeepers and help them make better and more informed decisions.",
        "type": "research-b-good",
        "institution": "Wageningen University & Research",
        "type_of_data_used": "Hive inspections, hive settings, BEEP base measurement data",
        "start_date": "2019-07-01 00:00:00",
        "end_date": "2023-06-30 00:00:00",
        "image_id": 1,
        "consent": true,
        "consent_history": [
            {
                "id": 185,
                "created_at": "2020-11-12 22:28:09",
                "updated_at": "2020-06-12 22:28:00",
                "user_id": 1,
                "research_id": 1,
                "consent": 1,
                "consent_location_ids": null,
                "consent_hive_ids": null,
                "consent_sensor_ids": null
            },
            {
                "id": 1,
                "created_at": "2020-02-25 03:02:23",
                "updated_at": "2020-05-27 03:03:00",
                "user_id": 1,
                "research_id": 1,
                "consent": 0,
                "consent_location_ids": null,
                "consent_hive_ids": null,
                "consent_sensor_ids": null
            },
            {
                "id": 97,
                "created_at": "2020-05-14 16:24:41",
                "updated_at": "2020-03-14 16:24:00",
                "user_id": 1,
                "research_id": 1,
                "consent": 1,
                "consent_location_ids": null,
                "consent_hive_ids": null,
                "consent_sensor_ids": null
            }
        ],
        "checklist_names": [
            "1 Winter",
            "2 Varroa",
            "3 Summer+",
            "4 Summer",
            "5 Health"
        ],
        "thumb_url": "/storage/users/1/thumbs/research/6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
        "image": {
            "id": 1,
            "created_at": "2020-02-25 03:01:57",
            "updated_at": "2020-02-25 03:01:57",
            "filename": "6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
            "image_url": "/storage/users/1/images/research/6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
            "thumb_url": "/storage/users/1/thumbs/research/6LJEp35dodWWtfxnm3xfRnL05qvvJrHbn8IXAJqNCFZj2vFjwyLXbmWscKVz.jpg",
            "description": "B-GOOD has the overall goal to provide guidance for beekeepers and help them make better and more informed decisions.",
            "type": "research",
            "height": 1271,
            "width": 1271,
            "size_kb": 51,
            "date": "2020-02-25 03:01:57",
            "hive_id": null,
            "category_id": null,
            "inspection_id": null
        }
    },
    "consent_users": [
        {
            "id": 1,
            "name": "Beep",
            "email": "pim@beep.nl",
            "created_at": "2017-07-14 03:34:10",
            "updated_at": "2020-05-27 03:03:00",
            "last_login": "2020-11-18 10:32:16",
            "locale": null,
            "consent": 0
        },
        {
            "id": 2371,
            "name": "app@beep.nl",
            "email": "app@beep.nl",
            "created_at": "2019-10-24 17:15:55",
            "updated_at": "2020-02-25 11:46:59",
            "last_login": "2020-08-20 18:24:22",
            "locale": null,
            "consent": 0
        },
        {
            "id": 1,
            "name": "Beep",
            "email": "pim@beep.nl",
            "created_at": "2017-07-14 03:34:10",
            "updated_at": "2020-06-12 22:28:00",
            "last_login": "2020-11-18 10:32:16",
            "locale": null,
            "consent": 1
        }
    ]
}
 

Request      

GET api/researchdata/{id}

URL Parameters

id  string  

The research ID to request data from.

api/researchdata/{id}/user/{user_id}/{item} GET List all user 'item' data within the consent=1 periods of a specific user within a Research. The 'item' field indicates the type of user data (apiaries/hives/devices/flashlogs/inspections/measurements/weather) to request within the research (which the user gave consent for to use). Example: inspectionsResponse: api/researchdata/1/user/1/inspections.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/researchdata/1/user/1/inspections" \
    --header "Authorization: Bearer Z6P1865ak4vDfEheV3cagdb" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"date_start\": \"2020-01-01 00:00:00\",
    \"date_until\": \"2020-09-29 23:59:59\",
    \"device_id\": 1,
    \"precision\": \"rfc3339\"
}"
const url = new URL(
    "https://api.beep.nl/api/researchdata/1/user/1/inspections"
);

const headers = {
    "Authorization": "Bearer Z6P1865ak4vDfEheV3cagdb",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "date_start": "2020-01-01 00:00:00",
    "date_until": "2020-09-29 23:59:59",
    "device_id": 1,
    "precision": "rfc3339"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


[
    {
        "id": 35211,
        "notes": "test",
        "reminder": null,
        "reminder_date": null,
        "impression": 2,
        "attention": 1,
        "created_at": "2020-03-26 18:28:00",
        "checklist_id": 798,
        "image_id": null,
        "owner": true,
        "thumb_url": null,
        "hive_id": 280,
        "items": []
    },
    {
        "id": 40162,
        "notes": "Input Liebefeld",
        "reminder": null,
        "reminder_date": null,
        "impression": null,
        "attention": null,
        "created_at": "2020-04-24 11:03:00",
        "checklist_id": 3206,
        "image_id": null,
        "owner": true,
        "thumb_url": null,
        "hive_id": 280,
        "items": [
            {
                "id": 326538,
                "value": "0.6",
                "inspection_id": 40162,
                "category_id": 977,
                "val": "0.6",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326539,
                "value": "4",
                "inspection_id": 40162,
                "category_id": 978,
                "val": "4",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326540,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 979,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326541,
                "value": "4",
                "inspection_id": 40162,
                "category_id": 980,
                "val": "4",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326542,
                "value": "3",
                "inspection_id": 40162,
                "category_id": 981,
                "val": "3",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326543,
                "value": "581",
                "inspection_id": 40162,
                "category_id": 982,
                "val": "581",
                "unit": "bzz",
                "type": "number_positive"
            },
            {
                "id": 326544,
                "value": "5",
                "inspection_id": 40162,
                "category_id": 984,
                "val": "5",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326545,
                "value": "1",
                "inspection_id": 40162,
                "category_id": 985,
                "val": "1",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326546,
                "value": "4",
                "inspection_id": 40162,
                "category_id": 987,
                "val": "4",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326547,
                "value": "5",
                "inspection_id": 40162,
                "category_id": 988,
                "val": "5",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326548,
                "value": "4",
                "inspection_id": 40162,
                "category_id": 989,
                "val": "4",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326549,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 990,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326550,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 991,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326551,
                "value": "3",
                "inspection_id": 40162,
                "category_id": 992,
                "val": "3",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326552,
                "value": "3",
                "inspection_id": 40162,
                "category_id": 993,
                "val": "3",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326553,
                "value": "6",
                "inspection_id": 40162,
                "category_id": 995,
                "val": "6",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326554,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 996,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326555,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 997,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326556,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 998,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326557,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 999,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326558,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 1000,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326559,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 1001,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326560,
                "value": "8",
                "inspection_id": 40162,
                "category_id": 1163,
                "val": "8",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326561,
                "value": "4",
                "inspection_id": 40162,
                "category_id": 1164,
                "val": "4",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326562,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 1165,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326563,
                "value": "6",
                "inspection_id": 40162,
                "category_id": 1166,
                "val": "6",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326564,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 1167,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326565,
                "value": "2",
                "inspection_id": 40162,
                "category_id": 1168,
                "val": "2",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            },
            {
                "id": 326566,
                "value": "3",
                "inspection_id": 40162,
                "category_id": 1169,
                "val": "3",
                "unit": "x 25cm2",
                "type": "square_25cm2"
            }
        ]
    },
    {
        "id": 40163,
        "notes": "Brood photograph",
        "reminder": null,
        "reminder_date": null,
        "impression": null,
        "attention": null,
        "created_at": "2020-04-24 11:07:00",
        "checklist_id": 3206,
        "image_id": null,
        "owner": true,
        "thumb_url": null,
        "hive_id": 280,
        "items": [
            {
                "id": 326567,
                "value": "1",
                "inspection_id": 40163,
                "category_id": 399,
                "val": "Ja",
                "unit": null,
                "type": "boolean"
            },
            {
                "id": 326568,
                "value": "https://assets.beep.nl/users/1/thumbs/inspection/jIcycTYnO8zYq6SHCvAwPHb97BDLFkZaDmfZUop5.png",
                "inspection_id": 40163,
                "category_id": 973,
                "val": "https://assets.beep.nl/users/1/thumbs/inspection/jIcycTYnO8zYq6SHCvAwPHb97BDLFkZaDmfZUop5.png",
                "unit": null,
                "type": "image"
            }
        ]
    },
    {
        "id": 68477,
        "notes": null,
        "reminder": null,
        "reminder_date": null,
        "impression": 3,
        "attention": 1,
        "created_at": "2020-10-23 12:43:00",
        "checklist_id": 3206,
        "image_id": null,
        "owner": true,
        "thumb_url": null,
        "hive_id": 281,
        "items": []
    },
    {
        "id": 68478,
        "notes": "Hive change",
        "reminder": null,
        "reminder_date": null,
        "impression": null,
        "attention": null,
        "created_at": "2020-10-23 13:12:33",
        "checklist_id": null,
        "image_id": null,
        "owner": true,
        "thumb_url": null,
        "hive_id": 281,
        "items": [
            {
                "id": 522496,
                "value": "2",
                "inspection_id": 68478,
                "category_id": 85,
                "val": "2",
                "unit": null,
                "type": "number_positive"
            },
            {
                "id": 522497,
                "value": "2",
                "inspection_id": 68478,
                "category_id": 87,
                "val": "2",
                "unit": null,
                "type": "number"
            },
            {
                "id": 522498,
                "value": "10",
                "inspection_id": 68478,
                "category_id": 89,
                "val": "10",
                "unit": null,
                "type": "number_positive"
            }
        ]
    }
]
 

Request      

GET api/researchdata/{id}/user/{user_id}/{item}

URL Parameters

id  string  

The research ID to request data from.

user_id  string  

The user id to request data from.

item  string  

The type of user data (apiaries/hives/devices/inspections/measurements) to request within the research (which the user gave consent for to use).

Body Parameters

date_start  datetime optional  

The date in 'YYYY-MM-DD HH:mm:ss' format (2020-01-01 00:00:00) to request data from (default is beginning of research, or earlier (except inspections and measurements).

date_until  datetime optional  

The date in 'YYYY-MM-DD HH:mm:ss' format (2020-09-29 23:59:59) to request data until (default is until the end of the user consent, or research end).

device_id  integer optional  

The device_id to filter the measurements on (next to date_start and date_until).

precision  string optional  

Specifies the optional InfluxDB format/precision (rfc3339/h/m/s/ms/u) of the timestamp of the measurements and weather data: rfc3339 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ), h (hours), m (minutes), s (seconds), ms (milliseconds), u (microseconds). Precision defaults to rfc3339.

Api\SampleCodeController

Research lab result sample code controller

Display a listing of the resource.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/samplecode" \
    --header "Authorization: Bearer 6k8cdfD1eavVh56bZE4ag3P" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/samplecode"
);

const headers = {
    "Authorization": "Bearer 6k8cdfD1eavVh56bZE4ag3P",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/samplecode

Store a newly created resource in storage.

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/samplecode" \
    --header "Authorization: Bearer avaPV4ZE8kfhb66deDgc531" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/samplecode"
);

const headers = {
    "Authorization": "Bearer avaPV4ZE8kfhb66deDgc531",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Request      

POST api/samplecode

Show not used

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/samplecode/1" \
    --header "Authorization: Bearer 1Z86bV4hd5cefavDEPa3gk6" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/samplecode/1"
);

const headers = {
    "Authorization": "Bearer 1Z86bV4hd5cefavDEPa3gk6",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/samplecode/{id}

URL Parameters

id  integer  

The ID of the samplecode.

Update not used

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/samplecode/1" \
    --header "Authorization: Bearer E8fdb4VhD6k63Zagcva5P1e" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/samplecode/1"
);

const headers = {
    "Authorization": "Bearer E8fdb4VhD6k63Zagcva5P1e",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "PUT",
    headers,
}).then(response => response.json());

Request      

PUT api/samplecode/{id}

PATCH api/samplecode/{id}

URL Parameters

id  integer  

The ID of the samplecode.

Remove the specified resource from storage.

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/samplecode" \
    --header "Authorization: Bearer ZgahVvd63baDPce8k46fE15" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/samplecode"
);

const headers = {
    "Authorization": "Bearer ZgahVvd63baDPce8k46fE15",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "DELETE",
    headers,
}).then(response => response.json());

Request      

DELETE api/samplecode

Api\SensorDefinitionController

Manage your sensor definitions

api/sensordefinition GET Display a listing of all sensordefinitions that belong to a device

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensordefinition" \
    --header "Authorization: Bearer d3v4eZcf8h516aPVkED6bga" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"device_id\": 11,
    \"hardware_id\": \"eius\",
    \"device_hardware_id\": \"illo\",
    \"input_measurement_abbreviation\": \"possimus\",
    \"limit\": 8
}"
const url = new URL(
    "https://api.beep.nl/api/sensordefinition"
);

const headers = {
    "Authorization": "Bearer d3v4eZcf8h516aPVkED6bga",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "device_id": 11,
    "hardware_id": "eius",
    "device_hardware_id": "illo",
    "input_measurement_abbreviation": "possimus",
    "limit": 8
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensordefinition

Body Parameters

device_id  integer optional  

Device ID that the Sensordefinition belongs to. Required if hardware_id, and device_hardware_id are not set.

hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if device_id, and device_hardware_id are not set.

device_hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if hardware_id, and device_id are not set.

input_measurement_abbreviation  string optional  

Filter sensordefinitions by provided input abbreviation.

limit  integer optional  

If input_abbr is set, limit the amount of results provided by more than 1 to get all historic sensordefinitions of this type.

api/sensordefinition POST Store a newly created sensordefinition

requires authentication

Example request:
curl --request POST \
    "https://api.beep.nl/api/sensordefinition" \
    --header "Authorization: Bearer cZVakPEd513eb84f6gD6hav" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"name\": \"quia\",
    \"inside\": false,
    \"offset\": 20520384,
    \"multiplier\": 21,
    \"input_measurement_id\": 5,
    \"input_measurement_abbreviation\": \"w_v\",
    \"output_measurement_id\": 6,
    \"output_measurement_abbreviation\": \"t_i\",
    \"device_id\": 8,
    \"hardware_id\": \"velit\",
    \"device_hardware_id\": \"et\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensordefinition"
);

const headers = {
    "Authorization": "Bearer cZVakPEd513eb84f6gD6hav",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "name": "quia",
    "inside": false,
    "offset": 20520384,
    "multiplier": 21,
    "input_measurement_id": 5,
    "input_measurement_abbreviation": "w_v",
    "output_measurement_id": 6,
    "output_measurement_abbreviation": "t_i",
    "device_id": 8,
    "hardware_id": "velit",
    "device_hardware_id": "et"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

POST api/sensordefinition

Body Parameters

name  string optional  

Name of the sensorinstance (e.g. temperature frame 1)

inside  boolean optional  

True is measured inside, false if measured outside

offset  number optional  

Measurement value that defines 0

multiplier  number optional  

Amount of units (calibration figure) per delta Measurement value to multiply withy (value - offset)

input_measurement_id  integer optional  

Measurement that represents the input Measurement value (e.g. 5, 3).

input_measurement_abbreviation  string optional  

Abbreviation of the Measurement that represents the input value (e.g. w_v, or t_i).

output_measurement_id  integer optional  

Measurement that represents the output Measurement value (e.g. 6, 3).

output_measurement_abbreviation  string optional  

Abbreviation of the Measurement that represents the output (calculated with (raw_value - offset) * multiplier) value (e.g. weight_kg, or t_i),

device_id  integer optional  

Device ID that the Sensordefinition belongs to. Required if hardware_id, and device_hardware_id are not set.

hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if device_id, and device_hardware_id are not set.

device_hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if hardware_id, and device_id are not set.

api/sensordefinition/{id} GET Display the specified sensordefinition

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/sensordefinition/aut" \
    --header "Authorization: Bearer 3Vhbcv6DeaPd4Zf6Ekag158" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"device_id\": 16,
    \"hardware_id\": \"sit\",
    \"device_hardware_id\": \"sed\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensordefinition/aut"
);

const headers = {
    "Authorization": "Bearer 3Vhbcv6DeaPd4Zf6Ekag158",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "device_id": 16,
    "hardware_id": "sit",
    "device_hardware_id": "sed"
};

fetch(url, {
    method: "GET",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/sensordefinition/{id}

URL Parameters

id  string  

Sensordefinition ID

Body Parameters

device_id  integer optional  

Device ID that the Sensordefinition belongs to. Required if hardware_id, and device_hardware_id are not set.

hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if device_id, and device_hardware_id are not set.

device_hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if hardware_id, and device_id are not set.

api/sensordefinition/{id} PATCH Update the specified sensordefinition

requires authentication

Example request:
curl --request PUT \
    "https://api.beep.nl/api/sensordefinition/sequi" \
    --header "Authorization: Bearer DPkdcaVab6gv8fe3641hE5Z" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"device_id\": 19,
    \"hardware_id\": \"rem\",
    \"device_hardware_id\": \"ut\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensordefinition/sequi"
);

const headers = {
    "Authorization": "Bearer DPkdcaVab6gv8fe3641hE5Z",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "device_id": 19,
    "hardware_id": "rem",
    "device_hardware_id": "ut"
};

fetch(url, {
    method: "PUT",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PUT api/sensordefinition/{id}

PATCH api/sensordefinition/{id}

URL Parameters

id  string  

Sensordefinition ID

Body Parameters

device_id  integer optional  

Device ID that the Sensordefinition belongs to. Required if hardware_id, and device_hardware_id are not set.

hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if device_id, and device_hardware_id are not set.

device_hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if hardware_id, and device_id are not set.

api/sensordefinition/{id} DELETE Remove the specified sensordefinition

requires authentication

Example request:
curl --request DELETE \
    "https://api.beep.nl/api/sensordefinition/recusandae" \
    --header "Authorization: Bearer ac31a8EedkfhDvb664VgP5Z" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"device_id\": 11,
    \"hardware_id\": \"dolorum\",
    \"device_hardware_id\": \"est\"
}"
const url = new URL(
    "https://api.beep.nl/api/sensordefinition/recusandae"
);

const headers = {
    "Authorization": "Bearer ac31a8EedkfhDvb664VgP5Z",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "device_id": 11,
    "hardware_id": "dolorum",
    "device_hardware_id": "est"
};

fetch(url, {
    method: "DELETE",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

DELETE api/sensordefinition/{id}

URL Parameters

id  string  

Sensordefinition ID

Body Parameters

device_id  integer optional  

Device ID that the Sensordefinition belongs to. Required if hardware_id, and device_hardware_id are not set.

hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if device_id, and device_hardware_id are not set.

device_hardware_id  string optional  

Device hardware ID that the Sensordefinition belongs to. Required if hardware_id, and device_id are not set.

Api\TaxonomyController

api/taxonomy/lists List of current state of the standard categories.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/taxonomy/lists" \
    --header "Authorization: Bearer 83D1bVPda654Ehfvgeac6kZ" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/taxonomy/lists"
);

const headers = {
    "Authorization": "Bearer 83D1bVPda654Ehfvgeac6kZ",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/taxonomy/lists

api/taxonomy/taxonomy List of current state of the standard categories, translated, unordered/ordered in hierachy/flat.

requires authentication

Example request:
curl --request GET \
    --get "https://api.beep.nl/api/taxonomy/taxonomy?locale=nostrum&flat=&order=1" \
    --header "Authorization: Bearer 6d4bfa5ZaEhD6PV3ce1gkv8" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/taxonomy/taxonomy"
);

const params = {
    "locale": "nostrum",
    "flat": "0",
    "order": "1",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer 6d4bfa5ZaEhD6PV3ce1gkv8",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (401):

Show headers
cache-control: no-cache, private
content-type: application/json
access-control-allow-origin: *
 

{
    "message": "Unauthenticated."
}
 

Request      

GET api/taxonomy/taxonomy

Query Parameters

locale  string optional  

Two character language code to translate taxonomy

flat  boolean optional  

In hierachy (default: true)

order  boolean optional  

Ordered (default: false)

Api\UserController

APIs for managing users

api/login Login via login form

Example request:
curl --request POST \
    "https://api.beep.nl/api/login" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"email\": \"test@test.com\",
    \"password\": \"testtest\"
}"
const url = new URL(
    "https://api.beep.nl/api/login"
);

const headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "email": "test@test.com",
    "password": "testtest"
};

fetch(url, {
    method: "POST",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Example response (200):


{
    "id": 1317,
    "name": "test@test.com",
    "email": "test@test.com",
    "avatar": "default.jpg",
    "api_token": "1snu2aRRiwQNl2Tul567hLF0XpKuZO8hqkgXU4GvjzZ3f3pOCiDPFbBDea7W",
    "created_at": "2018-12-30 23:57:35",
    "updated_at": "2020-01-09 16:31:32",
    "last_login": "2020-01-09 16:31:32",
    "policy_accepted": "beep_terms_2018_05_25_avg_v1",
    "email_verified_at": "2018-05-25 00:00:00"
}
 

Request      

POST api/login

Body Parameters

email  string  

Email address of the user.

password  string  

Password of the user.

api/authenticate Authorize a user and login with an api_token. Used for persistent login in webapp.

requires authentication

Header parameter with Bearer [api_token] from the user object. Example: Bearer 1snu2aRRiwQNl2Tul5F0XpKuZO8hqkgXU4GvjzZ3f3pOCiDPFbBDea7W

Example request:
curl --request POST \
    "https://api.beep.nl/api/authenticate" \
    --header "Authorization: Bearer PEk56agvD1cfaZ4d36bh8Ve" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en"
const url = new URL(
    "https://api.beep.nl/api/authenticate"
);

const headers = {
    "Authorization": "Bearer PEk56agvD1cfaZ4d36bh8Ve",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

fetch(url, {
    method: "POST",
    headers,
}).then(response => response.json());

Example response (200):


{
    "id": 1317,
    "name": "test@test.com",
    "email": "test@test.com",
    "avatar": "default.jpg",
    "api_token": "1snu2aRRiwQNl2Tul567hLF0XpKuZO8hqkgXU4GvjzZ3f3pOCiDPFbBDea7W",
    "created_at": "2018-12-30 23:57:35",
    "updated_at": "2020-01-09 16:31:32",
    "last_login": "2020-01-09 16:31:32",
    "policy_accepted": "beep_terms_2018_05_25_avg_v1",
    "email_verified_at": "2018-05-25 00:00:00"
}
 

Request      

POST api/authenticate

api/userlocale PATCH Edit the user locale only, do not update api_key

requires authentication

Example request:
curl --request PATCH \
    "https://api.beep.nl/api/userlocale" \
    --header "Authorization: Bearer 3gb646ahk5DaEVfPv1eZcd8" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json" \
    --header "Accept-language: en" \
    --data "{
    \"locale\": \"quam\"
}"
const url = new URL(
    "https://api.beep.nl/api/userlocale"
);

const headers = {
    "Authorization": "Bearer 3gb646ahk5DaEVfPv1eZcd8",
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Accept-language": "en",
};

let body = {
    "locale": "quam"
};

fetch(url, {
    method: "PATCH",
    headers,
    body: JSON.stringify(body),
}).then(response => response.json());

Request      

PATCH api/userlocale

Body Parameters

locale  string optional  

Two digit country string to define locale