War oben nicht die Rede davon, dass das kapitelweise erfolgen soll, also so:
\documentclass[a4paper,10pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage{nameref}
\DeclareNewTOC[%
type=api,%
types=apis,%
float,%
floattype=5,%
name=Api,%
floatpos=ht,%
listname={Verzeichnis der Apis}%
]{loa}
\addtotoclist[api]{api}
\makeatletter
\newwrite\@apifile
\newif\if@apifilewritten
\renewcommand*{\@apifilewrittentrue}{\global\let\if@apifilewritten\iftrue}
\renewcommand*{\@apifilewrittenfalse}{\global\let\if@apifilewritten\iffalse}
\newcommand*{\apioverview}{%
\closeapioverview
\InputIfFileExists{\jobname-\thechapter.api}{}{%
\typeout{No file `\jobname-\thechapter.api' found.}%
}%
}
\newcommand*{\startapioverview}{%
\if@apifilewritten\else
\if@filesw
\typeout{Open new api file `\jobname-\thechapter.api'}%
\@apifilewrittentrue
\openout\@apifile \jobname-\thechapter.api
\protected@write\@apifile{}{%
\string\section*{\string\apioverviewname}^^J%
\string\begin{tabularx}{\string\textwidth}{|X|c|c|}^^J
\string\hline^^J
\string\textbf{Parameter1}&
\string\textbf{Parameter2}&
\string\textbf{Seite}\string\\^^J
\string\hline^^J
\string\hline
}%
\fi
\fi
}
\newcommand*{\closeapioverview}{%
\if@apifilewritten
\protected@write\@apifile{}{%
\string\end{tabularx}%
}%
\closeout\@apifile
\@apifilewrittenfalse
\fi
}
\newcommand*{\setapientry}[2]{%
\startapioverview
\protected@write\@apifile{}{ \detokenize{#1}&\detokenize{#2}&\thepage\string\\^^J \string\hline}%
}
\makeatletter
\AtEndDocument{\closeapioverview}
\newcommand*{\apiumgebung}[4]
{
\begin{api}
\setlength\arrayrulewidth{1pt}
\begin{tabularx}{\textwidth}{|X|r|}
\hline
\rowcolor{lightgray}
\textbf{\large #1} & #2\\
\hline
\multicolumn{2}{|l|}{#3}\\
\hline
\end{tabularx}
\caption{#4}
\label{api:\theapi}
\setapientry{#1}{#2}%
\end{api}
}
\makeatother
\newcommand*{\apioverviewname}{Übersicht}
\begin{document}
\chapter{Kapitel eins}
\apioverview
\section{Abschnitt}
\subsection{Unterabschnitt}
\apiumgebung{was}{auch}{immer}{erste Beschriftung}
\apiumgebung{das}{auch}{immer}{erste Beschriftung}
\chapter{Kapitel zwei}
\apioverview
\apiumgebung{das}{werden}{soll}{zweite Beschriftung}
\chapter{Kapitel drei}
\apioverview
Und hier sehen wir, was mit \verb|\apioverview| passiert, wenn gar keine
APIs in dem Kapitel definiert sind.
\end{document}
Statt so:
\documentclass[a4paper,10pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{tabularx}
\usepackage[table]{xcolor}
\usepackage{nameref}
\DeclareNewTOC[%
type=api,%
types=apis,%
float,%
floattype=5,%
name=Api,%
floatpos=ht,%
listname={Verzeichnis der Apis}%
]{loa}
\addtotoclist[api]{api}
\makeatletter
\newwrite\@apifile
\newif\if@apifilewritten
\renewcommand*{\@apifilewrittentrue}{\global\let\if@apifilewritten\iftrue}
\renewcommand*{\@apifilewrittenfalse}{\global\let\if@apifilewritten\iffalse}
\newcommand*{\apioverview}{%
\closeapioverview
\InputIfFileExists{\jobname-\thechapter.api}{}{%
\typeout{No file `\jobname-\thechapter.api' found.}%
}%
}
\newcommand*{\startapioverview}{%
\if@apifilewritten\else
\if@filesw
\typeout{Open new api file `\jobname-\thechapter.api'}%
\@apifilewrittentrue
\openout\@apifile \jobname-\thechapter.api
\protected@write\@apifile{}{%
\string\section*{\string\apioverviewname}^^J%
\string\begin{tabularx}{\string\textwidth}{|X|c|c|}^^J
\string\hline^^J
\string\textbf{Parameter1}&
\string\textbf{Parameter2}&
\string\textbf{Seite}\string\\^^J
\string\hline^^J
\string\hline
}%
\fi
\fi
}
\newcommand*{\closeapioverview}{%
\if@apifilewritten
\protected@write\@apifile{}{%
\string\end{tabularx}%
}%
\closeout\@apifile
\@apifilewrittenfalse
\fi
}
\newcommand*{\setapientry}[2]{%
\startapioverview
\protected@write\@apifile{}{ \detokenize{#1}&\detokenize{#2}&\thepage\string\\^^J \string\hline}%
}
\makeatletter
\AtEndDocument{\closeapioverview}
\newcommand*{\apiumgebung}[4]
{
\begin{api}
\setlength\arrayrulewidth{1pt}
\begin{tabularx}{\textwidth}{|X|r|}
\hline
\rowcolor{lightgray}
\textbf{\large #1} & #2\\
\hline
\multicolumn{2}{|l|}{#3}\\
\hline
\end{tabularx}
\caption{#4}
\label{api:\theapi}
\setapientry{#1}{#2}%
\end{api}
}
\makeatother
\newcommand*{\apioverviewname}{Übersicht}
\begin{document}
\chapter{Kapitel eins}
\apioverview
\section{Abschnitt}
\subsection{Unterabschnitt}
\apiumgebung{was}{auch}{immer}{erste Beschriftung}
\chapter{Kapitel zwei}
\apiumgebung{das}{werden}{soll}{zweite Beschriftung}
\end{document}
Anders gesagt: Mit dieser Lösung kann man eine oder mehrere Übersichten automatisch erstellen lassen, wobei jeweils die api-Umgebungen ab dem \apioverview aufgesammelt werden. Die Verwendung von \thechapter in der Zeile
\openout\@apifile \jobname-\thechapter.api
ist also eher willkürlich. Man könnte stattdessen auch (außerhalb des Makros) einen eigenen Zähler apioverviews definieren und dann obige Zeile durch
\stepcounter{apioverviews}\openout \@apifile \jobname-\theapioverviews.api
ersetzen.