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
}
Received response:
Request failed with error:
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"
}
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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."
}
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());
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());
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());
Received response:
Request failed with error:
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."
}
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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."
}
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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."
}
Received response:
Request failed with error:
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."
}
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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());
Received response:
Request failed with error:
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"
}
Received response:
Request failed with error:
/
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>
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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"
}
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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"
}
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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"
}
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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"
}
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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"
}
Received response:
Request failed with error:
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"
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error:
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
}
Received response:
Request failed with error: