Notations and assumptions
$\circ$ denotes composition.
$g:= f\circ f\quad(\diamondsuit)$
Theorem$(\heartsuit)$:$\qquad g(n)=n\quad\forall\; n\in\mathbb Z^{+}$
For arbitrary $m,n\in\mathbb Z^{+}$ we have
$$\begin{align}
&\quad \color{#F0A}{g(n)^2+m^2+f(1)}\\
\stackrel{\diamondsuit,\clubsuit}=&\quad f(\color{red}{f(n)^2}+\color{blue}{f(m^2+f(1))})\\
\stackrel{\clubsuit}=&\quad f(\color{red}{f(n)^2}+\color{blue}{f(m)^2+1})\\
=&\quad f(\color{blue}{f(m)^2}+\color{red}{f(n)^2+1})\\
\stackrel{\clubsuit}=&\quad f(\color{blue}{f(m)^2}+\color{red}{f(n^2+f(1))})\\
\stackrel{\diamondsuit,\clubsuit}=&\quad \color{#F0A}{g(m)^2+n^2+f(1)}\\
\therefore&\quad g(n)^2-n^2=g(m)^2-m^2
\end{align}$$
Note that $g(n)$ is positive and can't be $-n$. So the following are true.
$g(n)= n$ for some $n\iff g(n)= n$ for all $n$.
$g(n)\neq n$ for some $n\iff g(n)\neq n$ for all $n$.
Assuming $g(n)\neq n$ and remembering $g(n)\in\mathbb Z^{+}$ we see
$$\therefore\quad\underbrace{\color{purple}{|g(n)+n|}}_{>n}\underbrace{|g(n)-n|}_{\ge1}=|g(1)^2-1^2|
$$
i.e. RHS is a constant integer but LHS can be arbitrarily large which is absurd. Therefore $g(n)=n$.
Theorem$(\spadesuit)$:$\qquad f$ is strictly increasing
$$
f(\color{red}{n}+\color{blue}{1})\stackrel{\heartsuit}=f(\color{blue}{1^2}+\color{red}{g(n)})\stackrel{\diamondsuit,\clubsuit}=f(1)^2+f(n)\stackrel{}>f(n)
$$
Conclusion:$\qquad f(n)=n$
$n>f(n)$ yields a contradiction:
$$
\color{red}{n}>\color{blue}{f(n)}\stackrel{\spadesuit}\iff f(\color{red}n)>f(\color{blue}{f(n)})\stackrel{\diamondsuit}\iff
f(n)>g(n)\stackrel{\heartsuit}\iff f(n)>n
$$
Similarly, $n<f(n)$ yields a contradiction:
$$
\color{red}{n}<\color{blue}{f(n)}\stackrel{\spadesuit}\iff f(\color{red}n)<f(\color{blue}{f(n)})\stackrel{\diamondsuit}\iff
f(n)<g(n)\stackrel{\heartsuit}\iff f(n)<n
$$
Therefore we conclude:
$$ f(n)=n$$