NAV -image
bash javascript

Introduction

Here is a cool description for the DrillitLogs API.

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

Base URL

http://drillit-api.test

Authenticating requests

This API is not authenticated.

Companies

APIs for managing Companies

List 'api/v1/companies': GET

Get all companies ad associated users

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/companies" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/companies"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 2,
        "name": "MS Drilling",
        "email": "marty@msdrilling.com",
        "phone": "66565656565",
        "address1": "17 Wilfrid Road",
        "address2": "Sangbourne",
        "address3": null,
        "county": "Norfolk",
        "country": "England",
        "postcode": "NR1 5RT",
        "users": [
            {
                "id": 4,
                "first_name": "Martin",
                "last_name": "Long",
                "email": "martin@testing.com",
                "telephone": "01222635453",
                "company_id": 2,
                "access_level": 1,
                "is_active": 1
            }
        ]
    }
}

Example response (404):


{
    "success": 'Company record not found',
    "data": null
}

Request   

GET api/v1/companies

Save 'api/v1/companies': POST

Add a new company

Example request:

curl -X POST \
    "http://drillit-api.test/api/v1/companies" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"ACME Boring","email":"bob@acmeboring.com","phone":"01603555555","address1":"17 Docker Street","address2":"Somewhere Industrial Estate","address3":"Norwich","county":"Norfolk","country":"England","postcode":"NR99 7ET"}'
const url = new URL(
    "http://drillit-api.test/api/v1/companies"
);

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

let body = {
    "name": "ACME Boring",
    "email": "bob@acmeboring.com",
    "phone": "01603555555",
    "address1": "17 Docker Street",
    "address2": "Somewhere Industrial Estate",
    "address3": "Norwich",
    "county": "Norfolk",
    "country": "England",
    "postcode": "NR99 7ET"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 10,
        "name": "MS Drilling",
        "email": "marty@msdrilling.com",
        "phone": "66565656565",
        "address1": "17 Wilfrid Road",
        "address2": "Sangbourne",
        "address3": null,
        "county": "Norfolk",
        "country": "England",
        "postcode": "NR1 5RT"
    }
}

Request   

POST api/v1/companies

Body Parameters

name  string  
The name of the company.

email  string  
The email of the company.

phone  string  
The phone number of the company.

address1  string  
The first address line of the company.

address2  string  
The second address line of the company.

address3  string optional  
The third address line of the company.

county  string  
The county address of the company

country  string  
The country of the company

postcode  string  
The postcode of the company

Show 'api/v1/companies': GET

Return a company and assiciated users for a given ID

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/companies/16" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/companies/16"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 2,
        "name": "MS Drilling",
        "email": "marty@msdrilling.com",
        "phone": "66565656565",
        "address1": "23 Wilfrid Road",
        "address2": "Sangbourne",
        "address3": null,
        "county": "Norfolk",
        "country": "England",
        "postcode": "NR1 5RT",
        "created_at": "2021-03-21T08:48:55.000000Z",
        "updated_at": "2021-03-29T16:41:45.000000Z",
        "deleted_at": null,
        "users": [
            {
                "id": 4,
                "first_name": "Martin",
                "last_name": "Long",
                "email": "martin@testing.com",
                "telephone": "01222635453",
                "company_id": 2,
                "email_verified_at": null,
                "access_level": 1,
                "is_active": 1,
                "created_at": "2021-03-03T08:35:38.000000Z",
                "updated_at": "2021-03-03T08:35:38.000000Z"
            }
        ]
    }
}

Example response (404):


{
    "success": 'Company record not found',
    "data": null
}

Request   

GET api/v1/companies/{company}

URL Parameters

company  integer  
the ID of the company.

Update 'api/v1/companies': PUT

Update a company with a given ID

Example request:

curl -X PUT \
    "http://drillit-api.test/api/v1/companies/2" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"ACME Boring","email":"bob@acmeboring.com","phone":"01603555555","address1":"17 Docker Street","address2":"Somewhere Industrial Estate","address3":"Norwich","county":"Norfolk","country":"England","postcode":"NR99 7ET"}'
const url = new URL(
    "http://drillit-api.test/api/v1/companies/2"
);

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

let body = {
    "name": "ACME Boring",
    "email": "bob@acmeboring.com",
    "phone": "01603555555",
    "address1": "17 Docker Street",
    "address2": "Somewhere Industrial Estate",
    "address3": "Norwich",
    "county": "Norfolk",
    "country": "England",
    "postcode": "NR99 7ET"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 9,
        "name": "MS Drilling LTD",
        "email": "marty@msdrilling.com",
        "phone": "66565656565",
        "address1": "23 Wilfrid Road",
        "address2": "Sangbourne",
        "address3": null,
        "county": "Norfolk",
        "country": "England",
        "postcode": "NR1 5RT",
        "created_at": "2021-02-21T09:07:00.000000Z",
        "updated_at": "2021-02-21T09:25:25.000000Z",
        "deleted_at": null
    }
}

Example response (404):


{
    "success": 'Company record not found',
    "data": null
}

Request   

PUT api/v1/companies/{company}

PATCH api/v1/companies/{company}

URL Parameters

company  integer  
the ID of the company.

Body Parameters

name  string  
The name of the company.

email  string  
The email of the company.

phone  string  
The phone number of the company.

address1  string  
The first address line of the company.

address2  string  
The second address line of the company.

address3  string optional  
The third address line of the company.

county  string  
The county address of the company

country  string  
The country of the company

postcode  string  
The postcode of the company

Delete 'api/v1/companies': DELETE

Delete a company with a given id

Example request:

curl -X DELETE \
    "http://drillit-api.test/api/v1/companies/19" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/companies/19"
);

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

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

Example response (200):

{
    "success": true
}

Example response (404):


{
    "success": 'Company record not found',
    "data": null
}

Request   

DELETE api/v1/companies/{company}

URL Parameters

company  integer  
the ID of the company.

Endpoints

Authorize a client to access the user's account.

Example request:

curl -X GET \
    -G "http://drillit-api.test/oauth/authorize" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/authorize"
);

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

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

Example response (401):

{
    "message": "Unauthenticated."
}

Request   

GET oauth/authorize

Approve the authorization request.

Example request:

curl -X POST \
    "http://drillit-api.test/oauth/authorize" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/authorize"
);

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

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

Request   

POST oauth/authorize

Deny the authorization request.

Example request:

curl -X DELETE \
    "http://drillit-api.test/oauth/authorize" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/authorize"
);

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

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

Request   

DELETE oauth/authorize

Authorize a client to access the user's account.

Example request:

curl -X POST \
    "http://drillit-api.test/oauth/token" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/token"
);

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

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

Request   

POST oauth/token

Get all of the authorized tokens for the authenticated user.

Example request:

curl -X GET \
    -G "http://drillit-api.test/oauth/tokens" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/tokens"
);

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

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

Example response (401):

{
    "message": "Unauthenticated."
}

Request   

GET oauth/tokens

Delete the given token.

Example request:

curl -X DELETE \
    "http://drillit-api.test/oauth/tokens/quas" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/tokens/quas"
);

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

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

Request   

DELETE oauth/tokens/{token_id}

URL Parameters

token_id  string  

Get a fresh transient token cookie for the authenticated user.

Example request:

curl -X POST \
    "http://drillit-api.test/oauth/token/refresh" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/token/refresh"
);

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

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

Request   

POST oauth/token/refresh

Get all of the clients for the authenticated user.

Example request:

curl -X GET \
    -G "http://drillit-api.test/oauth/clients" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/clients"
);

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

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

Example response (401):

{
    "message": "Unauthenticated."
}

Request   

GET oauth/clients

Store a new client.

Example request:

curl -X POST \
    "http://drillit-api.test/oauth/clients" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/clients"
);

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

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

Request   

POST oauth/clients

Update the given client.

Example request:

curl -X PUT \
    "http://drillit-api.test/oauth/clients/consequatur" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/clients/consequatur"
);

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

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

Request   

PUT oauth/clients/{client_id}

URL Parameters

client_id  string  

Delete the given client.

Example request:

curl -X DELETE \
    "http://drillit-api.test/oauth/clients/pariatur" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/clients/pariatur"
);

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

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

Request   

DELETE oauth/clients/{client_id}

URL Parameters

client_id  string  

Get all of the available scopes for the application.

Example request:

curl -X GET \
    -G "http://drillit-api.test/oauth/scopes" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/scopes"
);

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

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

Example response (401):

{
    "message": "Unauthenticated."
}

Request   

GET oauth/scopes

Get all of the personal access tokens for the authenticated user.

Example request:

curl -X GET \
    -G "http://drillit-api.test/oauth/personal-access-tokens" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/personal-access-tokens"
);

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

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

Example response (401):

{
    "message": "Unauthenticated."
}

Request   

GET oauth/personal-access-tokens

Create a new personal access token for the user.

Example request:

curl -X POST \
    "http://drillit-api.test/oauth/personal-access-tokens" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/personal-access-tokens"
);

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

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

Request   

POST oauth/personal-access-tokens

Delete the given token.

Example request:

curl -X DELETE \
    "http://drillit-api.test/oauth/personal-access-tokens/aut" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/oauth/personal-access-tokens/aut"
);

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

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

Request   

DELETE oauth/personal-access-tokens/{token_id}

URL Parameters

token_id  string  

api/{fallbackPlaceholder}

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/omnis" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/omnis"
);

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

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

Example response (404):

{
    "message": "Resource Not Found. If error persists, contact dev@drillitlogs.com"
}

Request   

GET api/{fallbackPlaceholder}

URL Parameters

fallbackPlaceholder  string  

/

Example request:

curl -X GET \
    -G "http://drillit-api.test/" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/"
);

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

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

Example response (200):


<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <title>Laravel</title>

        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">

        <!-- Styles -->
        <style>
            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}}
        </style>

        <style>
            body {
                font-family: 'Nunito';
            }
        </style>
    </head>
    <body class="antialiased">
        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">

            <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
                <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                    <svg viewBox="0 0 651 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto text-gray-700 sm:h-20">
                        <g clip-path="url(#clip0)" fill="#EF3B2D">
                            <path d="M248.032 44.676h-16.466v100.23h47.394v-14.748h-30.928V44.676zM337.091 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.431 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162-.001 2.863-.479 5.584-1.432 8.161zM463.954 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.432 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162 0 2.863-.479 5.584-1.432 8.161zM650.772 44.676h-15.606v100.23h15.606V44.676zM365.013 144.906h15.607V93.538h26.776V78.182h-42.383v66.724zM542.133 78.182l-19.616 51.096-19.616-51.096h-15.808l25.617 66.724h19.614l25.617-66.724h-15.808zM591.98 76.466c-19.112 0-34.239 15.706-34.239 35.079 0 21.416 14.641 35.079 36.239 35.079 12.088 0 19.806-4.622 29.234-14.688l-10.544-8.158c-.006.008-7.958 10.449-19.832 10.449-13.802 0-19.612-11.127-19.612-16.884h51.777c2.72-22.043-11.772-40.877-33.023-40.877zm-18.713 29.28c.12-1.284 1.917-16.884 18.589-16.884 16.671 0 18.697 15.598 18.813 16.884h-37.402zM184.068 43.892c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002-35.648-20.524a2.971 2.971 0 00-2.964 0l-35.647 20.522-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v38.979l-29.706 17.103V24.493a3 3 0 00-.103-.776c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002L40.098 1.396a2.971 2.971 0 00-2.964 0L1.487 21.919l-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v122.09c0 1.063.568 2.044 1.489 2.575l71.293 41.045c.156.089.324.143.49.202.078.028.15.074.23.095a2.98 2.98 0 001.524 0c.069-.018.132-.059.2-.083.176-.061.354-.119.519-.214l71.293-41.045a2.971 2.971 0 001.489-2.575v-38.979l34.158-19.666a2.971 2.971 0 001.489-2.575V44.666a3.075 3.075 0 00-.106-.774zM74.255 143.167l-29.648-16.779 31.136-17.926.001-.001 34.164-19.669 29.674 17.084-21.772 12.428-43.555 24.863zm68.329-76.259v33.841l-12.475-7.182-17.231-9.92V49.806l12.475 7.182 17.231 9.92zm2.97-39.335l29.693 17.095-29.693 17.095-29.693-17.095 29.693-17.095zM54.06 114.089l-12.475 7.182V46.733l17.231-9.92 12.475-7.182v74.537l-17.231 9.921zM38.614 7.398l29.693 17.095-29.693 17.095L8.921 24.493 38.614 7.398zM5.938 29.632l12.475 7.182 17.231 9.92v79.676l.001.005-.001.006c0 .114.032.221.045.333.017.146.021.294.059.434l.002.007c.032.117.094.222.14.334.051.124.088.255.156.371a.036.036 0 00.004.009c.061.105.149.191.222.288.081.105.149.22.244.314l.008.01c.084.083.19.142.284.215.106.083.202.178.32.247l.013.005.011.008 34.139 19.321v34.175L5.939 144.867V29.632h-.001zm136.646 115.235l-65.352 37.625V148.31l48.399-27.628 16.953-9.677v33.862zm35.646-61.22l-29.706 17.102V66.908l17.231-9.92 12.475-7.182v33.841z"/>
                        </g>
                    </svg>
                </div>

                <div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg">
                    <div class="grid grid-cols-1 md:grid-cols-2">
                        <div class="p-6">
                            <div class="flex items-center">
                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg>
                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel.com/docs" class="underline text-gray-900 dark:text-white">Documentation</a></div>
                            </div>

                            <div class="ml-12">
                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
                                    Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
                                </div>
                            </div>
                        </div>

                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-t-0 md:border-l">
                            <div class="flex items-center">
                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path><path d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laracasts.com" class="underline text-gray-900 dark:text-white">Laracasts</a></div>
                            </div>

                            <div class="ml-12">
                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
                                    Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
                                </div>
                            </div>
                        </div>

                        <div class="p-6 border-t border-gray-200 dark:border-gray-700">
                            <div class="flex items-center">
                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"></path></svg>
                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel-news.com/" class="underline text-gray-900 dark:text-white">Laravel News</a></div>
                            </div>

                            <div class="ml-12">
                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
                                    Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
                                </div>
                            </div>
                        </div>

                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-l">
                            <div class="flex items-center">
                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
                                <div class="ml-4 text-lg leading-7 font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</div>
                            </div>

                            <div class="ml-12">
                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
                                    Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="flex justify-center mt-4 sm:items-center sm:justify-between">
                    <div class="text-center text-sm text-gray-500 sm:text-left">
                        <div class="flex items-center">
                            <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="-mt-px w-5 h-5 text-gray-400">
                                <path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
                            </svg>

                            <a href="https://laravel.bigcartel.com" class="ml-1 underline">
                                Shop
                            </a>

                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="ml-4 -mt-px w-5 h-5 text-gray-400">
                                <path d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
                            </svg>

                            <a href="https://github.com/sponsors/taylorotwell" class="ml-1 underline">
                                Sponsor
                            </a>
                        </div>
                    </div>

                    <div class="ml-4 text-center text-sm text-gray-500 sm:text-right sm:ml-0">
                        Laravel v8.36.0 (PHP v8.0.3)
                    </div>
                </div>
            </div>
        </div>
    </body>
</html>

Request   

GET /

Hole Locations

APIs for managing hole locations

List 'api/v1/hole-locations': GET

Get all hole locations

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/hole-locations" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/hole-locations"
);

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

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

Example response (200):

{
    "success": true,
    "data": [
        {
            "id": 1,
            "location_identifier": "BH001",
            "project_id": 2,
            "starting_hole_type_id": 1,
            "activity_type": "CP (cable percussion)",
            "status": "PRELIM",
            "grid_easting": "523145.00",
            "grid_northing": "178456.12",
            "grid_ref_system": "OSGB",
            "ground_level": "16.23",
            "general_remarks": "Some very general remarks",
            "activity_purpose": "Groundwater observation well",
            "activity_termination_reason": "Abandoned on engineer's instruction",
            "osgb_grid_ref": "TQ231784",
            "start_date": "2021-02-23",
            "end_date": "2021-08-23"
        }
    ]
}

Example response (404):


{
    "success": 'Hole location record not found',
    "data": null
}

Request   

GET api/v1/hole-locations

Save 'api/v1/hole-locations': POST

Add a new hole loction

Example request:

curl -X POST \
    "http://drillit-api.test/api/v1/hole-locations" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"hole_identifier":"BH001","project_id":3,"starting_hole_type_id":"ducimus","activity_type":"deserunt","status":"qui","grid_easting":"cupiditate","grid_northing":"velit","grid_ref_system":"expedita","ground_level":6.786700843,"general_remarks":"id","activity_purpose":"non","activity_termination_reason":"illo","osgb_grid_ref":"consectetur","start_date":"2021-02-23","end_date":"2021-02-25"}'
const url = new URL(
    "http://drillit-api.test/api/v1/hole-locations"
);

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

let body = {
    "hole_identifier": "BH001",
    "project_id": 3,
    "starting_hole_type_id": "ducimus",
    "activity_type": "deserunt",
    "status": "qui",
    "grid_easting": "cupiditate",
    "grid_northing": "velit",
    "grid_ref_system": "expedita",
    "ground_level": 6.786700843,
    "general_remarks": "id",
    "activity_purpose": "non",
    "activity_termination_reason": "illo",
    "osgb_grid_ref": "consectetur",
    "start_date": "2021-02-23",
    "end_date": "2021-02-25"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 2,
        "location_identifier": "BH001",
        "project_id": "2",
        "starting_hole_type_id": "1",
        "activity_type": "CP (cable percussion)",
        "status": "PRELIM",
        "grid_easting": "523145.00",
        "grid_northing": "178456.12",
        "grid_ref_system": "OSGB",
        "ground_level": "16.23",
        "general_remarks": "Some general remarks",
        "activity_purpose": "Groundwater observation well",
        "activity_termination_reason": "Abandoned on engineer's instruction",
        "osgb_grid_ref": "TQ231784",
        "start_date": "2021-02-23",
        "end_date": "2021-08-23"
    }
}

Request   

POST api/v1/hole-locations

Body Parameters

hole_identifier  string  
The indentifying code for the hole location.

project_id  integer  
The id of the project that owns this hole location.

starting_hole_type_id  The optional  
id of the hole type when the tests began. Example 1

activity_type  string  
The type of activity to be actioned on this hole location. Example CP (cable percussion)

status  string optional  
The status of this hole location. Example PRELIM

grid_easting  string optional  
The east coordinate of this hole location. Example 523145.00

grid_northing  string optional  
The north coordinate of this hole location. Example 178456.12

grid_ref_system  string optional  
The grid ref system used for this hole location. Example OSGB

ground_level  number optional  
The ground level measurement for this hole location. Example 16.23

general_remarks  string optional  
General commnets relating to this hole location. Example Difficult access to location

activity_purpose  string optional  
The purpose of the activity at this hole location. Example Groundwater observation well

activity_termination_reason  string optional  
Reason for activity at the hole to end. Example Abandoned on engineer's instruction

osgb_grid_ref  string optional  
The grid reference of the location. Example TQ231784

start_date  string  
The start date of the hole location.

end_date  string optional  
The end date of the hole location.

Show 'api/v1/hole-locations': GET

Return a hole location for a given ID

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/hole-locations/13" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/hole-locations/13"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "location_identifier": "BH001",
        "project_id": 2,
        "starting_hole_type_id": 1,
        "activity_type": "CP (cable percussion)",
        "status": "PRELIM",
        "grid_easting": "523145.00",
        "grid_northing": "178456.12",
        "grid_ref_system": "OSGB",
        "ground_level": "16.23",
        "general_remarks": "Some very general remarks",
        "activity_purpose": "Groundwater observation well",
        "activity_termination_reason": "Abandoned on engineer's instruction",
        "osgb_grid_ref": "TQ231784",
        "start_date": "2021-02-23",
        "end_date": "2021-08-23"
    }
}

Example response (404):


{
    "success": 'Hole location record not found',
    "data": null
}

Request   

GET api/v1/hole-locations/{hole_location}

URL Parameters

hole_location  integer  
the ID of the hole location.

Update 'api/v1/hole-locations': PUT

Update a location with a given ID

Example request:

curl -X PUT \
    "http://drillit-api.test/api/v1/hole-locations/2" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"hole_identifier":"BH001","project_id":3,"starting_hole_type_id":"asperiores","activity_type":"totam","status":"repudiandae","grid_easting":"velit","grid_northing":"rerum","grid_ref_system":"beatae","ground_level":107.72200011,"general_remarks":"quo","activity_purpose":"qui","activity_termination_reason":"fugiat","osgb_grid_ref":"dolor","start_date":"2021-02-23","end_date":"2021-02-25"}'
const url = new URL(
    "http://drillit-api.test/api/v1/hole-locations/2"
);

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

let body = {
    "hole_identifier": "BH001",
    "project_id": 3,
    "starting_hole_type_id": "asperiores",
    "activity_type": "totam",
    "status": "repudiandae",
    "grid_easting": "velit",
    "grid_northing": "rerum",
    "grid_ref_system": "beatae",
    "ground_level": 107.72200011,
    "general_remarks": "quo",
    "activity_purpose": "qui",
    "activity_termination_reason": "fugiat",
    "osgb_grid_ref": "dolor",
    "start_date": "2021-02-23",
    "end_date": "2021-02-25"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "location_identifier": "BH001",
        "project_id": "2",
        "starting_hole_type_id": "1",
        "activity_type": "CP (cable percussion)",
        "status": "PRELIM",
        "grid_easting": "523145.00",
        "grid_northing": "178456.12",
        "grid_ref_system": "OSGB",
        "ground_level": "16.23",
        "general_remarks": "Some very general remarks",
        "activity_purpose": "Groundwater observation well",
        "activity_termination_reason": "Abandoned on engineer's instruction",
        "osgb_grid_ref": "TQ231784",
        "start_date": "2021-02-23",
        "end_date": "2021-08-23",
        "created_at": "2021-03-21T08:49:25.000000Z",
        "updated_at": "2021-03-21T09:05:47.000000Z",
        "deleted_at": null
    }
}

Example response (404):


{
    "success": 'Hole location record not found',
    "data": null
}

Request   

PUT api/v1/hole-locations/{hole_location}

PATCH api/v1/hole-locations/{hole_location}

URL Parameters

hole_location  integer  
the ID of the hole location.

Body Parameters

hole_identifier  string  
The indentifying code for the hole location.

project_id  integer  
The id of the project that owns this hole location.

starting_hole_type_id  The optional  
id of the hole type when the tests began. Example 1

activity_type  string  
The type of activity to be actioned on this hole location. Example CP (cable percussion)

status  string optional  
The status of this hole location. Example PRELIM

grid_easting  string optional  
The east coordinate of this hole location. Example 523145.00

grid_northing  string optional  
The north coordinate of this hole location. Example 178456.12

grid_ref_system  string optional  
The grid ref system used for this hole location. Example OSGB

ground_level  number optional  
The ground level measurement for this hole location. Example 16.23

general_remarks  string optional  
General commnets relating to this hole location. Example Difficult access to location

activity_purpose  string optional  
The purpose of the activity at this hole location. Example Groundwater observation well

activity_termination_reason  string optional  
Reason for activity at the hole to end. Example Abandoned on engineer's instruction

osgb_grid_ref  string optional  
The grid reference of the location. Example TQ231784

start_date  string  
The start date of the hole location.

end_date  string optional  
The end date of the hole location.

Delete 'api/v1/hole-locations': DELETE

Delete a hole location with a given id

Example request:

curl -X DELETE \
    "http://drillit-api.test/api/v1/hole-locations/8" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/hole-locations/8"
);

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

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

Example response (200):

{
    "success": true
}

Example response (404):


{
    "success": 'Hole location record not found',
    "data": null
}

Request   

DELETE api/v1/hole-locations/{hole_location}

URL Parameters

hole_location  integer  
the ID of the hole location.

Projects

APIs for managing Projects

List 'api/v1/projects': GET

Get all projects and associated hole locations

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/projects" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/projects"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 2,
        "project_identifier": "PROJ-1",
        "company_id": 1,
        "name": "Bovis Homes",
        "location": "Norwich",
        "start_date": "2021-02-23",
        "end_date": "2021-08-25",
        "client": null,
        "contractor_name": null,
        "engineer": null,
        "job_no": null,
        "geo_north": null,
        "geo_south": null,
        "site_description": null,
        "key_site_features": null,
        "comments": null,
        "created_at": "2021-03-21T08:46:24.000000Z",
        "updated_at": "2021-03-21T08:46:24.000000Z",
        "hole_locations": [
            {
                "id": 1,
                "location_identifier": "BH001",
                "project_id": 2,
                "starting_hole_type_id": 1,
                "activity_type": "CP (cable percussion)",
                "status": "PRELIM",
                "grid_easting": "523145.00",
                "grid_northing": "178456.12",
                "grid_ref_system": "OSGB",
                "ground_level": 69.11,
                "general_remarks": "Some very general remarks",
                "activity_purpose": "Groundwater observation well",
                "activity_termination_reason": "Abandoned on engineer's instruction",
                "osgb_grid_ref": "TQ231784",
                "start_date": "2021-02-23",
                "end_date": "2021-08-23"
            }
        ],
        "rigs": [
            {
                "id": 1,
                "name": "Rig 99",
                "type": "Dando 3000",
                "plant_id": "4321",
                "test_date_expiry": "2021-12-07",
                "spt_id": 1,
                "test_method": "BS EN ISO 22476-2",
                "spt": {
                    "id": 1,
                    "id_ref": "SPT99",
                    "rod_type": "1 1\/2 Whitworth",
                    "calibration_date": "2021-02-23",
                    "energy_ratio": 99
                }
            }
        ]
    }
}

Example response (404):


{
    "success": 'Project record not found',
    "data": null
}

Request   

GET api/v1/projects

Save 'api/v1/projects': POST

Add a new project

Example request:

curl -X POST \
    "http://drillit-api.test/api/v1/projects" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"project_identifier":"PROJ-1","company_id":3,"name":"NDR Groundworks","start_date":"2021-03-15","end_date":"2021-03-31","client":"ACME Engineering","contractor":"ACME Drilling Ltd","engineer":"ACME Consulting","job_no":"RobRef3","geo_north":"52.563072","geo_east":"1.56436","site_description":"Some text describing the site","key_site_features":"Some text describing key features of the site","comments":"Some general comments about the site"}'
const url = new URL(
    "http://drillit-api.test/api/v1/projects"
);

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

let body = {
    "project_identifier": "PROJ-1",
    "company_id": 3,
    "name": "NDR Groundworks",
    "start_date": "2021-03-15",
    "end_date": "2021-03-31",
    "client": "ACME Engineering",
    "contractor": "ACME Drilling Ltd",
    "engineer": "ACME Consulting",
    "job_no": "RobRef3",
    "geo_north": "52.563072",
    "geo_east": "1.56436",
    "site_description": "Some text describing the site",
    "key_site_features": "Some text describing key features of the site",
    "comments": "Some general comments about the site"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 16,
        "project_identifier": "PROJ-2",
        "company_id": "4",
        "name": "Bovis Homes",
        "location": "Norwich",
        "start_date": "2021-02-23",
        "end_date": "2021-08-25",
        "client": null,
        "contractor_name": null,
        "engineer": null,
        "job_no": null,
        "geo_north": null,
        "geo_south": null,
        "site_description": null,
        "key_site_features": null,
        "comments": null,
        "created_at": "2021-02-21T10:01:57.000000Z",
        "updated_at": "2021-02-21T10:01:57.000000Z"
    }
}

Request   

POST api/v1/projects

Body Parameters

project_identifier  string  
The indentifying code for the project.

company_id  integer  
The id of the company who owns the project.

name  string  
The name of the project.

start_date  string  
The start date of the project.

end_date  string optional  
The end date of the project.

client  string optional  
The name of the client.

contractor  name optional  
string.

engineer  string optional  

job_no  string optional  

geo_north  string optional  
Geo Location North.

geo_east  string optional  
Geo Location East.

site_description  string optional  

key_site_features  string optional  

comments  string optional  

Show 'api/v1/projects': GET

Return a project, and its associated hole locations, for a given ID

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/projects/8" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/projects/8"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 2,
        "project_identifier": "PROJ-1",
        "company_id": 1,
        "name": "Bovis Homes",
        "location": "Norwich",
        "start_date": "2021-02-23",
        "end_date": "2021-08-25",
        "client": null,
        "contractor_name": null,
        "engineer": null,
        "job_no": null,
        "geo_north": null,
        "geo_south": null,
        "site_description": null,
        "key_site_features": null,
        "comments": null,
        "created_at": "2021-03-21T08:46:24.000000Z",
        "updated_at": "2021-03-21T08:46:24.000000Z",
        "hole_locations": [
            {
                "id": 1,
                "location_identifier": "BH001",
                "project_id": 2,
                "starting_hole_type_id": 1,
                "activity_type": "CP (cable percussion)",
                "status": "PRELIM",
                "grid_easting": "523145.00",
                "grid_northing": "178456.12",
                "grid_ref_system": "OSGB",
                "ground_level": 69.11,
                "general_remarks": "Some very general remarks",
                "activity_purpose": "Groundwater observation well",
                "activity_termination_reason": "Abandoned on engineer's instruction",
                "osgb_grid_ref": "TQ231784",
                "start_date": "2021-02-23",
                "end_date": "2021-08-23"
            }
        ],
        "rigs": [
            {
                "id": 1,
                "name": "Rig 99",
                "type": "Dando 3000",
                "plant_id": "4321",
                "test_date_expiry": "2021-12-07",
                "spt_id": 1,
                "test_method": "BS EN ISO 22476-2",
                "spt": {
                    "id": 1,
                    "id_ref": "SPT99",
                    "rod_type": "1 1\/2 Whitworth",
                    "calibration_date": "2021-02-23",
                    "energy_ratio": 99
                }
            }
        ]
    }
}

Example response (404):


{
    "success": 'Project record not found',
    "data": null
}

Request   

GET api/v1/projects/{project}

URL Parameters

project  integer  
the ID of the project.

Update 'api/v1/projects': PUT

Update a project with a given ID

Example request:

curl -X PUT \
    "http://drillit-api.test/api/v1/projects/8" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"project_identifier":"PROJ-1","company_id":3,"name":"NDR Groundworks","start_date":"2021-03-15","end_date":"2021-03-31","client":"ACME Engineering","contractor":"ACME Drilling Ltd","engineer":"ACME Consulting","job_no":"RobRef3","geo_north":"52.563072","geo_east":"1.56436","site_description":"Some text describing the site","key_site_features":"Some text describing key features of the site","comments":"Some general comments about the site"}'
const url = new URL(
    "http://drillit-api.test/api/v1/projects/8"
);

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

let body = {
    "project_identifier": "PROJ-1",
    "company_id": 3,
    "name": "NDR Groundworks",
    "start_date": "2021-03-15",
    "end_date": "2021-03-31",
    "client": "ACME Engineering",
    "contractor": "ACME Drilling Ltd",
    "engineer": "ACME Consulting",
    "job_no": "RobRef3",
    "geo_north": "52.563072",
    "geo_east": "1.56436",
    "site_description": "Some text describing the site",
    "key_site_features": "Some text describing key features of the site",
    "comments": "Some general comments about the site"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 8,
        "project_identifier": "PROJ-BBB",
        "company_id": "3",
        "name": "Bovis Homes",
        "location": "Bungay",
        "start_date": "2021-02-23",
        "end_date": "2021-08-25",
        "client": null,
        "contractor_name": null,
        "engineer": null,
        "job_no": null,
        "geo_north": null,
        "geo_south": null,
        "site_description": null,
        "key_site_features": null,
        "site_history": null,
        "comments": null,
        "created_at": "2021-02-16T09:39:52.000000Z",
        "updated_at": "2021-02-21T10:07:23.000000Z",
        "deleted_at": null
    }
}

Example response (404):


{
    "success": 'Project record not found',
    "data": null
}

Request   

PUT api/v1/projects/{project}

PATCH api/v1/projects/{project}

URL Parameters

project  integer  
the ID of the project.

Body Parameters

project_identifier  string  
The indentifying code for the project.

company_id  integer  
The id of the company who owns the project.

name  string  
The name of the project.

start_date  string  
The start date of the project.

end_date  string optional  
The end date of the project.

client  string optional  
The name of the client.

contractor  name optional  
string.

engineer  string optional  

job_no  string optional  

geo_north  string optional  
Geo Location North.

geo_east  string optional  
Geo Location East.

site_description  string optional  

key_site_features  string optional  

comments  string optional  

Delete 'api/v1/projects': DELETE

Delete a project with a given id

Example request:

curl -X DELETE \
    "http://drillit-api.test/api/v1/projects/15" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/projects/15"
);

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

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

Example response (200):

{
    "success": true
}

Example response (404):


{
    "success": 'Project record not found',
    "data": null
}

Request   

DELETE api/v1/projects/{project}

URL Parameters

project  integer  
the ID of the project.

Rigs

APIs for managing Rigs

List 'api/v1/rigs': GET

Get all rigs

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/rigs" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/rigs"
);

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

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

Example response (200):

{
    "success": true,
    "data": [
        {
            "id": 1,
            "name": "Rig 1",
            "type": "Dando 3000",
            "plant_id": "1234",
            "test_date_expiry": "2021-12-07",
            "spt_id": 1,
            "test_method": "BS EN ISO 22476-2"
        }
    ]
}

Example response (404):


{
    "success": 'Rig record not found',
    "data": null
}

Request   

GET api/v1/rigs

Save 'api/v1/rigs': POST

Add a new rig

Example request:

curl -X POST \
    "http://drillit-api.test/api/v1/rigs" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"Rig 1","type":"Dando 3000","plant_id":1234,"test_date_expiry":"2021-12-07","spt_id":1,"test_method":0}'
const url = new URL(
    "http://drillit-api.test/api/v1/rigs"
);

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

let body = {
    "name": "Rig 1",
    "type": "Dando 3000",
    "plant_id": 1234,
    "test_date_expiry": "2021-12-07",
    "spt_id": 1,
    "test_method": 0
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "name": "Rig 1",
        "type": "Dando 3000",
        "plant_id": "1234",
        "test_date_expiry": "2021-12-07",
        "spt_id": "1",
        "test_method": "BS EN ISO 22476-2"
    }
}

Request   

POST api/v1/rigs

Body Parameters

name  string  
the name of the rig.

type  string  
the type of the rig.

plant_id  integer  
the id of the plant.

test_date_expiry  string  
expiry date of the current test.

spt_id  integer  
the id of the associated SPT hammer.

test_method  integer  
the name of the test method.

Show 'api/v1/rigs': GET

Return a rig for a given ID

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/rigs/1" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/rigs/1"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "name": "Rig 1",
        "type": "Dando 3000",
        "plant_id": "1234",
        "test_date_expiry": "2021-12-07",
        "spt_id": 1,
        "test_method": "BS EN ISO 22476-2"
    }
}

Example response (404):


{
    "success": 'Rig record not found',
    "data": null
}

Request   

GET api/v1/rigs/{rig}

URL Parameters

rig  integer  
the ID of the rig.

Update 'api/v1/rigs': PUT

Update a rig with a given ID

Example request:

curl -X PUT \
    "http://drillit-api.test/api/v1/rigs/8" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"name":"Rig 1","type":"Dando 3000","plant_id":1234,"test_date_expiry":"2021-12-07","spt_id":1,"test_method":0}'
const url = new URL(
    "http://drillit-api.test/api/v1/rigs/8"
);

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

let body = {
    "name": "Rig 1",
    "type": "Dando 3000",
    "plant_id": 1234,
    "test_date_expiry": "2021-12-07",
    "spt_id": 1,
    "test_method": 0
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "name": "Rig 99",
        "type": "Dando 3000",
        "plant_id": "4321",
        "test_date_expiry": "2021-12-07",
        "spt_id": "1",
        "test_method": "BS EN ISO 22476-2",
        "created_at": "2021-03-05T08:46:21.000000Z",
        "updated_at": "2021-03-05T09:01:56.000000Z",
        "deleted_at": null
    }
}

Example response (404):


{
    "success": 'Rig record not found',
    "data": null
}

Request   

PUT api/v1/rigs/{rig}

PATCH api/v1/rigs/{rig}

URL Parameters

rig  integer  
the ID of the rig.

Body Parameters

name  string  
the name of the rig.

type  string  
the type of the rig.

plant_id  integer  
the id of the plant.

test_date_expiry  string  
expiry date of the current test.

spt_id  integer  
the id of the associated SPT hammer.

test_method  integer  
the name of the test method.

Delete 'api/v1/rigs': DELETE

Delete a rig with a given id

Example request:

curl -X DELETE \
    "http://drillit-api.test/api/v1/rigs/1" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/rigs/1"
);

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

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

Example response (200):

{
    "success": true
}

Example response (404):


{
    "success": 'Rig record not found',
    "data": null
}

Request   

DELETE api/v1/rigs/{rig}

URL Parameters

rig  integer  
the ID of the rig.

Save Data

APIs for saving action data

Save 'api/v1/projects': POST

Save data from borehole actions

Example request:

curl -X POST \
    "http://drillit-api.test/api/v1/actions/save" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"task_type":"action_chiselling","hole_type_id":1,"hole_location_id":"3","depth_at_start":1.2,"depth_at_end":2.2,"start_time":"2021-04-12 07:06:53","remarks":"waterlogged ground"}'
const url = new URL(
    "http://drillit-api.test/api/v1/actions/save"
);

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

let body = {
    "task_type": "action_chiselling",
    "hole_type_id": 1,
    "hole_location_id": "3",
    "depth_at_start": 1.2,
    "depth_at_end": 2.2,
    "start_time": "2021-04-12 07:06:53",
    "remarks": "waterlogged ground"
}

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

Example response (200):

{
    "success": true,
    "data": {
        "depth_at_start": "1.2",
        "depth_at_end": 2.2,
        "start_time": "2021-04-12 07:06:53",
        "general_remarks": "the chisell sprung a leak.",
        "updated_at": "2021-04-14T07:01:16.000000Z",
        "created_at": "2021-04-14T07:01:16.000000Z",
        "id": 15
    }
}

Request   

POST api/v1/actions/save

Body Parameters

task_type  string  
The predefined task name for chiselling.

hole_type_id  integer  
The id iof the hole type (eg. cable percussive, window sample).

hole_location_id  id  
The id of the hole being actioned.

depth_at_start  number  
The depth at the start of the action.

depth_at_end  number  
The depth at the end of the action.

start_time  datetime  
The name of the project.

remarks  string optional  
Any remarks about that action.

SPT Hammers

APIs for managing SPT Hammers

List 'api/v1/spt-hammers': GET

Get all SPT hammers

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/spt-hammers" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/spt-hammers"
);

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

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

Example response (200):

{
    "success": true,
    "data": [
        {
            "id": 1,
            "id_ref": "SPT34",
            "rod_type": "1 1\/2 Whitworth",
            "calibration_date": "2021-02-23",
            "energy_ratio": 67
        }
    ]
}

Example response (404):


{
    "success": 'SPT hammer record not found',
    "data": null
}

Request   

GET api/v1/spt-hammers

Save 'api/v1/spt-hammers': POST

Add a new SPT Hammer

Example request:

curl -X POST \
    "http://drillit-api.test/api/v1/spt-hammers" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id_ref":"SPT34","rod_type":"1 1\/2 Whitworth","calibration_date":"2021-02-23","energy_ratio":67}'
const url = new URL(
    "http://drillit-api.test/api/v1/spt-hammers"
);

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

let body = {
    "id_ref": "SPT34",
    "rod_type": "1 1\/2 Whitworth",
    "calibration_date": "2021-02-23",
    "energy_ratio": 67
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "id_ref": "SPT34",
        "rod_type": "1 1\/2 Whitworth",
        "calibration_date": "2021-02-23",
        "energy_ratio": "67"
    }
}

Request   

POST api/v1/spt-hammers

Body Parameters

id_ref  string  
the reference id of the hammer.

rod_type  string  
the rod type of the hammer.

calibration_date  string  
the calibration date of the hammer.

energy_ratio  integer  
the energy ratio of the hammer.

Show 'api/v1/spt-hammers': GET

Return a hammer for a given ID

Example request:

curl -X GET \
    -G "http://drillit-api.test/api/v1/spt-hammers/6" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/spt-hammers/6"
);

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

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "id_ref": "SPT99",
        "rod_type": "1 1\/2 Whitworth",
        "calibration_date": "2021-02-23",
        "energy_ratio": 99
    }
}

Example response (404):


{
    "success": 'SPT hammer record not found',
    "data": null
}

Request   

GET api/v1/spt-hammers/{spt_hammer}

URL Parameters

spt_hammer  integer  
the ID of the hammer.

Update 'api/v1/spt-hammers': PUT

Update a hammer with a given ID

Example request:

curl -X PUT \
    "http://drillit-api.test/api/v1/spt-hammers/5" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"id_ref":"SPT34","rod_type":"1 1\/2 Whitworth","calibration_date":"2021-02-23","energy_ratio":67}'
const url = new URL(
    "http://drillit-api.test/api/v1/spt-hammers/5"
);

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

let body = {
    "id_ref": "SPT34",
    "rod_type": "1 1\/2 Whitworth",
    "calibration_date": "2021-02-23",
    "energy_ratio": 67
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 1,
        "id_ref": "SPT99",
        "rod_type": "1 1\/2 Whitworth",
        "calibration_date": "2021-02-23",
        "energy_ratio": "99",
        "created_at": "2021-03-04T13:28:37.000000Z",
        "updated_at": "2021-03-05T07:53:18.000000Z",
        "deleted_at": null
    }
}

Example response (404):


{
    "success": 'SPT hammer record not found',
    "data": null
}

Request   

PUT api/v1/spt-hammers/{spt_hammer}

PATCH api/v1/spt-hammers/{spt_hammer}

URL Parameters

spt_hammer  integer  
the ID of the hammer.

Body Parameters

id_ref  string  
the reference id of the hammer.

rod_type  string  
the rod type of the hammer.

calibration_date  string  
the calibration date of the hammer.

energy_ratio  integer  
the energy ratio of the hammer.

Delete 'api/v1/spt-hammers': DELETE

Delete a hammer with a given id

Example request:

curl -X DELETE \
    "http://drillit-api.test/api/v1/spt-hammers/5" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/spt-hammers/5"
);

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

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

Example response (200):

{
    "success": true
}

Example response (404):


{
    "success": 'SPT hammer record not found',
    "data": null
}

Request   

DELETE api/v1/spt-hammers/{spt_hammer}

URL Parameters

spt_hammer  integer  
the ID of the hammer.

Users

APIs for managing Users

List 'api/register': POST

Register a user

Example request:

curl -X POST \
    "http://drillit-api.test/api/register" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"first_name":"Sally","last_name":"Brown","password":"letmein","email":"sb@email.com","telephone":"015050105015015","access_level":1,"is_active":true}'
const url = new URL(
    "http://drillit-api.test/api/register"
);

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

let body = {
    "first_name": "Sally",
    "last_name": "Brown",
    "password": "letmein",
    "email": "sb@email.com",
    "telephone": "015050105015015",
    "access_level": 1,
    "is_active": true
}

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

Example response (200):

{
    "token": "XXXXXX"
}

Request   

POST api/register

Body Parameters

first_name  string  
the first name of the user.

last_name  string  
the last name of the user.

password  string  
the password for the user.

email  string  
the email address of the user.

telephone  string optional  
the telephone number of the user.

access_level  integer  
the permission level of the user (1-3).

is_active  boolean  
is the user active true/false.

List 'api/login': POST

Login a user

Example request:

curl -X POST \
    "http://drillit-api.test/api/login" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"email":"sb@email.com","password":"letmein"}'
const url = new URL(
    "http://drillit-api.test/api/login"
);

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

let body = {
    "email": "sb@email.com",
    "password": "letmein"
}

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

Example response (200):

{
    "user": {
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiY2IwNGU0YmNlMDZlMGU0Yzk5Y2FjNjkwMTI5ZjlmOGI2YWZkNmE2ZjRiZDI4YzkyZWRlMzYyMjhlZWU0NmRlNDQ5N2MyYjUzMmU5NjRiNDkiLCJpYXQiOjE2MTcwODU5MTMsIm5iZiI6MTYxNzA4NTkxMywiZXhwIjoxNjQ4NjIxOTEzLCJzdWIiOiI0Iiwic2NvcGVzIjpbXX0.fFY8vsbKPcbnfANOBVbu0deEei29rdfyfv7cT3p7V_dEkmcXol4eTupGY7iqNG_nYVC0RS_6LvpTR0qnWXi3gqeiTcHnT87PQQ37KwJ1twUqJOjLufawP3EobC5gJUyeveAwvlc5bffZ_1aNIzOyKPHdDsW9moeABXv73hmYNFL7QEo9dtblcUZffzNi-8R_4k6AbLLGBCAJJ2BiSGDYRJzOuu2R9bamHO4i_8PQO2qd3SFYb_I3HFRYUTFc44xfB8EhR3JU45pdDgDv0Xnhvz3lcr2PvKrCIqH7_feWFb_lLW4YqT5voqBoW99G7_f875LwTIECQsFE16_wDp03nKOBJToKcEO7LpWjQICiNiOiZlfLPy-Fe1xIoAFgeJhm0RWZvZ5FeRX3CRO1-ORXlDoSu1QE5lDAoeDSZrKF3fs7349twGxNVcUOmoFeOhBXniKQW6YykyogT-9PQOjKaoS63juC32Rn0mhcQTgkeGVCggq1jYdb_w8pr3fe7D5pdgXiCEVobX9qmST9I_UkkQ6EQx16yue0XL9Eyx0sGA-vWozIRck0SvBSdYG7L6MQu83ZgF3k9tk87ywZoc1EWxR4rC5k1ha_C2rWeME_HV-4cve_y-7Ponw-c8hCvEoOsSvpiEIyuKEZtU-9xebhzIHRhiNaAsmnpG79UTO_blc",
        "first_name": "Martin",
        "last_name": "Long",
        "email": "martin@testing.com",
        "telephone": "01222635453",
        "company_id": 2,
        "access_level": 1,
        "is_active": 1,
        "company": {
            "id": 2,
            "name": "MS Drilling",
            "email": "marty@msdrilling.com",
            "phone": "66565656565",
            "address1": "23 Wilfrid Road",
            "address2": "Sangbourne",
            "address3": null,
            "county": "Norfolk",
            "country": "England",
            "postcode": "NR1 5RT",
            "created_at": "2021-03-21T08:48:55.000000Z",
            "updated_at": "2021-03-29T16:41:45.000000Z",
            "deleted_at": null
        }
    }
}

Example response (401):

{
    "error": "Unauthorised"
}

Request   

POST api/login

Body Parameters

email  string  
the email of the user.

password  string  
the password of the user.

List 'api/v1/users': PUT

Update a user

Example request:

curl -X PUT \
    "http://drillit-api.test/api/v1/users/rerum" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -d '{"first_name":"Sally","last_name":"Brown","password":"letmein","email":"sb@email.com","telephone":"015050105015015","access_level":1,"is_active":true}'
const url = new URL(
    "http://drillit-api.test/api/v1/users/rerum"
);

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

let body = {
    "first_name": "Sally",
    "last_name": "Brown",
    "password": "letmein",
    "email": "sb@email.com",
    "telephone": "015050105015015",
    "access_level": 1,
    "is_active": true
}

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

Example response (200):

{
    "success": true,
    "data": {
        "id": 8,
        "first_name": "Marty",
        "last_name": "Short",
        "email": "martin@testing5.com",
        "telephone": "45454545545",
        "email_verified_at": null,
        "access_level": "3",
        "is_active": "1",
        "created_at": "2021-03-27T15:35:48.000000Z",
        "updated_at": "2021-03-27T16:47:46.000000Z"
    }
}

Example response (401):

{
    "message": "User record not found",
    "data": null
}

Request   

PUT api/v1/users/{id}

URL Parameters

id  string  

Body Parameters

first_name  string  
the first name of the user.

last_name  string  
the last name of the user.

password  string  
the password for the user.

email  string  
the email address of the user.

telephone  string optional  
the telephone number of the user.

access_level  integer  
the permission level of the user (1-3).

is_active  boolean  
is the user active true/false.

Delete 'api/v1/users': DELETE

Delete a user with a given id

Example request:

curl -X DELETE \
    "http://drillit-api.test/api/v1/users/10" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json"
const url = new URL(
    "http://drillit-api.test/api/v1/users/10"
);

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

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

Example response (200):

{
    "success": true
}

Request   

DELETE api/v1/users/{id}

URL Parameters

id  integer  
the ID of the user.