Introduction
Josh McFarland Resume API Documentation
This documentation aims to provide all the information you need to work with my API.
Authenticating requests
This API is not authenticated. It is rate limited globally to 120 requests per minute.
Endpoints
GET api/activities
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/activities" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/activities"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 59
access-control-allow-origin: *
[
{
"id": 1,
"created_at": "2023-03-19T14:42:40.000000Z",
"updated_at": "2023-03-19T14:42:40.000000Z",
"organization": "Jackson House",
"position": "Volunteer"
},
{
"id": 3,
"created_at": "2023-03-19T15:02:33.000000Z",
"updated_at": "2023-03-19T15:02:33.000000Z",
"organization": "Habitat for Humanity",
"position": "Volunteer"
},
{
"id": 4,
"created_at": "2023-03-19T15:03:30.000000Z",
"updated_at": "2023-03-19T15:03:30.000000Z",
"organization": "TriCycle Community Garden",
"position": "Volunteer"
},
{
"id": 5,
"created_at": "2023-03-19T15:04:33.000000Z",
"updated_at": "2023-03-19T15:04:33.000000Z",
"organization": "Mid America Science Museum",
"position": "Computers Exhibit Presenter"
},
{
"id": 6,
"created_at": "2023-03-19T15:06:32.000000Z",
"updated_at": "2023-03-19T15:06:32.000000Z",
"organization": "Computers 4 Kids",
"position": "Server Administrator"
},
{
"id": 7,
"created_at": "2023-03-19T15:07:04.000000Z",
"updated_at": "2023-03-19T15:07:04.000000Z",
"organization": "Low Key Arts",
"position": "Board of Directors/Web Programmer"
},
{
"id": 8,
"created_at": "2023-03-19T15:07:25.000000Z",
"updated_at": "2023-03-19T15:07:25.000000Z",
"organization": "Two Rivers Federal Credit Union",
"position": "Board of Directors"
}
]
Received response:
Request failed with error:
GET api/activities/{id}
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/activities/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/activities/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
access-control-allow-origin: *
{
"id": 1,
"created_at": "2023-03-19T14:42:40.000000Z",
"updated_at": "2023-03-19T14:42:40.000000Z",
"organization": "Jackson House",
"position": "Volunteer"
}
Received response:
Request failed with error:
GET api/experiences
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/experiences" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/experiences"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 57
access-control-allow-origin: *
[
{
"id": 1,
"created_at": "2023-03-20T19:49:37.000000Z",
"updated_at": "2023-03-20T19:50:01.000000Z",
"category": "Languages",
"item": "BASH"
},
{
"id": 2,
"created_at": "2023-03-20T19:52:52.000000Z",
"updated_at": "2023-03-20T19:52:52.000000Z",
"category": "Languages",
"item": "C"
},
{
"id": 3,
"created_at": "2023-03-20T19:53:04.000000Z",
"updated_at": "2023-03-20T19:53:04.000000Z",
"category": "Languages",
"item": "C#"
},
{
"id": 4,
"created_at": "2023-03-20T19:53:13.000000Z",
"updated_at": "2023-03-20T19:53:13.000000Z",
"category": "Languages",
"item": "CSS"
},
{
"id": 5,
"created_at": "2023-03-20T19:53:23.000000Z",
"updated_at": "2023-03-20T19:53:23.000000Z",
"category": "Languages",
"item": "HTML"
},
{
"id": 6,
"created_at": "2023-03-20T19:53:35.000000Z",
"updated_at": "2023-03-20T19:53:35.000000Z",
"category": "Languages",
"item": "Java"
},
{
"id": 7,
"created_at": "2023-03-20T19:53:45.000000Z",
"updated_at": "2023-03-20T19:53:45.000000Z",
"category": "Languages",
"item": "Javascript"
},
{
"id": 8,
"created_at": "2023-03-20T19:54:23.000000Z",
"updated_at": "2023-03-20T19:54:23.000000Z",
"category": "Languages",
"item": "OCaml"
},
{
"id": 9,
"created_at": "2023-03-20T19:54:35.000000Z",
"updated_at": "2023-03-20T19:54:35.000000Z",
"category": "Languages",
"item": "PHP"
},
{
"id": 10,
"created_at": "2023-03-20T19:54:45.000000Z",
"updated_at": "2023-03-20T19:54:45.000000Z",
"category": "Languages",
"item": "Python"
},
{
"id": 11,
"created_at": "2023-03-20T19:54:54.000000Z",
"updated_at": "2023-03-20T19:54:54.000000Z",
"category": "Languages",
"item": "Ruby"
},
{
"id": 12,
"created_at": "2023-03-20T19:55:04.000000Z",
"updated_at": "2023-03-20T19:55:04.000000Z",
"category": "Languages",
"item": "SQL"
},
{
"id": 13,
"created_at": "2023-03-20T19:57:21.000000Z",
"updated_at": "2023-03-20T19:57:21.000000Z",
"category": "Frameworks",
"item": "Laravel"
},
{
"id": 14,
"created_at": "2023-03-20T19:57:41.000000Z",
"updated_at": "2023-03-20T19:57:41.000000Z",
"category": "Frameworks",
"item": "Rails"
},
{
"id": 15,
"created_at": "2023-03-20T19:57:53.000000Z",
"updated_at": "2023-03-20T19:57:53.000000Z",
"category": "Frameworks",
"item": "Bootstrap"
},
{
"id": 16,
"created_at": "2023-03-20T19:58:05.000000Z",
"updated_at": "2023-03-20T19:58:05.000000Z",
"category": "Frameworks",
"item": "HTMX"
},
{
"id": 17,
"created_at": "2023-03-20T19:58:19.000000Z",
"updated_at": "2023-03-20T19:58:19.000000Z",
"category": "Frameworks",
"item": "Tailwind CSS"
},
{
"id": 18,
"created_at": "2023-03-20T19:59:34.000000Z",
"updated_at": "2023-03-20T19:59:34.000000Z",
"category": "Architectures",
"item": "Windows"
},
{
"id": 19,
"created_at": "2023-03-20T19:59:44.000000Z",
"updated_at": "2023-03-20T19:59:44.000000Z",
"category": "Architectures",
"item": "Mac"
},
{
"id": 20,
"created_at": "2023-03-20T19:59:52.000000Z",
"updated_at": "2023-03-20T19:59:52.000000Z",
"category": "Architectures",
"item": "Linux"
},
{
"id": 21,
"created_at": "2023-03-20T20:00:16.000000Z",
"updated_at": "2023-03-20T20:00:36.000000Z",
"category": "Architectures",
"item": "Servers"
},
{
"id": 22,
"created_at": "2023-03-20T20:01:03.000000Z",
"updated_at": "2023-03-20T20:01:03.000000Z",
"category": "Architectures",
"item": "Desktops"
},
{
"id": 23,
"created_at": "2023-03-20T20:01:14.000000Z",
"updated_at": "2023-03-20T20:01:14.000000Z",
"category": "Architectures",
"item": "Laptops"
},
{
"id": 24,
"created_at": "2023-03-20T20:04:08.000000Z",
"updated_at": "2023-03-20T20:04:08.000000Z",
"category": "Networking",
"item": "Cisco Routing and Switching"
},
{
"id": 25,
"created_at": "2023-03-20T20:04:26.000000Z",
"updated_at": "2023-03-20T20:04:26.000000Z",
"category": "Networking",
"item": "Cisco Wireless 200-355"
},
{
"id": 26,
"created_at": "2023-03-20T20:05:08.000000Z",
"updated_at": "2023-03-20T20:05:08.000000Z",
"category": "Networking",
"item": "Installed Professional Networks for Businesses"
},
{
"id": 43,
"created_at": "2023-03-20T20:05:08.000000Z",
"updated_at": "2023-03-20T20:05:08.000000Z",
"category": "Networking",
"item": "OSI Model"
},
{
"id": 27,
"created_at": "2023-03-20T20:05:35.000000Z",
"updated_at": "2023-03-20T20:05:35.000000Z",
"category": "I.T.",
"item": "Data Recovery"
},
{
"id": 28,
"created_at": "2023-03-20T20:05:47.000000Z",
"updated_at": "2023-03-20T20:05:47.000000Z",
"category": "I.T.",
"item": "Machine Imaging"
},
{
"id": 29,
"created_at": "2023-03-20T20:06:08.000000Z",
"updated_at": "2023-03-20T20:06:08.000000Z",
"category": "I.T.",
"item": "Remote Deployment and Management"
},
{
"id": 30,
"created_at": "2023-03-20T20:06:22.000000Z",
"updated_at": "2023-03-20T20:06:22.000000Z",
"category": "I.T.",
"item": "Ticketing Systems"
},
{
"id": 31,
"created_at": "2023-03-20T20:06:33.000000Z",
"updated_at": "2023-03-20T20:06:33.000000Z",
"category": "I.T.",
"item": "Directory Services"
},
{
"id": 32,
"created_at": "2023-03-20T20:06:57.000000Z",
"updated_at": "2023-03-20T20:06:57.000000Z",
"category": "Security",
"item": "Custom 2FA Implementations"
},
{
"id": 33,
"created_at": "2023-03-20T20:07:08.000000Z",
"updated_at": "2023-03-20T20:07:08.000000Z",
"category": "Security",
"item": "API security"
},
{
"id": 34,
"created_at": "2023-03-20T20:07:28.000000Z",
"updated_at": "2023-03-20T20:07:28.000000Z",
"category": "Security",
"item": "Web Application and Network Firewalls"
},
{
"id": 35,
"created_at": "2023-03-20T20:07:45.000000Z",
"updated_at": "2023-03-20T20:07:45.000000Z",
"category": "Security",
"item": "SSL/TLS Certificates"
},
{
"id": 36,
"created_at": "2023-03-20T20:08:18.000000Z",
"updated_at": "2023-03-20T20:08:18.000000Z",
"category": "Security",
"item": "VPNs (Wireguard, IPSEC, L2TP"
},
{
"id": 37,
"created_at": "2023-03-20T20:08:43.000000Z",
"updated_at": "2023-03-20T20:08:43.000000Z",
"category": "Security",
"item": "Web Site Auth"
},
{
"id": 38,
"created_at": "2023-03-20T20:09:02.000000Z",
"updated_at": "2023-03-20T20:09:02.000000Z",
"category": "Security",
"item": "Server User/Group Perms and ACLs"
},
{
"id": 39,
"created_at": "2023-03-20T20:09:29.000000Z",
"updated_at": "2023-03-20T20:09:29.000000Z",
"category": "Technologies",
"item": "Mobile Tech (iOS/Android)"
},
{
"id": 40,
"created_at": "2023-03-20T20:10:37.000000Z",
"updated_at": "2023-03-20T20:10:37.000000Z",
"category": "Technologies",
"item": "Virtualization (Proxmox, Hyper-V, VMWare, QEMU, Virtualbox, Parallels, KVM)"
},
{
"id": 41,
"created_at": "2023-03-20T20:11:05.000000Z",
"updated_at": "2023-03-20T20:11:05.000000Z",
"category": "Technologies",
"item": "Web Administration (DNS, Certs, Hosting, Servers)"
},
{
"id": 42,
"created_at": "2023-03-20T20:11:18.000000Z",
"updated_at": "2023-03-20T20:11:18.000000Z",
"category": "Technologies",
"item": "Unity Game Engine"
}
]
Received response:
Request failed with error:
GET api/experiences/{id}
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/experiences/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/experiences/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 56
access-control-allow-origin: *
{
"id": 1,
"created_at": "2023-03-20T19:49:37.000000Z",
"updated_at": "2023-03-20T19:50:01.000000Z",
"category": "Languages",
"item": "BASH"
}
Received response:
Request failed with error:
GET api/employers
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/employers" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/employers"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 55
access-control-allow-origin: *
[
{
"id": 1,
"created_at": "2023-03-23T03:51:24.000000Z",
"updated_at": "2023-03-23T03:51:24.000000Z",
"employer": "Ouachita Baptist University",
"position": "Programmer",
"location": "Arkadelphia, AR"
},
{
"id": 2,
"created_at": "2023-03-23T03:54:04.000000Z",
"updated_at": "2023-03-23T03:54:04.000000Z",
"employer": "Airmax Communications, LLC",
"position": "Installer/Tower Monkey/Sysadmin",
"location": "Hope, AR"
},
{
"id": 3,
"created_at": "2023-03-23T03:54:42.000000Z",
"updated_at": "2023-03-23T03:54:42.000000Z",
"employer": "Startek",
"position": "Customer Security Department Supervisor",
"location": "Hot Springs, AR"
}
]
Received response:
Request failed with error:
GET api/employers/{id}
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/employers/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/employers/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 54
access-control-allow-origin: *
{
"id": 1,
"created_at": "2023-03-23T03:51:24.000000Z",
"updated_at": "2023-03-23T03:51:24.000000Z",
"employer": "Ouachita Baptist University",
"position": "Programmer",
"location": "Arkadelphia, AR"
}
Received response:
Request failed with error:
GET api/contacts
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/contacts" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/contacts"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 53
access-control-allow-origin: *
[
{
"id": 1,
"created_at": "2023-03-19T15:12:10.000000Z",
"updated_at": "2023-03-19T15:12:10.000000Z",
"link": "tel:501-625-2552",
"icon": "cellphone",
"description": "501-625-2552"
},
{
"id": 2,
"created_at": "2023-03-19T15:13:01.000000Z",
"updated_at": "2023-03-19T15:13:01.000000Z",
"link": "mailto:[email protected]",
"icon": "email",
"description": "[email protected]"
},
{
"id": 3,
"created_at": "2023-03-19T15:14:17.000000Z",
"updated_at": "2023-03-19T15:14:17.000000Z",
"link": "https://www.icloud.com/freeform/072NHnuMW1O49nFR0XjBh0qFQ#Server_network",
"icon": "freeform",
"description": "Home Net Map"
},
{
"id": 4,
"created_at": "2023-03-19T15:15:03.000000Z",
"updated_at": "2023-03-19T15:15:03.000000Z",
"link": "https://git.inner.gy",
"icon": "git",
"description": "git"
}
]
Received response:
Request failed with error:
GET api/contacts/{id}
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/contacts/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/contacts/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 52
access-control-allow-origin: *
{
"id": 1,
"created_at": "2023-03-19T15:12:10.000000Z",
"updated_at": "2023-03-19T15:12:10.000000Z",
"link": "tel:501-625-2552",
"icon": "cellphone",
"description": "501-625-2552"
}
Received response:
Request failed with error:
GET api/educations
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/educations" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/educations"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 51
access-control-allow-origin: *
[
{
"id": 1,
"created_at": "2023-03-21T02:29:01.000000Z",
"updated_at": "2023-03-21T02:29:01.000000Z",
"institution": "Ouachita Baptist University",
"institution_link": "https://obu.edu/",
"detail": "Attending for Bachelor of Science in Computer Science"
},
{
"id": 2,
"created_at": "2023-03-21T02:40:51.000000Z",
"updated_at": "2023-03-21T03:00:27.000000Z",
"institution": "National Park Community College",
"institution_link": "https://np.edu/",
"detail": "Associate of Science, Dean's Award"
},
{
"id": 3,
"created_at": "2023-03-21T02:58:19.000000Z",
"updated_at": "2023-03-21T02:58:19.000000Z",
"institution": "Quapaw Technical Institute",
"institution_link": "https://np.edu/about/history.aspx",
"detail": "Certificate of Computer Information Systems, won A+ certification for placing first in State VICA Competition"
}
]
Received response:
Request failed with error:
GET api/educations/{id}
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/educations/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/educations/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 50
access-control-allow-origin: *
{
"id": 1,
"created_at": "2023-03-21T02:29:01.000000Z",
"updated_at": "2023-03-21T02:29:01.000000Z",
"institution": "Ouachita Baptist University",
"institution_link": "https://obu.edu/",
"detail": "Attending for Bachelor of Science in Computer Science"
}
Received response:
Request failed with error:
GET api/references
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/references" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/references"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 49
access-control-allow-origin: *
[
{
"id": 1,
"created_at": "2023-03-24T04:14:40.000000Z",
"updated_at": "2023-03-24T04:14:40.000000Z",
"name": "Bill Phelps",
"phone": "870-245-4552",
"workplace": "Ouachita Baptist University",
"position": "Chief Information Officer"
},
{
"id": 2,
"created_at": "2023-03-24T04:14:40.000000Z",
"updated_at": "2023-03-24T04:14:40.000000Z",
"name": "Jeff Coventry",
"phone": "870-210-7222",
"workplace": "Two Rivers Credit Union",
"position": "CEO"
},
{
"id": 3,
"created_at": "2023-03-24T04:14:40.000000Z",
"updated_at": "2023-03-24T04:14:40.000000Z",
"name": "Erick Santisteban",
"phone": "903-650-8311",
"workplace": "Airmax Communications",
"position": "Owner"
},
{
"id": 4,
"created_at": "2023-03-24T04:14:40.000000Z",
"updated_at": "2023-03-24T04:14:40.000000Z",
"name": "Kris Flagg",
"phone": "214-293-4895",
"workplace": "Manager",
"position": "Startek"
},
{
"id": 5,
"created_at": "2023-03-24T04:14:40.000000Z",
"updated_at": "2023-03-24T04:14:40.000000Z",
"name": "Bob McCleskey",
"phone": "501-226-9426",
"workplace": "Computers 4 Kids",
"position": "Director"
}
]
Received response:
Request failed with error:
GET api/references/{id}
Example request:
curl --request GET \
--get "https://joshmcfarland.net/api/references/1" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
const url = new URL(
"https://joshmcfarland.net/api/references/1"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());
Example response (200):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 60
x-ratelimit-remaining: 48
access-control-allow-origin: *
{
"id": 1,
"created_at": "2023-03-24T04:14:40.000000Z",
"updated_at": "2023-03-24T04:14:40.000000Z",
"name": "Bill Phelps",
"phone": "870-245-4552",
"workplace": "Ouachita Baptist University",
"position": "Chief Information Officer"
}
Received response:
Request failed with error: