% layout 'main', title => 'KorAP: Application Programming Interface';

%= page_title

<p>Internally the communication between KorAP components is done using the KoralQuery protocol.
  The specification for KoralQuery is available on <%= ext_link_to 'GitHub', "http://korap.github.io/Koral" %>.
  All API endpoints either use KoralQuery or are (more or less) REST-ful web APIs.</p>

<p>All publicly available API endpoints (partially experimental) including their requests and responses are described in the <%= ext_link_to 'GitHub Wiki', "https://github.com/KorAP/Kustvakt/wiki" %> of <%= embedded_link_to 'doc', 'Kustvakt', 'korap', 'kustvakt' %>.</p>
% my $api_version = $c->app->config('Kalamar')->{api_version};
% my $api_url = $c->url_for('proxy' => (apiv => $api_version))->to_abs->scheme('https');
% $api_url->path->trailing_slash(1);

%if ($c->app->config('Kalamar')->{openapi}) { 
<p id="openapi">
% my $openapi= $api_url->to_abs;
% $openapi->path->merge($c->app->config('Kalamar')->{openapi})->trailing_slash(1); 
The OpenAPI documentation is described <%= ext_link_to 'here',  $openapi  %>.
</p>
% } 

<p>The root service can be found at <code id="api-service-uri"><%=  $api_url %></code>.</p>

<h2>Client Libraries</h2>

<p>Client libraries are available for R on <%= ext_link_to 'CRAN', 'https://cran.r-project.org/package=RKorAPClient' %>
(sources and more info on <%= ext_link_to 'GitHub', 'https://github.com/KorAP/RKorAPClient' %>)
and for Python on <%= ext_link_to 'PyPI', 'https://pypi.org/project/KorAPClient/' %>
(sources on <%= ext_link_to 'GitHub', 'https://github.com/KorAP/PythonKorAPClient' %>).</p>
