feat: inisialisasi project kit v2
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<title inertia>{{ config('app.name', 'Laravel') }}</title>
|
||||
|
||||
@php
|
||||
$settings = \Illuminate\Support\Facades\Cache::get('system_settings', []);
|
||||
$favicon = $settings['app_logo'] ?? null;
|
||||
@endphp
|
||||
|
||||
@if($favicon)
|
||||
<link rel="icon" type="image/x-icon" href="{{ $favicon }}">
|
||||
@endif
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Scripts -->
|
||||
@routes
|
||||
@viteReactRefresh
|
||||
@vite(['resources/js/app.tsx', "resources/js/Pages/{$page['component']}.tsx"])
|
||||
@inertiaHead
|
||||
</head>
|
||||
<body class="font-sans antialiased">
|
||||
@inertia
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,27 @@
|
||||
@extends('errors.layout')
|
||||
|
||||
@section('title', '403 — Access Forbidden')
|
||||
@section('code', '403')
|
||||
@section('badge-label', 'Access Denied')
|
||||
@section('dot-color', '#EF4444')
|
||||
@section('icon-bg', '#FEF2F2')
|
||||
@section('icon-color', '#EF4444')
|
||||
|
||||
@section('icon')
|
||||
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
|
||||
</svg>
|
||||
@endsection
|
||||
|
||||
@section('heading', 'Access Forbidden')
|
||||
@section('description', "You don't have the required permissions to access this resource. Contact your administrator if you believe this is a mistake.")
|
||||
|
||||
@section('actions')
|
||||
<a href="{{ url('/dashboard') }}" class="btn-primary">
|
||||
<svg width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
|
||||
</svg>
|
||||
Back to Dashboard
|
||||
</a>
|
||||
<a href="javascript:history.back()" class="btn-secondary">Go Back</a>
|
||||
@endsection
|
||||
@@ -0,0 +1,27 @@
|
||||
@extends('errors.layout')
|
||||
|
||||
@section('title', '404 — Page Not Found')
|
||||
@section('code', '404')
|
||||
@section('badge-label', 'Page Not Found')
|
||||
@section('dot-color', '#3B82F6')
|
||||
@section('icon-bg', '#EFF6FF')
|
||||
@section('icon-color', '#3B82F6')
|
||||
|
||||
@section('icon')
|
||||
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
||||
</svg>
|
||||
@endsection
|
||||
|
||||
@section('heading', 'Page Not Found')
|
||||
@section('description', "The page you're looking for has been moved, deleted, or simply doesn't exist in this system.")
|
||||
|
||||
@section('actions')
|
||||
<a href="{{ url('/dashboard') }}" class="btn-primary">
|
||||
<svg width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
|
||||
</svg>
|
||||
Back to Dashboard
|
||||
</a>
|
||||
<a href="javascript:history.back()" class="btn-secondary">Go Back</a>
|
||||
@endsection
|
||||
@@ -0,0 +1,27 @@
|
||||
@extends('errors.layout')
|
||||
|
||||
@section('title', '500 — Server Error')
|
||||
@section('code', '500')
|
||||
@section('badge-label', 'Internal Server Error')
|
||||
@section('dot-color', '#F59E0B')
|
||||
@section('icon-bg', '#FEF3C7')
|
||||
@section('icon-color', '#F59E0B')
|
||||
|
||||
@section('icon')
|
||||
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
||||
</svg>
|
||||
@endsection
|
||||
|
||||
@section('heading', 'Something Went Wrong')
|
||||
@section('description', 'The server encountered an unexpected condition that prevented it from fulfilling the request. Our team has been notified and is working on a fix.')
|
||||
|
||||
@section('actions')
|
||||
<a href="{{ url('/dashboard') }}" class="btn-primary">
|
||||
<svg width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
|
||||
</svg>
|
||||
Back to Dashboard
|
||||
</a>
|
||||
<button onclick="window.location.reload()" class="btn-secondary">Try Again</button>
|
||||
@endsection
|
||||
@@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>@yield('title') — biiproject kit v2</title>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
html, body { height: 100%; font-family: 'Inter', sans-serif; background: #E3EBE8; color: #3D4E4B; }
|
||||
|
||||
.wrapper {
|
||||
min-height: 100vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 2rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Background orbs */
|
||||
.orb {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
filter: blur(80px);
|
||||
opacity: 0.25;
|
||||
pointer-events: none;
|
||||
}
|
||||
.orb-1 { width: 500px; height: 500px; background: #3D4E4B; top: -100px; right: -100px; }
|
||||
.orb-2 { width: 400px; height: 400px; background: #D4A017; bottom: -80px; left: -80px; }
|
||||
|
||||
.card {
|
||||
background: white;
|
||||
border-radius: 2.5rem;
|
||||
padding: 4rem;
|
||||
max-width: 560px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
border: 1px solid rgba(0,0,0,0.05);
|
||||
box-shadow: 0 25px 60px rgba(61,78,75,0.08);
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: fadeUp 0.5s ease both;
|
||||
}
|
||||
|
||||
@keyframes fadeUp {
|
||||
from { opacity: 0; transform: translateY(20px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
.badge {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
background: #E3EBE8;
|
||||
border-radius: 999px;
|
||||
padding: 0.4rem 1rem;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.12em;
|
||||
text-transform: uppercase;
|
||||
color: #3D4E4B;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
.badge-dot {
|
||||
width: 6px; height: 6px;
|
||||
border-radius: 50%;
|
||||
background: @yield('dot-color', '#D4A017');
|
||||
}
|
||||
|
||||
.code {
|
||||
font-size: 7rem;
|
||||
font-weight: 900;
|
||||
color: #3D4E4B;
|
||||
line-height: 1;
|
||||
letter-spacing: -0.04em;
|
||||
margin-bottom: 0.5rem;
|
||||
opacity: 0.08;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
top: 3rem;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.icon-wrap {
|
||||
width: 80px; height: 80px;
|
||||
border-radius: 1.5rem;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
margin: 0 auto 1.5rem;
|
||||
background: @yield('icon-bg', '#FEF3C7');
|
||||
}
|
||||
.icon-wrap svg { width: 36px; height: 36px; color: @yield('icon-color', '#D4A017'); }
|
||||
|
||||
h1 { font-size: 1.75rem; font-weight: 800; color: #3D4E4B; letter-spacing: -0.03em; margin-bottom: 0.75rem; }
|
||||
p { font-size: 0.9rem; color: #6B7280; font-weight: 500; line-height: 1.7; max-width: 360px; margin: 0 auto 2.5rem; }
|
||||
|
||||
.btn-group { display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; }
|
||||
.btn-primary {
|
||||
display: inline-flex; align-items: center; gap: 0.5rem;
|
||||
background: #3D4E4B; color: white;
|
||||
padding: 0.75rem 1.75rem;
|
||||
border-radius: 0.875rem;
|
||||
font-size: 0.8rem; font-weight: 700;
|
||||
text-decoration: none;
|
||||
border: none; cursor: pointer;
|
||||
transition: background 0.2s, transform 0.1s;
|
||||
}
|
||||
.btn-primary:hover { background: #2D3A38; transform: translateY(-1px); }
|
||||
.btn-secondary {
|
||||
display: inline-flex; align-items: center; gap: 0.5rem;
|
||||
background: transparent; color: #6B7280;
|
||||
padding: 0.75rem 1.75rem;
|
||||
border-radius: 0.875rem;
|
||||
font-size: 0.8rem; font-weight: 700;
|
||||
text-decoration: none;
|
||||
border: 1.5px solid #E5E7EB; cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.btn-secondary:hover { border-color: #3D4E4B; color: #3D4E4B; }
|
||||
|
||||
.footer-brand {
|
||||
margin-top: 3rem;
|
||||
display: flex; align-items: center; justify-content: center; gap: 0.5rem;
|
||||
}
|
||||
.brand-logo {
|
||||
width: 28px; height: 28px; border-radius: 0.5rem;
|
||||
background: #3D4E4B; color: #D4A017;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
font-size: 0.65rem; font-weight: 900;
|
||||
}
|
||||
.brand-name { font-size: 0.75rem; font-weight: 700; color: #9CA3AF; }
|
||||
.brand-version { font-size: 0.65rem; font-weight: 800; color: #D4A017; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<div class="orb orb-1"></div>
|
||||
<div class="orb orb-2"></div>
|
||||
|
||||
<div class="card">
|
||||
<span class="code">@yield('code')</span>
|
||||
|
||||
<div class="badge">
|
||||
<span class="badge-dot"></span>
|
||||
@yield('badge-label', 'System Error')
|
||||
</div>
|
||||
|
||||
<div class="icon-wrap">
|
||||
@yield('icon')
|
||||
</div>
|
||||
|
||||
<h1>@yield('heading')</h1>
|
||||
<p>@yield('description')</p>
|
||||
|
||||
<div class="btn-group">
|
||||
@yield('actions')
|
||||
</div>
|
||||
|
||||
<div class="footer-brand">
|
||||
<div class="brand-logo">BK</div>
|
||||
<span class="brand-name">biiproject kit</span>
|
||||
<span class="brand-version">v2</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,920 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<title>Laravel API Documentation</title>
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset("/vendor/scribe/css/theme-default.style.css") }}" media="screen">
|
||||
<link rel="stylesheet" href="{{ asset("/vendor/scribe/css/theme-default.print.css") }}" media="print">
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
|
||||
|
||||
<link rel="stylesheet"
|
||||
href="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/styles/obsidian.min.css">
|
||||
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/highlight.min.js"></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jets/0.14.1/jets.min.js"></script>
|
||||
|
||||
<style id="language-style">
|
||||
/* starts out as display none and is replaced with js later */
|
||||
body .content .bash-example code { display: none; }
|
||||
body .content .javascript-example code { display: none; }
|
||||
</style>
|
||||
|
||||
<script>
|
||||
var tryItOutBaseUrl = "http://localhost";
|
||||
var useCsrf = Boolean();
|
||||
var csrfUrl = "/sanctum/csrf-cookie";
|
||||
</script>
|
||||
<script src="{{ asset("/vendor/scribe/js/tryitout-5.9.0.js") }}"></script>
|
||||
|
||||
<script src="{{ asset("/vendor/scribe/js/theme-default-5.9.0.js") }}"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body data-languages="["bash","javascript"]">
|
||||
|
||||
<a href="#" id="nav-button">
|
||||
<span>
|
||||
MENU
|
||||
<img src="{{ asset("/vendor/scribe/images/navbar.png") }}" alt="navbar-image"/>
|
||||
</span>
|
||||
</a>
|
||||
<div class="tocify-wrapper">
|
||||
|
||||
<div class="lang-selector">
|
||||
<button type="button" class="lang-button" data-language-name="bash">bash</button>
|
||||
<button type="button" class="lang-button" data-language-name="javascript">javascript</button>
|
||||
</div>
|
||||
|
||||
<div class="search">
|
||||
<input type="text" class="search" id="input-search" placeholder="Search">
|
||||
</div>
|
||||
|
||||
<div id="toc">
|
||||
<ul id="tocify-header-introduction" class="tocify-header">
|
||||
<li class="tocify-item level-1" data-unique="introduction">
|
||||
<a href="#introduction">Introduction</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul id="tocify-header-authenticating-requests" class="tocify-header">
|
||||
<li class="tocify-item level-1" data-unique="authenticating-requests">
|
||||
<a href="#authenticating-requests">Authenticating requests</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul id="tocify-header-authentication" class="tocify-header">
|
||||
<li class="tocify-item level-1" data-unique="authentication">
|
||||
<a href="#authentication">Authentication</a>
|
||||
</li>
|
||||
<ul id="tocify-subheader-authentication" class="tocify-subheader">
|
||||
<li class="tocify-item level-2" data-unique="authentication-POSTapi-v1-auth-login">
|
||||
<a href="#authentication-POSTapi-v1-auth-login">Login</a>
|
||||
</li>
|
||||
<li class="tocify-item level-2" data-unique="authentication-POSTapi-v1-auth-logout">
|
||||
<a href="#authentication-POSTapi-v1-auth-logout">Logout</a>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
<ul id="tocify-header-user-management" class="tocify-header">
|
||||
<li class="tocify-item level-1" data-unique="user-management">
|
||||
<a href="#user-management">User Management</a>
|
||||
</li>
|
||||
<ul id="tocify-subheader-user-management" class="tocify-subheader">
|
||||
<li class="tocify-item level-2" data-unique="user-management-POSTapi-v1-users">
|
||||
<a href="#user-management-POSTapi-v1-users">Create User</a>
|
||||
</li>
|
||||
<li class="tocify-item level-2" data-unique="user-management-PUTapi-v1-users--id-">
|
||||
<a href="#user-management-PUTapi-v1-users--id-">Update User</a>
|
||||
</li>
|
||||
<li class="tocify-item level-2" data-unique="user-management-DELETEapi-v1-users--id-">
|
||||
<a href="#user-management-DELETEapi-v1-users--id-">Delete User</a>
|
||||
</li>
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<ul class="toc-footer" id="toc-footer">
|
||||
<li style="padding-bottom: 5px;"><a href="{{ route("scribe.postman") }}">View Postman collection</a></li>
|
||||
<li style="padding-bottom: 5px;"><a href="{{ route("scribe.openapi") }}">View OpenAPI spec</a></li>
|
||||
<li><a href="http://github.com/knuckleswtf/scribe">Documentation powered by Scribe ✍</a></li>
|
||||
</ul>
|
||||
|
||||
<ul class="toc-footer" id="last-updated">
|
||||
<li>Last updated: May 7, 2026</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="page-wrapper">
|
||||
<div class="dark-box"></div>
|
||||
<div class="content">
|
||||
<h1 id="introduction">Introduction</h1>
|
||||
<aside>
|
||||
<strong>Base URL</strong>: <code>http://localhost</code>
|
||||
</aside>
|
||||
<pre><code>This documentation aims to provide all the information you need to work with our API.
|
||||
|
||||
<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
|
||||
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside></code></pre>
|
||||
|
||||
<h1 id="authenticating-requests">Authenticating requests</h1>
|
||||
<p>This API is not authenticated.</p>
|
||||
|
||||
<h1 id="authentication">Authentication</h1>
|
||||
|
||||
<p>APIs for managing authentication</p>
|
||||
|
||||
<h2 id="authentication-POSTapi-v1-auth-login">Login</h2>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>Authenticate a user and return a Sanctum token.</p>
|
||||
|
||||
<span id="example-requests-POSTapi-v1-auth-login">
|
||||
<blockquote>Example request:</blockquote>
|
||||
|
||||
|
||||
<div class="bash-example">
|
||||
<pre><code class="language-bash">curl --request POST \
|
||||
"http://localhost/api/v1/auth/login" \
|
||||
--header "Content-Type: application/json" \
|
||||
--header "Accept: application/json" \
|
||||
--data "{
|
||||
\"email\": \"gbailey@example.net\",
|
||||
\"password\": \"architecto\"
|
||||
}"
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<div class="javascript-example">
|
||||
<pre><code class="language-javascript">const url = new URL(
|
||||
"http://localhost/api/v1/auth/login"
|
||||
);
|
||||
|
||||
const headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
};
|
||||
|
||||
let body = {
|
||||
"email": "gbailey@example.net",
|
||||
"password": "architecto"
|
||||
};
|
||||
|
||||
fetch(url, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
}).then(response => response.json());</code></pre></div>
|
||||
|
||||
</span>
|
||||
|
||||
<span id="example-responses-POSTapi-v1-auth-login">
|
||||
</span>
|
||||
<span id="execution-results-POSTapi-v1-auth-login" hidden>
|
||||
<blockquote>Received response<span
|
||||
id="execution-response-status-POSTapi-v1-auth-login"></span>:
|
||||
</blockquote>
|
||||
<pre class="json"><code id="execution-response-content-POSTapi-v1-auth-login"
|
||||
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
|
||||
</span>
|
||||
<span id="execution-error-POSTapi-v1-auth-login" hidden>
|
||||
<blockquote>Request failed with error:</blockquote>
|
||||
<pre><code id="execution-error-message-POSTapi-v1-auth-login">
|
||||
|
||||
Tip: Check that you're properly connected to the network.
|
||||
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
|
||||
You can check the Dev Tools console for debugging information.</code></pre>
|
||||
</span>
|
||||
<form id="form-POSTapi-v1-auth-login" data-method="POST"
|
||||
data-path="api/v1/auth/login"
|
||||
data-authed="0"
|
||||
data-hasfiles="0"
|
||||
data-isarraybody="0"
|
||||
autocomplete="off"
|
||||
onsubmit="event.preventDefault(); executeTryOut('POSTapi-v1-auth-login', this);">
|
||||
<h3>
|
||||
Request
|
||||
<button type="button"
|
||||
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-tryout-POSTapi-v1-auth-login"
|
||||
onclick="tryItOut('POSTapi-v1-auth-login');">Try it out ⚡
|
||||
</button>
|
||||
<button type="button"
|
||||
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-canceltryout-POSTapi-v1-auth-login"
|
||||
onclick="cancelTryOut('POSTapi-v1-auth-login');" hidden>Cancel 🛑
|
||||
</button>
|
||||
<button type="submit"
|
||||
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-executetryout-POSTapi-v1-auth-login"
|
||||
data-initial-text="Send Request 💥"
|
||||
data-loading-text="⏱ Sending..."
|
||||
hidden>Send Request 💥
|
||||
</button>
|
||||
</h3>
|
||||
<p>
|
||||
<small class="badge badge-black">POST</small>
|
||||
<b><code>api/v1/auth/login</code></b>
|
||||
</p>
|
||||
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Content-Type</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Content-Type" data-endpoint="POSTapi-v1-auth-login"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Accept</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Accept" data-endpoint="POSTapi-v1-auth-login"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<h4 class="fancy-heading-panel"><b>Body Parameters</b></h4>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>email</code></b>
|
||||
<small>string</small>
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="email" data-endpoint="POSTapi-v1-auth-login"
|
||||
value="gbailey@example.net"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must be a valid email address. Example: <code>gbailey@example.net</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>password</code></b>
|
||||
<small>string</small>
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="password" data-endpoint="POSTapi-v1-auth-login"
|
||||
value="architecto"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Example: <code>architecto</code></p>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h2 id="authentication-POSTapi-v1-auth-logout">Logout</h2>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>Revoke the current user's token.</p>
|
||||
|
||||
<span id="example-requests-POSTapi-v1-auth-logout">
|
||||
<blockquote>Example request:</blockquote>
|
||||
|
||||
|
||||
<div class="bash-example">
|
||||
<pre><code class="language-bash">curl --request POST \
|
||||
"http://localhost/api/v1/auth/logout" \
|
||||
--header "Content-Type: application/json" \
|
||||
--header "Accept: application/json"</code></pre></div>
|
||||
|
||||
|
||||
<div class="javascript-example">
|
||||
<pre><code class="language-javascript">const url = new URL(
|
||||
"http://localhost/api/v1/auth/logout"
|
||||
);
|
||||
|
||||
const headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
};
|
||||
|
||||
|
||||
fetch(url, {
|
||||
method: "POST",
|
||||
headers,
|
||||
}).then(response => response.json());</code></pre></div>
|
||||
|
||||
</span>
|
||||
|
||||
<span id="example-responses-POSTapi-v1-auth-logout">
|
||||
</span>
|
||||
<span id="execution-results-POSTapi-v1-auth-logout" hidden>
|
||||
<blockquote>Received response<span
|
||||
id="execution-response-status-POSTapi-v1-auth-logout"></span>:
|
||||
</blockquote>
|
||||
<pre class="json"><code id="execution-response-content-POSTapi-v1-auth-logout"
|
||||
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
|
||||
</span>
|
||||
<span id="execution-error-POSTapi-v1-auth-logout" hidden>
|
||||
<blockquote>Request failed with error:</blockquote>
|
||||
<pre><code id="execution-error-message-POSTapi-v1-auth-logout">
|
||||
|
||||
Tip: Check that you're properly connected to the network.
|
||||
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
|
||||
You can check the Dev Tools console for debugging information.</code></pre>
|
||||
</span>
|
||||
<form id="form-POSTapi-v1-auth-logout" data-method="POST"
|
||||
data-path="api/v1/auth/logout"
|
||||
data-authed="0"
|
||||
data-hasfiles="0"
|
||||
data-isarraybody="0"
|
||||
autocomplete="off"
|
||||
onsubmit="event.preventDefault(); executeTryOut('POSTapi-v1-auth-logout', this);">
|
||||
<h3>
|
||||
Request
|
||||
<button type="button"
|
||||
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-tryout-POSTapi-v1-auth-logout"
|
||||
onclick="tryItOut('POSTapi-v1-auth-logout');">Try it out ⚡
|
||||
</button>
|
||||
<button type="button"
|
||||
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-canceltryout-POSTapi-v1-auth-logout"
|
||||
onclick="cancelTryOut('POSTapi-v1-auth-logout');" hidden>Cancel 🛑
|
||||
</button>
|
||||
<button type="submit"
|
||||
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-executetryout-POSTapi-v1-auth-logout"
|
||||
data-initial-text="Send Request 💥"
|
||||
data-loading-text="⏱ Sending..."
|
||||
hidden>Send Request 💥
|
||||
</button>
|
||||
</h3>
|
||||
<p>
|
||||
<small class="badge badge-black">POST</small>
|
||||
<b><code>api/v1/auth/logout</code></b>
|
||||
</p>
|
||||
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Content-Type</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Content-Type" data-endpoint="POSTapi-v1-auth-logout"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Accept</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Accept" data-endpoint="POSTapi-v1-auth-logout"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h1 id="user-management">User Management</h1>
|
||||
|
||||
<p>APIs for managing users</p>
|
||||
|
||||
<h2 id="user-management-POSTapi-v1-users">Create User</h2>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>Create a new user with roles.</p>
|
||||
|
||||
<span id="example-requests-POSTapi-v1-users">
|
||||
<blockquote>Example request:</blockquote>
|
||||
|
||||
|
||||
<div class="bash-example">
|
||||
<pre><code class="language-bash">curl --request POST \
|
||||
"http://localhost/api/v1/users" \
|
||||
--header "Content-Type: application/json" \
|
||||
--header "Accept: application/json" \
|
||||
--data "{
|
||||
\"firstName\": \"b\",
|
||||
\"lastName\": \"n\",
|
||||
\"email\": \"ashly64@example.com\",
|
||||
\"password\": \"pBNvYg\",
|
||||
\"status\": \"inactive\"
|
||||
}"
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<div class="javascript-example">
|
||||
<pre><code class="language-javascript">const url = new URL(
|
||||
"http://localhost/api/v1/users"
|
||||
);
|
||||
|
||||
const headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
};
|
||||
|
||||
let body = {
|
||||
"firstName": "b",
|
||||
"lastName": "n",
|
||||
"email": "ashly64@example.com",
|
||||
"password": "pBNvYg",
|
||||
"status": "inactive"
|
||||
};
|
||||
|
||||
fetch(url, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
}).then(response => response.json());</code></pre></div>
|
||||
|
||||
</span>
|
||||
|
||||
<span id="example-responses-POSTapi-v1-users">
|
||||
</span>
|
||||
<span id="execution-results-POSTapi-v1-users" hidden>
|
||||
<blockquote>Received response<span
|
||||
id="execution-response-status-POSTapi-v1-users"></span>:
|
||||
</blockquote>
|
||||
<pre class="json"><code id="execution-response-content-POSTapi-v1-users"
|
||||
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
|
||||
</span>
|
||||
<span id="execution-error-POSTapi-v1-users" hidden>
|
||||
<blockquote>Request failed with error:</blockquote>
|
||||
<pre><code id="execution-error-message-POSTapi-v1-users">
|
||||
|
||||
Tip: Check that you're properly connected to the network.
|
||||
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
|
||||
You can check the Dev Tools console for debugging information.</code></pre>
|
||||
</span>
|
||||
<form id="form-POSTapi-v1-users" data-method="POST"
|
||||
data-path="api/v1/users"
|
||||
data-authed="0"
|
||||
data-hasfiles="0"
|
||||
data-isarraybody="0"
|
||||
autocomplete="off"
|
||||
onsubmit="event.preventDefault(); executeTryOut('POSTapi-v1-users', this);">
|
||||
<h3>
|
||||
Request
|
||||
<button type="button"
|
||||
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-tryout-POSTapi-v1-users"
|
||||
onclick="tryItOut('POSTapi-v1-users');">Try it out ⚡
|
||||
</button>
|
||||
<button type="button"
|
||||
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-canceltryout-POSTapi-v1-users"
|
||||
onclick="cancelTryOut('POSTapi-v1-users');" hidden>Cancel 🛑
|
||||
</button>
|
||||
<button type="submit"
|
||||
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-executetryout-POSTapi-v1-users"
|
||||
data-initial-text="Send Request 💥"
|
||||
data-loading-text="⏱ Sending..."
|
||||
hidden>Send Request 💥
|
||||
</button>
|
||||
</h3>
|
||||
<p>
|
||||
<small class="badge badge-black">POST</small>
|
||||
<b><code>api/v1/users</code></b>
|
||||
</p>
|
||||
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Content-Type</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Content-Type" data-endpoint="POSTapi-v1-users"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Accept</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Accept" data-endpoint="POSTapi-v1-users"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<h4 class="fancy-heading-panel"><b>Body Parameters</b></h4>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>firstName</code></b>
|
||||
<small>string</small>
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="firstName" data-endpoint="POSTapi-v1-users"
|
||||
value="b"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must not be greater than 100 characters. Example: <code>b</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>lastName</code></b>
|
||||
<small>string</small>
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="lastName" data-endpoint="POSTapi-v1-users"
|
||||
value="n"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must not be greater than 100 characters. Example: <code>n</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>email</code></b>
|
||||
<small>string</small>
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="email" data-endpoint="POSTapi-v1-users"
|
||||
value="ashly64@example.com"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must be a valid email address. Example: <code>ashly64@example.com</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>password</code></b>
|
||||
<small>string</small>
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="password" data-endpoint="POSTapi-v1-users"
|
||||
value="pBNvYg"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must be at least 8 characters. Example: <code>pBNvYg</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>status</code></b>
|
||||
<small>string</small>
|
||||
<i>optional</i>
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="status" data-endpoint="POSTapi-v1-users"
|
||||
value="inactive"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Example: <code>inactive</code></p>
|
||||
Must be one of:
|
||||
<ul style="list-style-type: square;"><li><code>active</code></li> <li><code>inactive</code></li> <li><code>suspended</code></li></ul>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>roles</code></b>
|
||||
<small>object</small>
|
||||
<i>optional</i>
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="roles" data-endpoint="POSTapi-v1-users"
|
||||
value=""
|
||||
data-component="body">
|
||||
<br>
|
||||
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h2 id="user-management-PUTapi-v1-users--id-">Update User</h2>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>Update a user's details.</p>
|
||||
|
||||
<span id="example-requests-PUTapi-v1-users--id-">
|
||||
<blockquote>Example request:</blockquote>
|
||||
|
||||
|
||||
<div class="bash-example">
|
||||
<pre><code class="language-bash">curl --request PUT \
|
||||
"http://localhost/api/v1/users/16" \
|
||||
--header "Content-Type: application/json" \
|
||||
--header "Accept: application/json" \
|
||||
--data "{
|
||||
\"firstName\": \"b\",
|
||||
\"lastName\": \"n\",
|
||||
\"status\": \"inactive\"
|
||||
}"
|
||||
</code></pre></div>
|
||||
|
||||
|
||||
<div class="javascript-example">
|
||||
<pre><code class="language-javascript">const url = new URL(
|
||||
"http://localhost/api/v1/users/16"
|
||||
);
|
||||
|
||||
const headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
};
|
||||
|
||||
let body = {
|
||||
"firstName": "b",
|
||||
"lastName": "n",
|
||||
"status": "inactive"
|
||||
};
|
||||
|
||||
fetch(url, {
|
||||
method: "PUT",
|
||||
headers,
|
||||
body: JSON.stringify(body),
|
||||
}).then(response => response.json());</code></pre></div>
|
||||
|
||||
</span>
|
||||
|
||||
<span id="example-responses-PUTapi-v1-users--id-">
|
||||
</span>
|
||||
<span id="execution-results-PUTapi-v1-users--id-" hidden>
|
||||
<blockquote>Received response<span
|
||||
id="execution-response-status-PUTapi-v1-users--id-"></span>:
|
||||
</blockquote>
|
||||
<pre class="json"><code id="execution-response-content-PUTapi-v1-users--id-"
|
||||
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
|
||||
</span>
|
||||
<span id="execution-error-PUTapi-v1-users--id-" hidden>
|
||||
<blockquote>Request failed with error:</blockquote>
|
||||
<pre><code id="execution-error-message-PUTapi-v1-users--id-">
|
||||
|
||||
Tip: Check that you're properly connected to the network.
|
||||
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
|
||||
You can check the Dev Tools console for debugging information.</code></pre>
|
||||
</span>
|
||||
<form id="form-PUTapi-v1-users--id-" data-method="PUT"
|
||||
data-path="api/v1/users/{id}"
|
||||
data-authed="0"
|
||||
data-hasfiles="0"
|
||||
data-isarraybody="0"
|
||||
autocomplete="off"
|
||||
onsubmit="event.preventDefault(); executeTryOut('PUTapi-v1-users--id-', this);">
|
||||
<h3>
|
||||
Request
|
||||
<button type="button"
|
||||
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-tryout-PUTapi-v1-users--id-"
|
||||
onclick="tryItOut('PUTapi-v1-users--id-');">Try it out ⚡
|
||||
</button>
|
||||
<button type="button"
|
||||
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-canceltryout-PUTapi-v1-users--id-"
|
||||
onclick="cancelTryOut('PUTapi-v1-users--id-');" hidden>Cancel 🛑
|
||||
</button>
|
||||
<button type="submit"
|
||||
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-executetryout-PUTapi-v1-users--id-"
|
||||
data-initial-text="Send Request 💥"
|
||||
data-loading-text="⏱ Sending..."
|
||||
hidden>Send Request 💥
|
||||
</button>
|
||||
</h3>
|
||||
<p>
|
||||
<small class="badge badge-darkblue">PUT</small>
|
||||
<b><code>api/v1/users/{id}</code></b>
|
||||
</p>
|
||||
<p>
|
||||
<small class="badge badge-purple">PATCH</small>
|
||||
<b><code>api/v1/users/{id}</code></b>
|
||||
</p>
|
||||
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Content-Type</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Content-Type" data-endpoint="PUTapi-v1-users--id-"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Accept</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Accept" data-endpoint="PUTapi-v1-users--id-"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<h4 class="fancy-heading-panel"><b>URL Parameters</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>id</code></b>
|
||||
<small>integer</small>
|
||||
|
||||
|
||||
<input type="number" style="display: none"
|
||||
step="any" name="id" data-endpoint="PUTapi-v1-users--id-"
|
||||
value="16"
|
||||
data-component="url">
|
||||
<br>
|
||||
<p>The ID of the user. Example: <code>16</code></p>
|
||||
</div>
|
||||
<h4 class="fancy-heading-panel"><b>Body Parameters</b></h4>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>firstName</code></b>
|
||||
<small>string</small>
|
||||
<i>optional</i>
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="firstName" data-endpoint="PUTapi-v1-users--id-"
|
||||
value="b"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must not be greater than 100 characters. Example: <code>b</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>lastName</code></b>
|
||||
<small>string</small>
|
||||
<i>optional</i>
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="lastName" data-endpoint="PUTapi-v1-users--id-"
|
||||
value="n"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Must not be greater than 100 characters. Example: <code>n</code></p>
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>email</code></b>
|
||||
<small>string</small>
|
||||
<i>optional</i>
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="email" data-endpoint="PUTapi-v1-users--id-"
|
||||
value=""
|
||||
data-component="body">
|
||||
<br>
|
||||
|
||||
</div>
|
||||
<div style=" padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>status</code></b>
|
||||
<small>string</small>
|
||||
<i>optional</i>
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="status" data-endpoint="PUTapi-v1-users--id-"
|
||||
value="inactive"
|
||||
data-component="body">
|
||||
<br>
|
||||
<p>Example: <code>inactive</code></p>
|
||||
Must be one of:
|
||||
<ul style="list-style-type: square;"><li><code>active</code></li> <li><code>inactive</code></li> <li><code>suspended</code></li></ul>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<h2 id="user-management-DELETEapi-v1-users--id-">Delete User</h2>
|
||||
|
||||
<p>
|
||||
</p>
|
||||
|
||||
<p>Soft delete a user.</p>
|
||||
|
||||
<span id="example-requests-DELETEapi-v1-users--id-">
|
||||
<blockquote>Example request:</blockquote>
|
||||
|
||||
|
||||
<div class="bash-example">
|
||||
<pre><code class="language-bash">curl --request DELETE \
|
||||
"http://localhost/api/v1/users/16" \
|
||||
--header "Content-Type: application/json" \
|
||||
--header "Accept: application/json"</code></pre></div>
|
||||
|
||||
|
||||
<div class="javascript-example">
|
||||
<pre><code class="language-javascript">const url = new URL(
|
||||
"http://localhost/api/v1/users/16"
|
||||
);
|
||||
|
||||
const headers = {
|
||||
"Content-Type": "application/json",
|
||||
"Accept": "application/json",
|
||||
};
|
||||
|
||||
|
||||
fetch(url, {
|
||||
method: "DELETE",
|
||||
headers,
|
||||
}).then(response => response.json());</code></pre></div>
|
||||
|
||||
</span>
|
||||
|
||||
<span id="example-responses-DELETEapi-v1-users--id-">
|
||||
</span>
|
||||
<span id="execution-results-DELETEapi-v1-users--id-" hidden>
|
||||
<blockquote>Received response<span
|
||||
id="execution-response-status-DELETEapi-v1-users--id-"></span>:
|
||||
</blockquote>
|
||||
<pre class="json"><code id="execution-response-content-DELETEapi-v1-users--id-"
|
||||
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
|
||||
</span>
|
||||
<span id="execution-error-DELETEapi-v1-users--id-" hidden>
|
||||
<blockquote>Request failed with error:</blockquote>
|
||||
<pre><code id="execution-error-message-DELETEapi-v1-users--id-">
|
||||
|
||||
Tip: Check that you're properly connected to the network.
|
||||
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
|
||||
You can check the Dev Tools console for debugging information.</code></pre>
|
||||
</span>
|
||||
<form id="form-DELETEapi-v1-users--id-" data-method="DELETE"
|
||||
data-path="api/v1/users/{id}"
|
||||
data-authed="0"
|
||||
data-hasfiles="0"
|
||||
data-isarraybody="0"
|
||||
autocomplete="off"
|
||||
onsubmit="event.preventDefault(); executeTryOut('DELETEapi-v1-users--id-', this);">
|
||||
<h3>
|
||||
Request
|
||||
<button type="button"
|
||||
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-tryout-DELETEapi-v1-users--id-"
|
||||
onclick="tryItOut('DELETEapi-v1-users--id-');">Try it out ⚡
|
||||
</button>
|
||||
<button type="button"
|
||||
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-canceltryout-DELETEapi-v1-users--id-"
|
||||
onclick="cancelTryOut('DELETEapi-v1-users--id-');" hidden>Cancel 🛑
|
||||
</button>
|
||||
<button type="submit"
|
||||
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
|
||||
id="btn-executetryout-DELETEapi-v1-users--id-"
|
||||
data-initial-text="Send Request 💥"
|
||||
data-loading-text="⏱ Sending..."
|
||||
hidden>Send Request 💥
|
||||
</button>
|
||||
</h3>
|
||||
<p>
|
||||
<small class="badge badge-red">DELETE</small>
|
||||
<b><code>api/v1/users/{id}</code></b>
|
||||
</p>
|
||||
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Content-Type</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Content-Type" data-endpoint="DELETEapi-v1-users--id-"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>Accept</code></b>
|
||||
|
||||
|
||||
|
||||
<input type="text" style="display: none"
|
||||
name="Accept" data-endpoint="DELETEapi-v1-users--id-"
|
||||
value="application/json"
|
||||
data-component="header">
|
||||
<br>
|
||||
<p>Example: <code>application/json</code></p>
|
||||
</div>
|
||||
<h4 class="fancy-heading-panel"><b>URL Parameters</b></h4>
|
||||
<div style="padding-left: 28px; clear: unset;">
|
||||
<b style="line-height: 2;"><code>id</code></b>
|
||||
<small>integer</small>
|
||||
|
||||
|
||||
<input type="number" style="display: none"
|
||||
step="any" name="id" data-endpoint="DELETEapi-v1-users--id-"
|
||||
value="16"
|
||||
data-component="url">
|
||||
<br>
|
||||
<p>The ID of the user. Example: <code>16</code></p>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<div class="dark-box">
|
||||
<div class="lang-selector">
|
||||
<button type="button" class="lang-button" data-language-name="bash">bash</button>
|
||||
<button type="button" class="lang-button" data-language-name="javascript">javascript</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,24 @@
|
||||
@props([
|
||||
'url',
|
||||
'color' => 'primary',
|
||||
'align' => 'center',
|
||||
])
|
||||
<table class="action" align="{{ $align }}" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="{{ $align }}">
|
||||
<table width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="{{ $align }}">
|
||||
<table border="0" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{{ $url }}" class="button button-{{ $color }}" target="_blank" rel="noopener">{!! $slot !!}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -0,0 +1,18 @@
|
||||
@php
|
||||
$settings = \Illuminate\Support\Facades\Cache::get('system_settings', []);
|
||||
$appName = $settings['app_name'] ?? config('app.name');
|
||||
@endphp
|
||||
<tr>
|
||||
<td>
|
||||
<table class="footer" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="content-cell" align="center">
|
||||
<p>
|
||||
© {{ date('Y') }} {{ $appName }}. All rights reserved. <br>
|
||||
Precision Identity Architecture & Governance.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -0,0 +1,20 @@
|
||||
@props(['url'])
|
||||
@php
|
||||
$settings = \Illuminate\Support\Facades\Cache::get('system_settings', []);
|
||||
$appName = $settings['app_name'] ?? config('app.name');
|
||||
$appLogo = $settings['app_logo'] ?? null;
|
||||
$appLogoText = $settings['app_logo_text'] ?? substr($appName, 0, 1);
|
||||
@endphp
|
||||
<tr>
|
||||
<td class="header">
|
||||
<a href="{{ $url }}" style="display: inline-block; text-align: center;">
|
||||
@if ($appLogo)
|
||||
<img src="{{ $appLogo }}" class="logo" alt="{{ $appName }} Logo">
|
||||
<br>
|
||||
@endif
|
||||
<span style="font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 900; font-size: 18px; color: #3D4E4B; letter-spacing: 0.15em; text-transform: uppercase;">
|
||||
{{ $appName }}
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
||||
<head>
|
||||
<title>{{ config('app.name') }}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta name="color-scheme" content="light">
|
||||
<meta name="supported-color-schemes" content="light">
|
||||
<style>
|
||||
@media only screen and (max-width: 600px) {
|
||||
.inner-body {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.footer {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 500px) {
|
||||
.button {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{!! $head ?? '' !!}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<table class="wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table class="content" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
{!! $header ?? '' !!}
|
||||
|
||||
<!-- Email Body -->
|
||||
<tr>
|
||||
<td class="body" width="100%" cellpadding="0" cellspacing="0" style="border: hidden !important;">
|
||||
<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<!-- Body content -->
|
||||
<tr>
|
||||
<td class="content-cell">
|
||||
{!! Illuminate\Mail\Markdown::parse($slot) !!}
|
||||
|
||||
{!! $subcopy ?? '' !!}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
{!! $footer ?? '' !!}
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,27 @@
|
||||
<x-mail::layout>
|
||||
{{-- Header --}}
|
||||
<x-slot:header>
|
||||
<x-mail::header :url="config('app.url')">
|
||||
{{ config('app.name') }}
|
||||
</x-mail::header>
|
||||
</x-slot:header>
|
||||
|
||||
{{-- Body --}}
|
||||
{!! $slot !!}
|
||||
|
||||
{{-- Subcopy --}}
|
||||
@isset($subcopy)
|
||||
<x-slot:subcopy>
|
||||
<x-mail::subcopy>
|
||||
{!! $subcopy !!}
|
||||
</x-mail::subcopy>
|
||||
</x-slot:subcopy>
|
||||
@endisset
|
||||
|
||||
{{-- Footer --}}
|
||||
<x-slot:footer>
|
||||
<x-mail::footer>
|
||||
© {{ date('Y') }} {{ config('app.name') }}. {{ __('All rights reserved.') }}
|
||||
</x-mail::footer>
|
||||
</x-slot:footer>
|
||||
</x-mail::layout>
|
||||
@@ -0,0 +1,14 @@
|
||||
<table class="panel" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="panel-content">
|
||||
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="panel-item">
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
<table class="subcopy" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
@@ -0,0 +1,3 @@
|
||||
<div class="table">
|
||||
{{ Illuminate\Mail\Markdown::parse($slot) }}
|
||||
</div>
|
||||
+161
@@ -0,0 +1,161 @@
|
||||
/* resources/views/vendor/mail/html/themes/default.css */
|
||||
body,
|
||||
body *:not(html):not(style):not(br):not(tr):not(code) {
|
||||
box-sizing: border-box;
|
||||
font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-text-size-adjust: none;
|
||||
background-color: #E3EBE8;
|
||||
color: #3D4E4B;
|
||||
height: 100%;
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
p, ul, ol, blockquote {
|
||||
line-height: 1.6;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #D4A017;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #3D4E4B;
|
||||
font-size: 22px;
|
||||
font-weight: 800;
|
||||
margin-top: 0;
|
||||
text-align: start;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: -0.02em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
margin-top: 0;
|
||||
text-align: start;
|
||||
color: #3D4E4B;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 15px;
|
||||
line-height: 1.6em;
|
||||
margin-top: 0;
|
||||
text-align: left;
|
||||
color: #4A5568;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
background-color: #E3EBE8;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 40px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header a {
|
||||
color: #3D4E4B;
|
||||
font-size: 20px;
|
||||
font-weight: 900;
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.2em;
|
||||
}
|
||||
|
||||
.logo {
|
||||
height: 64px;
|
||||
margin-bottom: 15px;
|
||||
max-height: 64px;
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.body {
|
||||
background-color: #E3EBE8;
|
||||
border-bottom: 0;
|
||||
border-top: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.inner-body {
|
||||
background-color: #ffffff;
|
||||
border-color: #E3EBE8;
|
||||
border-radius: 32px;
|
||||
border-width: 1px;
|
||||
box-shadow: 0 10px 40px rgba(61, 78, 75, 0.05);
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
width: 570px;
|
||||
}
|
||||
|
||||
.content-cell {
|
||||
padding: 48px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
margin: 0 auto;
|
||||
padding: 32px 0;
|
||||
text-align: center;
|
||||
width: 570px;
|
||||
}
|
||||
|
||||
.footer p {
|
||||
color: #3D4E4B;
|
||||
opacity: 0.4;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.button {
|
||||
border-radius: 16px;
|
||||
color: #fff;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-decoration: none;
|
||||
font-weight: 800;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.1em;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.button-primary {
|
||||
background-color: #3D4E4B;
|
||||
border-bottom: 12px solid #3D4E4B;
|
||||
border-left: 32px solid #3D4E4B;
|
||||
border-right: 32px solid #3D4E4B;
|
||||
border-top: 12px solid #3D4E4B;
|
||||
}
|
||||
|
||||
.panel {
|
||||
border-left: #D4A017 solid 4px;
|
||||
margin: 24px 0;
|
||||
background-color: #F7FAFA;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.panel-content {
|
||||
padding: 16px;
|
||||
}
|
||||
|
||||
.subcopy {
|
||||
border-top: 1px solid #E3EBE8;
|
||||
margin-top: 32px;
|
||||
padding-top: 24px;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
{{ $slot }}: {{ $url }}
|
||||
@@ -0,0 +1 @@
|
||||
{{ $slot }}
|
||||
@@ -0,0 +1 @@
|
||||
{{ $slot }}: {{ $url }}
|
||||
@@ -0,0 +1,9 @@
|
||||
{!! strip_tags($header ?? '') !!}
|
||||
|
||||
{!! strip_tags($slot) !!}
|
||||
@isset($subcopy)
|
||||
|
||||
{!! strip_tags($subcopy) !!}
|
||||
@endisset
|
||||
|
||||
{!! strip_tags($footer ?? '') !!}
|
||||
@@ -0,0 +1,27 @@
|
||||
<x-mail::layout>
|
||||
{{-- Header --}}
|
||||
<x-slot:header>
|
||||
<x-mail::header :url="config('app.url')">
|
||||
{{ config('app.name') }}
|
||||
</x-mail::header>
|
||||
</x-slot:header>
|
||||
|
||||
{{-- Body --}}
|
||||
{{ $slot }}
|
||||
|
||||
{{-- Subcopy --}}
|
||||
@isset($subcopy)
|
||||
<x-slot:subcopy>
|
||||
<x-mail::subcopy>
|
||||
{{ $subcopy }}
|
||||
</x-mail::subcopy>
|
||||
</x-slot:subcopy>
|
||||
@endisset
|
||||
|
||||
{{-- Footer --}}
|
||||
<x-slot:footer>
|
||||
<x-mail::footer>
|
||||
© {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
|
||||
</x-mail::footer>
|
||||
</x-slot:footer>
|
||||
</x-mail::layout>
|
||||
@@ -0,0 +1 @@
|
||||
{{ $slot }}
|
||||
@@ -0,0 +1 @@
|
||||
{{ $slot }}
|
||||
@@ -0,0 +1 @@
|
||||
{{ $slot }}
|
||||
Reference in New Issue
Block a user