123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- @php
- use Knuckles\Scribe\Tools\Utils as u;
- /** @var \Knuckles\Camel\Output\OutputEndpointData $endpoint */
- @endphp
- <div class="sl-inverted">
- <div class="sl-overflow-y-hidden sl-rounded-lg">
- <form class="TryItPanel sl-bg-canvas-100 sl-rounded-lg"
- data-method="{{ $endpoint->httpMethods[0] }}"
- data-path="{{ $endpoint->uri }}"
- data-hasfiles="{{ $endpoint->hasFiles() ? 1 : 0 }}"
- data-hasjsonbody="{{ $endpoint->hasJsonBody() ? 1 : 0 }}">
- @if($endpoint->isAuthed() && $metadata['auth']['location'] !== 'body')
- <div class="sl-panel sl-outline-none sl-w-full expandable">
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- Auth
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- <div class="ParameterGrid sl-p-4">
- <label aria-hidden="true"
- for="auth-{{ $endpoint->endpointId() }}">{{ $metadata['auth']['name'] }}</label>
- <span class="sl-mx-3">:</span>
- <div class="sl-flex sl-flex-1">
- <div class="sl-input sl-flex-1 sl-relative">
- <code>{{ $metadata['auth']['prefix'] }}</code>
- <input aria-label="{{ $metadata['auth']['name'] }}"
- id="auth-{{ $endpoint->endpointId() }}"
- data-component="{{ $metadata['auth']['location'] }}"
- data-prefix="{{ $metadata['auth']['prefix'] }}"
- name="{{ $metadata['auth']['name'] }}"
- placeholder="{{ $metadata['auth']['placeholder'] }}"
- class="auth-value sl-relative {{ $metadata['auth']['prefix'] ? 'sl-w-3/5' : 'sl-w-full sl-pr-2.5 sl-pl-2.5' }} sl-h-md sl-text-base sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border">
- </div>
- </div>
- </div>
- </div>
- </div>
- @endif
- @if(count($endpoint->headers))
- <div class="sl-panel sl-outline-none sl-w-full expandable">
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- Headers
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- <div class="ParameterGrid sl-p-4">
- @foreach($endpoint->headers as $name => $example)
- @php
- if($endpoint->isAuthed() && $metadata['auth']['location'] === 'header' && $name === $metadata['auth']['name']) continue;
- @endphp
- <label aria-hidden="true"
- for="header-{{ $endpoint->endpointId() }}-{{ $name }}">{{ $name }}</label>
- <span class="sl-mx-3">:</span>
- <div class="sl-flex sl-flex-1">
- <div class="sl-input sl-flex-1 sl-relative">
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="header-{{ $endpoint->endpointId() }}-{{ $name }}"
- value="{{ $example }}" data-component="header"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border">
- </div>
- </div>
- @endforeach
- </div>
- </div>
- </div>
- @endif
- @if(count($endpoint->urlParameters))
- <div class="sl-panel sl-outline-none sl-w-full expandable">
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- URL Parameters
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- <div class="ParameterGrid sl-p-4">
- @foreach($endpoint->urlParameters as $name => $parameter)
- <label aria-hidden="true"
- for="urlparam-{{ $endpoint->endpointId() }}-{{ $name }}">{{ $name }}</label>
- <span class="sl-mx-3">:</span>
- <div class="sl-flex sl-flex-1">
- <div class="sl-input sl-flex-1 sl-relative">
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="urlparam-{{ $endpoint->endpointId() }}-{{ $name }}"
- placeholder="{{ $parameter->description }}"
- value="{{ $parameter->example }}" data-component="url"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border">
- </div>
- </div>
- @endforeach
- </div>
- </div>
- </div>
- @endif
- @if(count($endpoint->queryParameters))
- <div class="sl-panel sl-outline-none sl-w-full expandable">
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- Query Parameters
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- <div class="ParameterGrid sl-p-4">
- @foreach($endpoint->queryParameters as $name => $parameter)
- @php
- /** @var \Knuckles\Camel\Output\Parameter $parameter */
- if ($parameter->type == 'object') // Skip; individual object children are listed
- continue;
- if (str_contains($name, "[]"))
- // This likely belongs to an obj-array (eg objs[].a); we only show the parent (objs[]), so skip
- continue;
- if($endpoint->isAuthed() && $metadata['auth']['location'] === 'query'
- && $name === $metadata['auth']['name']) continue;
- @endphp
- <label aria-hidden="true"
- for="queryparam-{{ $endpoint->endpointId() }}-{{ $name }}">{{ $name }}</label>
- <span class="sl-mx-3">:</span>
- <div class="sl-flex sl-flex-1">
- <div class="sl-input sl-flex-1 sl-relative">
- @if(str_ends_with($parameter->type, '[]'))
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="queryparam-{{ $endpoint->endpointId() }}-{{ $name }}"
- placeholder="{{ $parameter->description }}"
- value="{{ json_encode($parameter->example) }}" data-component="query"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border"
- >
- @else
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="queryparam-{{ $endpoint->endpointId() }}-{{ $name }}"
- placeholder="{{ $parameter->description }}"
- value="{{ $parameter->example }}" data-component="query"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border"
- >
- @endif
- </div>
- </div>
- @endforeach
- </div>
- </div>
- </div>
- @endif
- @if(count($endpoint->bodyParameters))
- <div class="sl-panel sl-outline-none sl-w-full expandable">
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- Body
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- @if($endpoint->hasJsonBody())
- <div class="TextRequestBody sl-p-4">
- <div class="code-editor language-json"
- id="json-body-{{ $endpoint->endpointId() }}"
- style="font-family: var(--font-code); font-size: 12px; line-height: var(--lh-code);"
- >{!! json_encode($endpoint->getSampleBody(), JSON_PRETTY_PRINT) !!}</div>
- </div>
- @else
- <div class="ParameterGrid sl-p-4">
- @foreach($endpoint->bodyParameters as $name => $parameter)
- @php
- /** @var \Knuckles\Camel\Output\Parameter $parameter */
- if ($parameter->type == 'object') // Skip; individual object children are listed
- continue;
- if (str_contains($name, "[]"))
- // This likely belongs to an obj-array (eg objs[].a); we only show the parent (objs[]), so skip
- continue;
- @endphp
- <label aria-hidden="true"
- for="bodyparam-{{ $endpoint->endpointId() }}-{{ $name }}">{{ $name }}</label>
- <span class="sl-mx-3">:</span>
- <div class="sl-flex sl-flex-1">
- <div class="sl-input sl-flex-1 sl-relative">
- @if($parameter->type == 'file')
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="bodyparam-{{ $endpoint->endpointId() }}-{{ $name }}"
- type="file" data-component="body"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border"
- >
- @elseif(str_ends_with($parameter->type, '[]'))
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="bodyparam-{{ $endpoint->endpointId() }}-{{ $name }}"
- placeholder="{{ $parameter->description }}"
- value="{{ json_encode($parameter->example) }}" data-component="body"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border"
- >
- @else
- <input aria-label="{{ $name }}" name="{{ $name }}"
- id="bodyparam-{{ $endpoint->endpointId() }}-{{ $name }}"
- placeholder="{{ $parameter->description }}"
- value="{{ $parameter->example }}" data-component="body"
- class="sl-relative sl-w-full sl-h-md sl-text-base sl-pr-2.5 sl-pl-2.5 sl-rounded sl-border-transparent hover:sl-border-input focus:sl-border-primary sl-border"
- >
- @endif
- </div>
- </div>
- @endforeach
- </div>
- @endif
- </div>
- </div>
- @endif
- <div class="SendButtonHolder sl-mt-4 sl-p-4 sl-pt-0">
- <div class="sl-stack sl-stack--horizontal sl-stack--2 sl-flex sl-flex-row sl-items-center">
- <button type="button" data-endpoint="{{ $endpoint->endpointId() }}"
- class="tryItOut-btn sl-button sl-h-sm sl-text-base sl-font-medium sl-px-1.5 sl-bg-primary hover:sl-bg-primary-dark active:sl-bg-primary-darker disabled:sl-bg-canvas-100 sl-text-on-primary disabled:sl-text-body sl-rounded sl-border-transparent sl-border disabled:sl-opacity-70"
- >
- {{ u::trans("scribe::try_it_out.send") }}
- </button>
- </div>
- </div>
- <div data-endpoint="{{ $endpoint->endpointId() }}"
- class="tryItOut-error expandable sl-panel sl-outline-none sl-w-full" hidden>
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- {{ u::trans("scribe::try_it_out.request_failed") }}
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- <div class="sl-panel__content sl-p-4">
- <p class="sl-pb-2"><strong class="error-message"></strong></p>
- <p class="sl-pb-2">{{ u::trans("scribe::try_it_out.error_help") }}</p>
- </div>
- </div>
- </div>
- <div data-endpoint="{{ $endpoint->endpointId() }}"
- class="tryItOut-response expandable sl-panel sl-outline-none sl-w-full" hidden>
- <div class="sl-panel__titlebar sl-flex sl-items-center sl-relative focus:sl-z-10 sl-text-base sl-leading-none sl-pr-4 sl-pl-3 sl-bg-canvas-200 sl-text-body sl-border-input focus:sl-border-primary sl-cursor-pointer sl-select-none"
- role="button">
- <div class="sl-flex sl-flex-1 sl-items-center sl-h-lg">
- <div class="sl-flex sl-items-center sl-mr-1.5 expansion-chevrons expansion-chevrons-solid expanded">
- <svg aria-hidden="true" focusable="false" data-prefix="fas"
- data-icon="caret-down"
- class="svg-inline--fa fa-caret-down fa-fw sl-icon" role="img"
- xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512">
- <path fill="currentColor"
- d="M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z"></path>
- </svg>
- </div>
- {{ u::trans("scribe::try_it_out.received_response") }}
- </div>
- </div>
- <div class="sl-panel__content-wrapper sl-bg-canvas-100 children" role="region">
- <div class="sl-panel__content sl-p-4">
- <p class="sl-pb-2 response-status"></p>
- <pre><code class="sl-pb-2 response-content language-json"
- data-empty-response-text="<{{ u::trans("scribe::endpoint.responses.empty") }}>"
- style="max-height: 300px;"></code></pre>
- </div>
- </div>
- </div>
- </form>
- </div>
- </div>
|