NAV
bash javascript

Nozier

Welcome to the Nozier API documentation! The following default HTTP codes are used:

Code Reason
200 OK
202 Your request has been queued.
409 Your queue request is conflicted.
422 Your request is badly validated.
503 API temporarily cannot handle your request.

Get Postman Collection

Account

Endpoint to handle your account with.

Get your account data.


Requires authentication Requires the account:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/me?include=subscription" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/me"
);

let params = {
    "include": "subscription",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 1400,
        "name": "Cameron Goodwin",
        "first_name": "Cameron",
        "last_name": "Goodwin",
        "email": "yheidenreich@example.org",
        "gravatar_url": "https:\/\/gravatar.com\/avatar\/fe7f7dadc4d1b520e5ae0d07bd371ef8?size=50&rating=g",
        "address": "71824 Runolfsdottir Views",
        "zipcode": "79303",
        "city": "Lednerside",
        "country": "India",
        "on_trial": false,
        "on_grace": false,
        "discord_url": null,
        "slack_url": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "trial_ends_at": null,
        "usage": {
            "current": 0,
            "limit": 0,
            "left": 0
        },
        "subscription": null
    }
}

HTTP Request

GET api/v1/me

Query Parameters

Parameter Status Description
include optional Allowed includes: subscription.

Delete your account and all its monitors from Nozier.


Requires authentication Requires the account:delete scope.

Example request:

curl -X DELETE \
    "https://nozier.com/api/v1/me" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/me"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (204):

{}

HTTP Request

DELETE api/v1/me

Update your account.


Requires authentication Requires the account:update scope.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/me" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"first_name":"John","last_name":"Doe","email":"john@example.com"}'
const url = new URL(
    "https://nozier.com/api/v1/me"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john@example.com"
}

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

Example response (200):

{
    "data": {
        "id": 6034,
        "name": "Gilbert Goodwin",
        "first_name": "Gilbert",
        "last_name": "Goodwin",
        "email": "hrunolfsson@example.com",
        "gravatar_url": "https:\/\/gravatar.com\/avatar\/d886200b3c4391dc5228ffbf711ff72a?size=50&rating=g",
        "address": "89088 Parker Haven Apt. 961",
        "zipcode": "65353",
        "city": "Lake Denis",
        "country": "Slovenia",
        "on_trial": false,
        "on_grace": false,
        "discord_url": null,
        "slack_url": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "trial_ends_at": null,
        "usage": {
            "current": 0,
            "limit": 0,
            "left": 0
        },
        "subscription": null
    }
}

HTTP Request

PUT api/v1/me

Body Parameters

Parameter Type Status Description
first_name string required The first name.
last_name string required The last name.
email string required The email.

Update your account's address.


Requires authentication Requires the account:update scope.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/me/address" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"address":"aliquam","zipcode":"accusamus","city":"pariatur","country":"et"}'
const url = new URL(
    "https://nozier.com/api/v1/me/address"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "address": "aliquam",
    "zipcode": "accusamus",
    "city": "pariatur",
    "country": "et"
}

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

Example response (200):

{
    "data": {
        "id": 7369,
        "name": "Audra Sauer",
        "first_name": "Audra",
        "last_name": "Sauer",
        "email": "federico.okon@example.com",
        "gravatar_url": "https:\/\/gravatar.com\/avatar\/cbd0bbe9da2ff6078b684145d6a3af76?size=50&rating=g",
        "address": "46976 Jacklyn Lodge Suite 790",
        "zipcode": "39464-4403",
        "city": "North Heidi",
        "country": "Samoa",
        "on_trial": false,
        "on_grace": false,
        "discord_url": null,
        "slack_url": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "trial_ends_at": null,
        "usage": {
            "current": 0,
            "limit": 0,
            "left": 0
        },
        "subscription": null
    }
}

HTTP Request

PUT api/v1/me/address

Body Parameters

Parameter Type Status Description
address string required The address including number.
zipcode string required The zipcode.
city string required The city.
country string required The country.

Update your account's password.


Requires authentication Requires the account:update scope.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/me/password" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"password":"et","password_confirmation":"corporis"}'
const url = new URL(
    "https://nozier.com/api/v1/me/password"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "password": "et",
    "password_confirmation": "corporis"
}

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

Example response (200):

{
    "data": {
        "id": 9105,
        "name": "Caleb Lang",
        "first_name": "Caleb",
        "last_name": "Lang",
        "email": "robel.faye@example.org",
        "gravatar_url": "https:\/\/gravatar.com\/avatar\/eeb28dd3828868cff594aabf25684931?size=50&rating=g",
        "address": "658 Rossie River",
        "zipcode": "82230",
        "city": "South Madisynfort",
        "country": "Isle of Man",
        "on_trial": false,
        "on_grace": false,
        "discord_url": null,
        "slack_url": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "trial_ends_at": null,
        "usage": {
            "current": 0,
            "limit": 0,
            "left": 0
        },
        "subscription": null
    }
}

HTTP Request

PUT api/v1/me/password

Body Parameters

Parameter Type Status Description
password string required The new password.
password_confirmation string required Repeat the new password.

Update your account's notification channels.


Requires authentication Requires the account:update scope.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/me/notifications" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"discord_url":"sint","slack_url":"est"}'
const url = new URL(
    "https://nozier.com/api/v1/me/notifications"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "discord_url": "sint",
    "slack_url": "est"
}

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

Example response (200):

{
    "data": {
        "id": 2899,
        "name": "Emmett Hamill",
        "first_name": "Emmett",
        "last_name": "Hamill",
        "email": "rsporer@example.net",
        "gravatar_url": "https:\/\/gravatar.com\/avatar\/4da1fb7f89967e4c0866a1b4b6aef6f8?size=50&rating=g",
        "address": "882 Noemi Fort",
        "zipcode": "33944",
        "city": "Jaylenhaven",
        "country": "Pakistan",
        "on_trial": false,
        "on_grace": false,
        "discord_url": null,
        "slack_url": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "trial_ends_at": null,
        "usage": {
            "current": 0,
            "limit": 0,
            "left": 0
        },
        "subscription": null
    }
}

HTTP Request

PUT api/v1/me/notifications

Body Parameters

Parameter Type Status Description
discord_url string required The Discord webhook URL.
slack_url string required The Slack webhook URL.

Monitors

Endpoint to handle your monitors with.

Update monitor core.


Requires authentication This will queue a core update job. Nozier will then attempt to update the monitors software. Requires the monitor:update scope.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/monitors/5/update-core" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors/5/update-core"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (409):

{
    "message": "No core update update available."
}

Example response (202):

{
    "message": "Already queued."
}

Example response (202):

{
    "data": {
        "id": 8897,
        "name": "Uriah Luettgen Sr.",
        "url": "https:\/\/kutch.com\/",
        "type": "wordpress",
        "software_version": null,
        "software_version_new": null,
        "server_version": null,
        "database_version": null,
        "online": true,
        "poll_speed": "0.15",
        "error": null,
        "fetch_attempts": null,
        "refreshing": null,
        "updating": null,
        "supports_fetching": true,
        "supports_polling": true,
        "supports_updates": true,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "updates_count": null,
        "status": "ok"
    }
}

HTTP Request

PUT api/v1/monitors/{monitor}/update-core

URL Parameters

Parameter Status Description
monitor required The monitor id.

List monitors.


Requires authentication Requires the monitor:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/monitors?include=updates&sort=name&filter=example.com" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors"
);

let params = {
    "include": "updates",
    "sort": "name",
    "filter": "example.com",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": [
        {
            "id": 4084,
            "name": "Maryse Zboncak",
            "url": "https:\/\/gusikowski.com\/",
            "type": "joomla",
            "software_version": null,
            "software_version_new": null,
            "server_version": null,
            "database_version": null,
            "online": true,
            "poll_speed": "0.17",
            "error": null,
            "fetch_attempts": null,
            "refreshing": null,
            "updating": null,
            "supports_fetching": true,
            "supports_polling": true,
            "supports_updates": true,
            "created_at": "2020-05-12T08:48:57.000000Z",
            "updated_at": "2020-05-12T08:48:57.000000Z",
            "updates_count": null,
            "status": "ok"
        },
        {
            "id": 3837,
            "name": "Wilburn Bogan",
            "url": "https:\/\/cruickshank.com\/",
            "type": "joomla",
            "software_version": null,
            "software_version_new": null,
            "server_version": null,
            "database_version": null,
            "online": true,
            "poll_speed": "0.26",
            "error": null,
            "fetch_attempts": null,
            "refreshing": null,
            "updating": null,
            "supports_fetching": true,
            "supports_polling": true,
            "supports_updates": true,
            "created_at": "2020-05-12T08:48:57.000000Z",
            "updated_at": "2020-05-12T08:48:57.000000Z",
            "updates_count": null,
            "status": "ok"
        }
    ]
}

HTTP Request

GET api/v1/monitors

Query Parameters

Parameter Status Description
include optional Allowed includes.
sort optional Sort by field. Fields: id, name, url, type.
filter optional Filter by field. Fields: name, url, type.

Create monitor.


Requires authentication Requires the monitor:update scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/monitors" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"name":"Example Monitor","url":"https:\/\/example.com\/","type":"joomla","token":"ee977806d7286510da8b9a7492ba58e2484c0ecc"}'
const url = new URL(
    "https://nozier.com/api/v1/monitors"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "name": "Example Monitor",
    "url": "https:\/\/example.com\/",
    "type": "joomla",
    "token": "ee977806d7286510da8b9a7492ba58e2484c0ecc"
}

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

Example response (204):

{
    "data": {
        "id": 4955,
        "name": "Prof. Ahmad Johnson DVM",
        "url": "https:\/\/shields.com\/",
        "type": "joomla",
        "software_version": null,
        "software_version_new": null,
        "server_version": null,
        "database_version": null,
        "online": true,
        "poll_speed": "0.49",
        "error": null,
        "fetch_attempts": null,
        "refreshing": null,
        "updating": null,
        "supports_fetching": true,
        "supports_polling": true,
        "supports_updates": true,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "updates_count": null,
        "status": "ok"
    }
}

HTTP Request

POST api/v1/monitors

Body Parameters

Parameter Type Status Description
name string required The name of the monitor.
url string required The unique URL of the monitor.
type string required The type of monitor. Either joomla, wordpress or custom.
token string required The monitor token.

Get monitor.


Requires authentication Requires the monitor:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/monitors/5" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors/5"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 8198,
        "name": "Geraldine Kuhn IV",
        "url": "https:\/\/lindgren.com\/",
        "type": "wordpress",
        "software_version": null,
        "software_version_new": null,
        "server_version": null,
        "database_version": null,
        "online": true,
        "poll_speed": "0.26",
        "error": null,
        "fetch_attempts": null,
        "refreshing": null,
        "updating": null,
        "supports_fetching": true,
        "supports_polling": true,
        "supports_updates": true,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "updates_count": null,
        "status": "ok"
    }
}

HTTP Request

GET api/v1/monitors/{monitor}

URL Parameters

Parameter Status Description
monitor required The monitor id.

Update monitor.


Requires authentication Update the monitor on Nozier. All fields should be sent along. Requires the monitor:update scope.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/monitors/5" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"name":"Example Monitor","url":"https:\/\/example.com\/","type":"joomla","token":"ee977806d7286510da8b9a7492ba58e2484c0ecc"}'
const url = new URL(
    "https://nozier.com/api/v1/monitors/5"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "name": "Example Monitor",
    "url": "https:\/\/example.com\/",
    "type": "joomla",
    "token": "ee977806d7286510da8b9a7492ba58e2484c0ecc"
}

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

Example response (200):

{
    "data": {
        "id": 7136,
        "name": "Jerod Yundt II",
        "url": "https:\/\/barton.org\/",
        "type": "custom",
        "software_version": null,
        "software_version_new": null,
        "server_version": null,
        "database_version": null,
        "online": true,
        "poll_speed": "0.19",
        "error": null,
        "fetch_attempts": null,
        "refreshing": null,
        "updating": null,
        "supports_fetching": true,
        "supports_polling": true,
        "supports_updates": true,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "updates_count": null,
        "status": "ok"
    }
}

HTTP Request

PUT api/v1/monitors/{monitor}

PATCH api/v1/monitors/{monitor}

URL Parameters

Parameter Status Description
monitor required The monitor id.

Body Parameters

Parameter Type Status Description
name string required The name of the monitor.
url string required The unique URL of the monitor.
type string required The type of monitor. Either joomla, wordpress or custom.
token string required The monitor token.

Delete monitor.


Requires authentication Deletes the monitor from Nozier. Returns the monitor data after being deleted. Requires the monitor:update scope.

Example request:

curl -X DELETE \
    "https://nozier.com/api/v1/monitors/5" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors/5"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 1752,
        "name": "Leonel Howe",
        "url": "https:\/\/rohan.com\/",
        "type": "joomla",
        "software_version": null,
        "software_version_new": null,
        "server_version": null,
        "database_version": null,
        "online": true,
        "poll_speed": "0.24",
        "error": null,
        "fetch_attempts": null,
        "refreshing": null,
        "updating": null,
        "supports_fetching": true,
        "supports_polling": true,
        "supports_updates": true,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "updates_count": null,
        "status": "ok"
    }
}

HTTP Request

DELETE api/v1/monitors/{monitor}

URL Parameters

Parameter Status Description
monitor required The monitor id.

Refresh monitor.


Requires authentication This will queue a fetch job. Nozier will then fetch new data from your monitor. Requires the monitor:update scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/monitors/5/refresh" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors/5/refresh"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (409):

{
    "message": "Already queued."
}

Example response (202):

{
    "data": {
        "id": 2830,
        "name": "Prof. Raymond Fadel V",
        "url": "https:\/\/graham.com\/",
        "type": "wordpress",
        "software_version": null,
        "software_version_new": null,
        "server_version": null,
        "database_version": null,
        "online": true,
        "poll_speed": "0.42",
        "error": null,
        "fetch_attempts": null,
        "refreshing": null,
        "updating": null,
        "supports_fetching": true,
        "supports_polling": true,
        "supports_updates": true,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z",
        "updates_count": null,
        "status": "ok"
    }
}

HTTP Request

POST api/v1/monitors/{monitor}/refresh

URL Parameters

Parameter Status Description
monitor required The monitor id.

Notifications

Endpoints to handle your account notifications with. Requires notification scope.

List notifications.

Requires notification:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/notifications" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/notifications"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": [
        {
            "id": 5,
            "data": {
                "notification-specific": "data"
            },
            "read_at": "2020-02-16T14:51:40.000000Z",
            "created_at": "2020-02-16T14:51:40.000000Z"
        }
    ]
}

HTTP Request

GET api/v1/notifications

Mark a notification as read.


Requires authentication Requires notification:update scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/notifications/1/read" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/notifications/1/read"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

HTTP Request

POST api/v1/notifications/{notification}/read

Mark all notifications as read.


Requires authentication Requires notification:update scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/notifications/read?from=quia" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/notifications/read"
);

let params = {
    "from": "quia",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

HTTP Request

POST api/v1/notifications/read

Query Parameters

Parameter Status Description
from optional Mark the notifications read from the given notification id. Optional.

Payment

Endpoints to retrieve payments with. Requires the payment:read scope.

List payments.


Requires authentication Requires the payment:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/payments?include=subscription&sorts=id&filters=maiores" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/payments"
);

let params = {
    "include": "subscription",
    "sorts": "id",
    "filters": "maiores",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": [
        {
            "id": 635,
            "subscription_id": null,
            "number": "nozier-202000635",
            "amount": 6780,
            "tax": 9938,
            "tax_percentage": 21,
            "total": 16718,
            "type": "something-else",
            "paid_at": null,
            "created_at": "2020-05-12T08:48:57.000000Z",
            "updated_at": "2020-05-12T08:48:57.000000Z"
        },
        {
            "id": 9540,
            "subscription_id": null,
            "number": "nozier-202009540",
            "amount": 2141,
            "tax": 7276,
            "tax_percentage": 21,
            "total": 9417,
            "type": "something-else",
            "paid_at": null,
            "created_at": "2020-05-12T08:48:57.000000Z",
            "updated_at": "2020-05-12T08:48:57.000000Z"
        }
    ]
}

HTTP Request

GET api/v1/payments

Query Parameters

Parameter Status Description
include optional Allowed includes: subscription.
sorts optional Allowed sorts: id, amount, created_at.
filters optional Allowed filters: paid.

Get payment.


Requires authentication Requires the payment:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/payments/delectus" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/payments/delectus"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 602,
        "subscription_id": null,
        "number": "nozier-202000602",
        "amount": 5787,
        "tax": 3647,
        "tax_percentage": 21,
        "total": 9434,
        "type": "something-else",
        "paid_at": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z"
    }
}

HTTP Request

GET api/v1/payments/{payment}

URL Parameters

Parameter Status Description
payment required The payment id.

Download invoice as PDF.


Requires authentication The endpoint does not push a download, but pushes a raw PDF. Requires the payment:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/payments/5/invoice" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/payments/5/invoice"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (302):

null

HTTP Request

GET api/v1/payments/{payment}/invoice

URL Parameters

Parameter Status Description
payment required The payment id.

Get a payment URL for an open payment.


Requires authentication The endpoint returns a payment link. Requires the payment:pay scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/payments/5/pay" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/payments/5/pay"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "message": "Payment link created.",
    "url": "https:\/\/..."
}

Example response (422):

{
    "message": "Already paid."
}

Example response (409):

{
    "message": "You cannot pay for this payment this way."
}

Example response (410):

{
    "message": "Payment is expired."
}

HTTP Request

POST api/v1/payments/{payment}/pay

URL Parameters

Parameter Status Description
payment required The payment id.

Plans

Endpoints to retrieve plans with. These endpoint do not require a scope.

List plans.


Requires authentication

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/plans" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/plans"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": [
        {
            "id": 1,
            "description": "5 monitors",
            "price": 2.5,
            "monitors_limit": 5
        }
    ]
}

HTTP Request

GET api/v1/plans

Get plan.


Requires authentication

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/plans/1" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/plans/1"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 1,
        "description": "5 monitors",
        "price": 2.5,
        "monitor_limit": 5
    }
}

HTTP Request

GET api/v1/plans/{plan}

URL Parameters

Parameter Status Description
plan required The plan id.

Subscription

Endpoints to handle your subscriptions with.

List subscriptions.


Requires authentication Requires the subscription:read scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/me/subscriptions?include=user%2Cpayments&sorts=created_at&filter=adipisci" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/me/subscriptions"
);

let params = {
    "include": "user,payments",
    "sorts": "created_at",
    "filter": "adipisci",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": [
        {
            "id": 9717,
            "user_id": null,
            "status": "active",
            "plan_id": null,
            "ends_at": "2020-06-12T08:48:57.000000Z",
            "created_at": "2020-05-12T08:48:57.000000Z",
            "updated_at": "2020-05-12T08:48:57.000000Z"
        },
        {
            "id": 208,
            "user_id": null,
            "status": "active",
            "plan_id": null,
            "ends_at": "2020-06-12T08:48:57.000000Z",
            "created_at": "2020-05-12T08:48:57.000000Z",
            "updated_at": "2020-05-12T08:48:57.000000Z"
        }
    ]
}

HTTP Request

GET api/v1/me/subscriptions

Query Parameters

Parameter Status Description
include optional Allowed includes: user, payments.
sorts optional Allowed sorts: id, status, plan, ends_at, created_at.
filter optional Allowed filters: status, plan.

Get subscription.


Requires authentication Requires the subscription:subscribe scope.

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/me/subscriptions/5" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/me/subscriptions/5"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 5671,
        "user_id": null,
        "status": "active",
        "plan_id": null,
        "ends_at": "2020-06-12T08:48:57.000000Z",
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z"
    }
}

HTTP Request

GET api/v1/me/subscriptions/{subscription}

URL Parameters

Parameter Status Description
subscription required The subscription id.

Create a new subscription.


Requires authentication Requires the subscription:subscribe scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/me/subscriptions/subscribe" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"plan":"monthly-hobby"}'
const url = new URL(
    "https://nozier.com/api/v1/me/subscriptions/subscribe"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "plan": "monthly-hobby"
}

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

Example response (200):

{
    "message": "Subscribed"
}

Example response (402):

{
    "message": "Payment required.",
    "payment_url": "https:\/\/..."
}

Example response (404):

{
    "message": "Plan not found."
}

Example response (409):

{
    "message": "Too much monitors in your account. You have x, but this plan allows x."
}

Example response (424):

{
    "message": "You need to update your address before you can subscribe."
}

HTTP Request

POST api/v1/me/subscriptions/subscribe

Body Parameters

Parameter Type Status Description
plan string required The plan to subscribe to.

Cancel the currently active subscription.


Requires authentication Requires the subscription:update scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/me/subscriptions/cancel" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/me/subscriptions/cancel"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (426):

{
    "message": "You cannot cancel a trial."
}

Example response (426):

{
    "message": "You are not subscribed."
}

Example response (409):

{
    "message": "Your subscription is already cancelled."
}

Example response (200):

{
    "data": {
        "id": 205,
        "user_id": null,
        "status": "active",
        "plan_id": null,
        "ends_at": "2020-06-12T08:48:57.000000Z",
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z"
    }
}

HTTP Request

POST api/v1/me/subscriptions/cancel

Resume the currently cancelled, yet unexpired, subscription.


Requires authentication Requires the subscription:update scope.

Example request:

curl -X POST \
    "https://nozier.com/api/v1/me/subscriptions/resume" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/me/subscriptions/resume"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (426):

{
    "message": "You are not subscribed."
}

Example response (409):

{
    "message": "The subscription is not in its grace period."
}

Example response (200):

{
    "data": {
        "id": 6403,
        "user_id": null,
        "status": "active",
        "plan_id": null,
        "ends_at": "2020-06-12T08:48:57.000000Z",
        "created_at": "2020-05-12T08:48:57.000000Z",
        "updated_at": "2020-05-12T08:48:57.000000Z"
    }
}

HTTP Request

POST api/v1/me/subscriptions/resume

Updates

Endpoints to handle software updates of monitors with. Requires monitor scope.

List monitor updates.


Requires authentication

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/monitors/1/updates?sorts=id&include=monitor&filter=ad" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors/1/updates"
);

let params = {
    "sorts": "id",
    "include": "monitor",
    "filter": "ad",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": [
        {
            "id": 7785,
            "monitor_id": null,
            "identifier": "mark-sporer-phd",
            "name": "Lucious Morissette",
            "version": "4.81.48",
            "version_new": "65.52.71",
            "updating": null,
            "created_at": "2020-05-12T08:48:57.000000Z",
            "failed_at": "2020-05-12T08:48:57.000000Z"
        },
        {
            "id": 7789,
            "monitor_id": null,
            "identifier": "dr-laverna-koch-sr",
            "name": "Ernie Effertz",
            "version": "71.70.44",
            "version_new": "41.68.49",
            "updating": "2020-05-12T08:48:57.000000Z",
            "created_at": "2020-05-12T08:48:57.000000Z",
            "failed_at": null
        }
    ]
}

HTTP Request

GET api/v1/monitors/{monitor}/updates

Query Parameters

Parameter Status Description
sorts optional Allowed sorts: id, name, version, version_new, updating.
include optional Allowed includes: monitor.
filter optional Allowed filters: name, version, version_new, updating.

Get monitor update.


Requires authentication

Example request:

curl -X GET \
    -G "https://nozier.com/api/v1/monitors/5/updates/3" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}"
const url = new URL(
    "https://nozier.com/api/v1/monitors/5/updates/3"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

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

Example response (200):

{
    "data": {
        "id": 5526,
        "monitor_id": null,
        "identifier": "ashly-cruickshank-phd",
        "name": "Haylie Collier",
        "version": "93.1.78",
        "version_new": "98.71.78",
        "updating": null,
        "created_at": "2020-05-12T08:48:57.000000Z",
        "failed_at": "2020-05-12T08:48:57.000000Z"
    }
}

HTTP Request

GET api/v1/monitors/{monitor}/updates/{update}

URL Parameters

Parameter Status Description
monitor required The monitor id.
update required The update id.

Update the software.


Requires authentication Queue an update job for software updates. The endpoint will only return the queued updates.

Example request:

curl -X PUT \
    "https://nozier.com/api/v1/monitors/5/updates" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer {token}" \
    -d '{"update":"[3, 7]"}'
const url = new URL(
    "https://nozier.com/api/v1/monitors/5/updates"
);

let headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Authorization": "Bearer {token}",
};

let body = {
    "update": "[3, 7]"
}

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

Example response (409):

{
    "message": "All given updates are already queued."
}

Example response (202):

{
    "data": [
        {
            "id": 7059,
            "monitor_id": null,
            "identifier": "osbaldo-koch",
            "name": "Rick Ritchie",
            "version": "82.19.41",
            "version_new": "69.7.77",
            "updating": "2020-05-12T08:48:57.000000Z",
            "created_at": "2020-05-12T08:48:57.000000Z",
            "failed_at": "2020-05-12T08:48:57.000000Z"
        },
        {
            "id": 6310,
            "monitor_id": null,
            "identifier": "monserrate-harvey",
            "name": "Miss Katarina O'Hara",
            "version": "32.49.44",
            "version_new": "69.5.94",
            "updating": "2020-05-12T08:48:57.000000Z",
            "created_at": "2020-05-12T08:48:57.000000Z",
            "failed_at": "2020-05-12T08:48:57.000000Z"
        }
    ]
}

HTTP Request

PUT api/v1/monitors/{monitor}/updates

URL Parameters

Parameter Status Description
monitor required The monitor id.

Body Parameters

Parameter Type Status Description
update required optional List of update id's to queue.