mirror of
https://github.com/retailcrm/NelmioApiDocBundle.git
synced 2025-02-02 15:51:48 +03:00
338 lines
17 KiB
Twig
338 lines
17 KiB
Twig
<li class="{{ data.method|lower }} operation" id="{{ data.id }}">
|
|
<div class="heading toggler{% if data.deprecated %} deprecated{% endif %}" data-href="#{{ data.id }}">
|
|
<h3>
|
|
<span class="http_method">
|
|
<i>{{ data.method|upper }}</i>
|
|
</span>
|
|
|
|
{% if data.deprecated %}
|
|
<span class="deprecated">
|
|
<i>DEPRECATED</i>
|
|
</span>
|
|
{% endif %}
|
|
|
|
{% if data.https %}
|
|
<span class="icon lock" title="HTTPS"></span>
|
|
{% endif %}
|
|
{% if data.authentication %}
|
|
<span class="icon keys" title="Needs {{ data.authenticationRoles|length > 0 ? data.authenticationRoles|join(', ') : 'authentication' }}"></span>
|
|
{% endif %}
|
|
|
|
<span class="path">
|
|
{% if data.host is defined -%}
|
|
{{ data.https ? 'https://' : 'http://' -}}
|
|
{{ data.host -}}
|
|
{% endif -%}
|
|
{{ data.uri }}
|
|
</span>
|
|
{% if data.tags is defined %}
|
|
{% for tag, color_code in data.tags %}
|
|
<span class="tag" {% if color_code is defined and color_code is not empty %}style="background-color:{{ color_code }};"{% endif %}>{{ tag }}</span>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</h3>
|
|
<ul class="options">
|
|
{% if data.description is defined %}
|
|
<li>{{ data.description }}</li>
|
|
{% endif %}
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="content" style="display: {% if displayContent is defined and displayContent == true %}display{% else %}none{% endif %};">
|
|
<ul class="tabs">
|
|
<li class="selected" data-pane="content">Documentation</li>
|
|
{% if enableSandbox %}
|
|
<li data-pane="sandbox">Sandbox</li>
|
|
{% endif %}
|
|
</ul>
|
|
|
|
<div class="panes">
|
|
<div class="pane content selected">
|
|
{% if data.documentation is defined and data.documentation is not empty %}
|
|
<h4>Documentation</h4>
|
|
<div>{{ data.documentation|extra_markdown }}</div>
|
|
{% endif %}
|
|
|
|
{% if data.link is defined and data.link is not empty %}
|
|
<h4>Link</h4>
|
|
<div><a href="{{ data.link }}" target="_blank">{{ data.link }}</a></div>
|
|
{% endif %}
|
|
|
|
{% if data.requirements is defined and data.requirements is not empty %}
|
|
<h4>Requirements</h4>
|
|
<table class="fullwidth">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Requirement</th>
|
|
<th>Type</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for name, infos in data.requirements %}
|
|
<tr>
|
|
<td>{{ name }}</td>
|
|
<td>{{ infos.requirement is defined ? infos.requirement : ''}}</td>
|
|
<td>{{ infos.dataType is defined ? infos.dataType : ''}}</td>
|
|
<td>{{ infos.description is defined ? infos.description : ''}}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% if data.filters is defined and data.filters is not empty %}
|
|
<h4>Filters</h4>
|
|
<table class="fullwidth">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Information</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for name, infos in data.filters %}
|
|
<tr>
|
|
<td>{{ name }}</td>
|
|
<td>
|
|
<table>
|
|
{% for key, value in infos %}
|
|
<tr>
|
|
<td>{{ key|title }}</td>
|
|
<td>{{ value|json_encode|replace({'\\\\': '\\'})|trim('"') }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% if data.parameters is defined and data.parameters is not empty %}
|
|
<h4>Parameters</h4>
|
|
<table class='fullwidth'>
|
|
<thead>
|
|
<tr>
|
|
<th>Parameter</th>
|
|
<th>Type</th>
|
|
<th>Required?</th>
|
|
<th>Format</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for name, infos in data.parameters %}
|
|
{% if not infos.readonly %}
|
|
<tr>
|
|
<td>{{ name }}</td>
|
|
<td>{{ infos.dataType is defined ? infos.dataType : '' }}</td>
|
|
<td>{{ infos.required ? 'true' : 'false' }}</td>
|
|
<td>{{ infos.format }}</td>
|
|
<td>{{ infos.description is defined ? infos.description : '' }}</td>
|
|
</tr>
|
|
{% endif %}
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% if data.response is defined and data.response is not empty %}
|
|
<h4>Return</h4>
|
|
<table class='fullwidth'>
|
|
<thead>
|
|
<tr>
|
|
<th>Parameter</th>
|
|
<th>Type</th>
|
|
<th>Versions</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for name, infos in data.response %}
|
|
<tr>
|
|
<td>{{ name }}</td>
|
|
<td>{{ infos.dataType }}</td>
|
|
<td>{% include 'NelmioApiDocBundle:Components:version.html.twig' with {'sinceVersion': infos.sinceVersion, 'untilVersion': infos.untilVersion} only %}</td>
|
|
<td>{{ infos.description }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% if data.statusCodes is defined and data.statusCodes is not empty %}
|
|
<h4>Status Codes</h4>
|
|
<table class="fullwidth">
|
|
<thead>
|
|
<tr>
|
|
<th>Status Code</th>
|
|
<th>Description</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for status_code, descriptions in data.statusCodes %}
|
|
<tr>
|
|
<td><a href="http://en.wikipedia.org/wiki/HTTP_{{ status_code }}" target="_blank">{{ status_code }}</a></td>
|
|
<td>
|
|
<ul>
|
|
{% for description in descriptions %}
|
|
<li>{{ description }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
{% endif %}
|
|
|
|
{% if data.cache is defined and data.cache is not empty %}
|
|
<h4>Cache</h4>
|
|
<div>{{ data.cache }}s</div>
|
|
{% endif %}
|
|
|
|
</div>
|
|
|
|
{% if enableSandbox %}
|
|
<div class="pane sandbox">
|
|
{% if app.request is not null and data.https and app.request.secure != data.https %}
|
|
Please reload the documentation using the scheme {% if data.https %}HTTPS{% else %}HTTP{% endif %} if you want to use the sandbox.
|
|
{% else %}
|
|
<form method="" action="{% if data.host is defined %}{{ data.https ? 'https://' : 'http://' }}{{ data.host }}{% endif %}{{ data.uri }}">
|
|
<fieldset class="parameters">
|
|
<legend>Input</legend>
|
|
{% if data.requirements is defined %}
|
|
<h4>Requirements</h4>
|
|
{% for name, infos in data.requirements %}
|
|
<p class="tuple">
|
|
<input type="text" class="key" value="{{ name }}" placeholder="Key" />
|
|
<span>=</span>
|
|
<input type="text" class="value" placeholder="{% if infos.description is defined %}{{ infos.description }}{% else %}Value{% endif %}" {% if infos.default is defined %} value="{{ infos.default }}" {% endif %}/> <span class="remove">-</span>
|
|
</p>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if data.filters is defined %}
|
|
<h4>Filters</h4>
|
|
{% for name, infos in data.filters %}
|
|
<p class="tuple">
|
|
<input type="text" class="key" value="{{ name }}" placeholder="Key" />
|
|
<span>=</span>
|
|
<input type="text" class="value" placeholder="{% if infos.description is defined %}{{ infos.description }}{% else %}Value{% endif %}" {% if infos.default is defined %} value="{{ infos.default }}" {% endif %}/> <span class="remove">-</span>
|
|
</p>
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if data.parameters is defined %}
|
|
<h4>Parameters</h4>
|
|
{% for name, infos in data.parameters %}
|
|
{% if not infos.readonly %}
|
|
<p class="tuple" data-dataType="{% if infos.dataType %}{{ infos.dataType }}{% endif %}" data-format="{% if infos.format %}{{ infos.format }}{% endif %}" data-description="{% if infos.description %}{{ infos.description }}{% endif %}">
|
|
<input type="text" class="key" value="{{ name }}" placeholder="Key" />
|
|
<span>=</span>
|
|
<select class="tuple_type">
|
|
<option value="">Type</option>
|
|
<option value="string">String</option>
|
|
<option value="boolean">Boolean</option>
|
|
<option value="file">File</option>
|
|
</select>
|
|
<input type="text" class="value" placeholder="{% if infos.dataType %}[{{ infos.dataType }}] {% endif %}{% if infos.format %}{{ infos.format }}{% endif %}{% if infos.description %}{{ infos.description }}{% else %}Value{% endif %}" {% if infos.default is defined %} value="{{ infos.default }}" {% endif %}/> <span class="remove">-</span>
|
|
</p>
|
|
{% endif %}
|
|
{% endfor %}
|
|
<button type="button" class="add_parameter">New parameter</button>
|
|
{% endif %}
|
|
|
|
</fieldset>
|
|
|
|
<fieldset class="headers">
|
|
{% set methods = data.method|upper|split('|') %}
|
|
{% if methods|length > 1 %}
|
|
<legend>Method</legend>
|
|
<select name="header_method">
|
|
{% for method in methods %}
|
|
<option value="{{ method }}">{{ method }}</option>
|
|
{% endfor %}
|
|
</select>
|
|
{% else %}
|
|
<input type="hidden" name="header_method" value="{{ methods|join }}" />
|
|
{% endif %}
|
|
|
|
<legend>Headers</legend>
|
|
|
|
{% if acceptType %}
|
|
<p class="tuple">
|
|
<input type="text" class="key" value="Accept" />
|
|
<span>=</span>
|
|
<input type="text" class="value" value="{{ acceptType }}" /> <span class="remove">-</span>
|
|
</p>
|
|
{% endif %}
|
|
|
|
<p class="tuple">
|
|
<input type="text" class="key" placeholder="Key" />
|
|
<span>=</span>
|
|
<input type="text" class="value" placeholder="Value" /> <span class="remove">-</span>
|
|
</p>
|
|
|
|
<button type="button" class="add_header">New header</button>
|
|
</fieldset>
|
|
|
|
<fieldset class="request-content">
|
|
<legend>Content</legend>
|
|
|
|
<textarea class="content" placeholder="Content set here will override the parameters that do not match the url"></textarea>
|
|
|
|
<p class="tuple">
|
|
<input type="text" class="key content-type" value="Content-Type" disabled="disabled" />
|
|
<span>=</span>
|
|
<input type="text" class="value" placeholder="Value" />
|
|
<button type="button" class="set-content-type">Set header</button> <small>Replaces header if set</small>
|
|
</p>
|
|
</fieldset>
|
|
|
|
<div class="buttons">
|
|
<input type="submit" value="Try!" />
|
|
</div>
|
|
</form>
|
|
|
|
<script type="text/x-tmpl" class="parameters_tuple_template">
|
|
<p class="tuple">
|
|
<input type="text" class="key" placeholder="Key" />
|
|
<span>=</span>
|
|
<select class="tuple_type">
|
|
<option value="">Type</option>
|
|
<option value="string">String</option>
|
|
<option value="boolean">Boolean</option>
|
|
<option value="file">File</option>
|
|
</select>
|
|
<input type="text" class="value" placeholder="Value" /> <span class="remove">-</span>
|
|
</p>
|
|
</script>
|
|
|
|
<script type="text/x-tmpl" class="headers_tuple_template">
|
|
<p class="tuple">
|
|
<input type="text" class="key" placeholder="Key" />
|
|
<span>=</span>
|
|
<input type="text" class="value" placeholder="Value" /> <span class="remove">-</span>
|
|
</p>
|
|
</script>
|
|
|
|
|
|
<div class="result">
|
|
<h4>Request URL</h4>
|
|
<pre class="url"></pre>
|
|
|
|
<h4>Response Headers <small>[<a href="" class="to-expand">Expand</a>]</small> <small class="profiler">[<a href="" class="profiler-link" target="_blank">Profiler</a>]</small></h4>
|
|
<pre class="headers to-expand"></pre>
|
|
|
|
<h4>Response Body <small>[<a href="" class="to-raw">Raw</a>]</small></h4>
|
|
<pre class="response prettyprint"></pre>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</li>
|