<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.monvisoenergia.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>Smart Biogas Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.monvisoenergia.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php/Special:Contributions/Admin"/>
	<updated>2026-09-26T14:38:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/Api/AnalysisType&amp;diff=292</id>
		<title>EN/Api/AnalysisType</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/Api/AnalysisType&amp;diff=292"/>
		<updated>2026-08-03T12:33:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=EN/API ◀ Back to API Menu]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of analysis types available in SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analisys_type&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: analysisTypeId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Code identified by 2 text parts separated by the - character&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Description of the analysis type&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: 2,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;FE-BAS&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Fermentation matrix - Basic analysis&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
the code is formatted as SAMPLE TYPE - PARAMETER TYPE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single analysis type details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analisys_type/{analysisTypeId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/analisys_type/7&lt;br /&gt;
&lt;br /&gt;
Result: Json containing both the analysis type data and a subset of parameters (Determinands) present in this analysis type&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &amp;quot;FU-BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_description&amp;quot;: &amp;quot;CHP Emissions - Basic analysis&amp;quot;,&lt;br /&gt;
 	&amp;quot;parameters&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: analysisTypeParameterId,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: determinandId,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Extended description with regulations, etc.&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: sampleTypeId,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;descriptive code of the sample type&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;description of the sample type&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: analysisParameterId,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;Descriptive code of the parameter type&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;extended description of the parameter type&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_range_min&amp;quot;: Minimum value to not consider the anomalous reading,&lt;br /&gt;
 			&amp;quot;f_range_max&amp;quot;: Maximum value to not consider the anomalous reading,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;unit of measurement&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;Short description of the parameter&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;Notes&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Standards UNI EN 14789:2017 – UNI EN 14792:2017 – UNI EN 15058:2017&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: 2,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;as-is&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;as-is basis&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;Carbon Monoxide&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_range_min&amp;quot;: 15,&lt;br /&gt;
 			&amp;quot;f_range_max&amp;quot;: 150,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;mg\/Nmc&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;5% O2&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Api/Tipi_di_analisi&amp;diff=291</id>
		<title>Api/Tipi di analisi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Api/Tipi_di_analisi&amp;diff=291"/>
		<updated>2026-08-03T12:31:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei tipi di analisi disponibili su SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis_type&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: idTipoAnalisi,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Codice identificato da 2 parti di testo separati dal carattere -&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Descrizione del tipo analisi&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: 2,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;FE-BAS&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Matrice in fermentazione-Analisi di base&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
il codice è formato da TIPO CAMPIONE - TIPO PARAMETRO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo tipo di analisi:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/analysis_type/{idTipoAnalisi} https://smartbiogas.it/api/v1/analisys_type/{idTipoAnalisi}]&lt;br /&gt;
&lt;br /&gt;
esempio [https://smartbiogas.it/api/v1/analysis_type/7 https://smartbiogas.it/api/v1/analisys_type/7]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json contenente sia i dati del tipo analisi e un sottoinsieme di parametri (Determinands) presenti in questo tipo di analisi&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &amp;quot;FU-BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_description&amp;quot;: &amp;quot;Fumi CHP - Analisi di base&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: idParametroTipoAnalisi,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: idDeterminand,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Descrizione estesa con normative ecc..&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: idTipoCampioni,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;codice descrittivo del tipo di campione&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;descrizione del tipo di campione&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: idParametriAnalisi,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;Codice descrittivo del tipo di parametri&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;descrizione estesa del tipo di parametri&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_range_min&amp;quot;: valore minimo per non considerare la lettura anomala,&lt;br /&gt;
 			&amp;quot;f_range_max&amp;quot;: valore massimo per non considerare la lettura anomala,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;unità di misura&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;Descrizione breve del parametro&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;Note&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Norme UNI EN 14789:2017 – UNI EN 14792:2017 – UNI EN 15058:2017&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: 2,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;tq&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;sul tal quale&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;Monossido di carbonio&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_range_min&amp;quot;: 15,&lt;br /&gt;
 			&amp;quot;f_range_max&amp;quot;: 150,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;mg\/Nmc&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;5% O2&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Api/Tipi_di_analisi&amp;diff=290</id>
		<title>Api/Tipi di analisi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Api/Tipi_di_analisi&amp;diff=290"/>
		<updated>2026-07-15T08:30:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei tipi di analisi disponibili su SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis_type&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: idTipoAnalisi,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Codice identificato da 2 parti di testo separati dal carattere -&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Descrizione del tipo analisi&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: 2,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;FE-BAS&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Matrice in fermentazione-Analisi di base&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
il codice è formato da TIPO CAMPIONE - TIPO PARAMETRO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo tipo di analisi:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/analysis_type/{idTipoAnalisi} https://smartbiogas.it/api/v1/analisys_type/{idTipoAnalisi}]&lt;br /&gt;
&lt;br /&gt;
esempio [https://smartbiogas.it/api/v1/analysis_type/7 https://smartbiogas.it/api/v1/analisys_type/7]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json contenente sia i dati del tipo analisi e un sottoinsieme di parametri (Determinands) presenti in questo tipo di analisi&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &amp;quot;FU-BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_description&amp;quot;: &amp;quot;Fumi CHP - Analisi di base&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: idParametroTipoAnalisi,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: idDeterminand,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Descrizione estesa con normative ecc..&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: idTipoCampioni,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;codice descrittivo del tipo di campione&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;descrizione del tipo di campione&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: idParametriAnalisi,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;Codice descrittivo del tipo di parametri&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;descrizione estesa del tipo di parametri&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;unità di misura&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;Descrizione breve del parametro&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;Note&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Norme UNI EN 14789:2017 – UNI EN 14792:2017 – UNI EN 15058:2017&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: 2,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;tq&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;sul tal quale&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;Monossido di carbonio&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;mg\/Nmc&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;5% O2&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Api/Tipi_di_analisi&amp;diff=289</id>
		<title>Api/Tipi di analisi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Api/Tipi_di_analisi&amp;diff=289"/>
		<updated>2026-07-15T08:29:15Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei tipi di analisi disponibili su SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis_type&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: idTipoAnalisi,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Codice identificato da 2 parti di testo separati dal carattere -&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Descrizione del tipo analisi&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analysis_type_id&amp;quot;: 2,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;FE-BAS&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Matrice in fermentazione-Analisi di base&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
il codice è formato da TIPO CAMPIONE - TIPO PARAMETRO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo tipo di analisi:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analisys_type/{idTipoAnalisi}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/analisys_type/7&lt;br /&gt;
&lt;br /&gt;
Risultato: Json contenente sia i dati del tipo analisi e un sottoinsieme di parametri (Determinands) presenti in questo tipo di analisi&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &amp;quot;FU-BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_description&amp;quot;: &amp;quot;Fumi CHP - Analisi di base&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: idParametroTipoAnalisi,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: idDeterminand,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Descrizione estesa con normative ecc..&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: idTipoCampioni,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;codice descrittivo del tipo di campione&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;descrizione del tipo di campione&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: idParametriAnalisi,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;Codice descrittivo del tipo di parametri&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;descrizione estesa del tipo di parametri&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;unità di misura&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;Descrizione breve del parametro&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;Note&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Norme UNI EN 14789:2017 – UNI EN 14792:2017 – UNI EN 15058:2017&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_analisi_id&amp;quot;: 2,&lt;br /&gt;
 			&amp;quot;tipo_campioni_cod&amp;quot;: &amp;quot;tq&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_campioni_description&amp;quot;: &amp;quot;sul tal quale&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_cod&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;tipo_parametri_analisi_description&amp;quot;: &amp;quot;Monossido di carbonio&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;mg\/Nmc&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_desc_breve&amp;quot;: &amp;quot;CO&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;5% O2&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=288</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=288"/>
		<updated>2026-07-02T11:05:51Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse stock:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse/{warehouseId}/stock_balance/{date in ISO format yyyy-MM-dd hh:mm:ss}&lt;br /&gt;
&lt;br /&gt;
example https://smartbiogas.it/api/v1/warehouse/3857/stock_balance/2024-02-28 23:59:59&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 &amp;quot;f_last_stock_datetime&amp;quot;: indicates the date of the most recent on-hand stock relative to the input date,&lt;br /&gt;
 &amp;quot;f_last_movement_datetime&amp;quot;:  indicates the last recorded movement before the input date,&lt;br /&gt;
 &amp;quot;f_quantity&amp;quot;:  tons of material calculated between the last on-hand stock and the last movement,&lt;br /&gt;
 &amp;quot;substrati_id&amp;quot;: substrateId,&lt;br /&gt;
 &amp;quot;location_id&amp;quot;: -1 -&amp;gt; INDOOR, 1 -&amp;gt; OUTDOOR,&lt;br /&gt;
 }&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 &amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 &amp;quot;f_last_stock_datetime&amp;quot;: &amp;quot;2000-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 &amp;quot;f_last_movement_datetime&amp;quot;: &amp;quot;2022-12-31 23:59:59&amp;quot;,&lt;br /&gt;
 &amp;quot;f_quantity&amp;quot;: &amp;quot;4954.000&amp;quot;,&lt;br /&gt;
 &amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 &amp;quot;location_id&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 for no subject (internal movements)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 for no subject (internal movements)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1234&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=287</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=287"/>
		<updated>2026-07-02T11:02:38Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record                        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stock del singolo magazzino:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/stock_balance/{data&amp;lt;/nowiki&amp;gt; in formato ISO yyyy-MM-dd hh:mm:ss}  &lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/stock_balance/2024-02-28&amp;amp;#x20;23:59:59  &lt;br /&gt;
&lt;br /&gt;
Risultato:   &lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: indica la data della più recente giacenza rispetto la data in input,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;:  indica l&#039;ultimo movimento registrato prima della data in input,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:  tonnellate di materiale calcolato tra l&#039;ultima giacenza e l&#039;ultimo movimento,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 }&lt;br /&gt;
Esempio:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: &amp;quot;2000-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;: &amp;quot;2022-12-31 23:59:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: &amp;quot;4954.000&amp;quot;,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Ricerca movimenti per data ===&lt;br /&gt;
Indicanto un parametro è possibile filtrare i movimenti solo a partire da una data specificata in formato ISO&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da={iso_date}&amp;amp;f_data_a={iso_date}&lt;br /&gt;
&lt;br /&gt;
f_data_a e f_data_da possono essere usate anche da sole&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da=2026-01-01&amp;amp;#x20;23:59:59&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=286</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=286"/>
		<updated>2026-07-02T11:01:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record                        &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stock del singolo magazzino:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/stock_balance/{data&amp;lt;/nowiki&amp;gt; in formato ISO yyyy-MM-dd hh:mm:ss}  &lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/stock_balance/2024-02-28&amp;amp;#x20;23:59:59  &lt;br /&gt;
&lt;br /&gt;
Risultato:   &lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: indica la data della più recente giacenza rispetto la data in input,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;:  indica l&#039;ultimo movimento registrato prima della data in input,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:  tonnellate di materiale calcolato tra l&#039;ultima giacenza e l&#039;ultimo movimento,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 }&lt;br /&gt;
Esempio:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: &amp;quot;2000-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;: &amp;quot;2022-12-31 23:59:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: &amp;quot;4954.000&amp;quot;,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Ricerca movimenti per data ===&lt;br /&gt;
Indicanto un parametro è possibile filtrare i movimenti solo a partire da una data specificata in formato ISO&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da={iso_date}&amp;amp;f_data_a={iso_date}&lt;br /&gt;
&lt;br /&gt;
f_data_a e f_data_da possono essere usate anche da sole&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da=2026-01-01&amp;amp;#x20;23:59:59&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=285</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=285"/>
		<updated>2026-07-02T11:01:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record        &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stock del singolo magazzino:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/stock_balance/{data&amp;lt;/nowiki&amp;gt; in formato ISO yyyy-MM-dd hh:mm:ss}  &lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/stock_balance/2024-02-28&amp;amp;#x20;23:59:59  &lt;br /&gt;
&lt;br /&gt;
Risultato:   &lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: indica la data della più recente giacenza rispetto la data in input,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;:  indica l&#039;ultimo movimento registrato prima della data in input,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:  tonnellate di materiale calcolato tra l&#039;ultima giacenza e l&#039;ultimo movimento,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 }&lt;br /&gt;
Esempio:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: &amp;quot;2000-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;: &amp;quot;2022-12-31 23:59:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: &amp;quot;4954.000&amp;quot;,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Ricerca movimenti per data ===&lt;br /&gt;
Indicanto un parametro è possibile filtrare i movimenti solo a partire da una data specificata in formato ISO&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da={iso_date}&amp;amp;f_data_a={iso_date}&lt;br /&gt;
&lt;br /&gt;
f_data_a e f_data_da possono essere usate anche da sole&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da=2026-01-01&amp;amp;#x20;23:59:59&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=284</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=284"/>
		<updated>2026-07-02T11:00:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record    &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Stock del singolo magazzino:&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/stock_balance/{data&amp;lt;/nowiki&amp;gt; in formato ISO yyyy-MM-dd hh:mm:ss}  &lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/stock_balance/2024-02-28&amp;amp;#x20;23:59:59  &lt;br /&gt;
&lt;br /&gt;
Risultato:   &lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: indica la data della più recente giacenza rispetto la data in input,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;:  indica l&#039;ultimo movimento registrato prima della data in input,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:  tonnellate di materiale calcolato tra l&#039;ultima giacenza e l&#039;ultimo movimento,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 }&lt;br /&gt;
Esempio:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 	&amp;quot;f_last_stock_datetime&amp;quot;: &amp;quot;2000-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_last_movement_datetime&amp;quot;: &amp;quot;2022-12-31 23:59:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: &amp;quot;4954.000&amp;quot;,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 	&amp;quot;location_id&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Ricerca movimenti per data ===&lt;br /&gt;
Indicanto un parametro è possibile filtrare i movimenti solo a partire da una data specificata in formato ISO&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da={iso_date}&amp;amp;f_data_a={iso_date}&lt;br /&gt;
&lt;br /&gt;
f_data_a e f_data_da possono essere usate anche da sole&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da=2026-01-01&amp;amp;#x20;23:59:59&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=283</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=283"/>
		<updated>2026-06-29T12:26:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record  &lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Ricerca movimenti per data ===&lt;br /&gt;
Indicanto un parametro è possibile filtrare i movimenti solo a partire da una data specificata in formato ISO&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da={iso_date}&amp;amp;f_data_a={iso_date}&lt;br /&gt;
&lt;br /&gt;
f_data_a e f_data_da possono essere usate anche da sole&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da=2026-01-01&amp;amp;#x20;23:59:59&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=282</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=282"/>
		<updated>2026-06-29T10:38:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record  &lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
=== Ricerca movimenti per data ===&lt;br /&gt;
Indicanto un parametro è possibile filtrare i movimenti solo a partire da una data specificata in formato ISO&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da={iso_date}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5239/movements?f_data_da=2026-01-01&amp;amp;#x20;23:59:59&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Subjects&amp;diff=281</id>
		<title>EN/API/Subjects</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Subjects&amp;diff=281"/>
		<updated>2026-06-10T15:15:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of subjects linked to SB&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/subjects &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Company Name or Full Name&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;VAT number&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: timestamp of last modification&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1979,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Cma Srl&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;04199860232&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: &amp;quot;2026-06-10 16:03:10&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
You can add a &#039;timestamp&#039; parameter to receive data modified after the timestamp.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Example: &amp;lt;nowiki&amp;gt;http://smartbiogas.it/api/v1/subjects/?timestamp=2026-06-10&amp;lt;/nowiki&amp;gt; 16:02:13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single subject details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects/{subjectId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects/595&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by VAT number:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_vat={full&amp;lt;/nowiki&amp;gt; VAT number}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects?f_vat=10178660014&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_soggetto_name={string&amp;lt;/nowiki&amp;gt; to search in the name} &lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects?f_soggetto_name=CMA&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above with 0 or more records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Soggetti&amp;diff=280</id>
		<title>API/Soggetti</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Soggetti&amp;diff=280"/>
		<updated>2026-06-10T15:14:18Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei soggetti collegati a SB&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/subjects &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: idSoggetto,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Denominazione o Ragione Sociale&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;Partita Iva&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: timestamp ultima modifica,&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1979,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Cma Srl&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;04199860232&amp;quot;&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: &amp;quot;2026-06-10 16:03:10&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
E&#039; possibile aggiungere un parametro &#039;timestamp&#039; per ricevere i dati modificato in data successiva al timestamp&lt;br /&gt;
&lt;br /&gt;
esempio &amp;lt;nowiki&amp;gt;http://smartbiogas.it/api/v1/subjects/?timestamp=2026-06-10&amp;lt;/nowiki&amp;gt; 16:02:13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo soggetto:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects/{idSoggetto}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/subjects/595&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record e dettagli maggiori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca per partita iva:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_vat={partita&amp;lt;/nowiki&amp;gt; iva completa}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/subjects?f_vat=10178660014&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca per descrizione:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_soggetto_name={stringa&amp;lt;/nowiki&amp;gt; da ricercare nella denominazione} &lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/subjects?f_soggetto_name=CMA&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra con 0 o più records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Tipi_di_substrati&amp;diff=279</id>
		<title>API/Tipi di substrati</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Tipi_di_substrati&amp;diff=279"/>
		<updated>2026-06-10T14:17:57Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei substrati in utilizzo su SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
https://smartbiogas.it/api/v1/feedstocks_type&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;id del substrato,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;codice del substrato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: timestamp dell&#039;ultima modifica&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: 162,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;BT611GRC001&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Rotture di mais\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;maize gritz\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: &amp;quot;2026-06-10 16:03:10&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo substrato:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type/{feedstock_type_id&amp;lt;/nowiki&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/feedstocks_type/6&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record e maggiori dettagli&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca per codice:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type?f_cod={codice&amp;lt;/nowiki&amp;gt; substrato}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/feedstocks_type?f_cod=RN002ASL&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca per descrizione:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type?f_json_description={stringa&amp;lt;/nowiki&amp;gt; da ricercare nella descrizione (multilingua)}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/feedstocks_type?f_json_description=mais&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra con 0 o più records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/feedstocks_type&amp;diff=278</id>
		<title>EN/API/feedstocks type</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/feedstocks_type&amp;diff=278"/>
		<updated>2026-06-10T14:17:22Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of feedstocks used in SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
https://smartbiogas.it/api/v1/feedstocks_type&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;feedstock code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;italian desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;english desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;french desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;spanish desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: timestamp of last modification&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: 162,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;BT611GRC001&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Rotture di mais\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;maize gritz\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: &amp;quot;2026-06-10 16:03:10&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single feedstock details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type/{feedstock_type_id}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/feedstocks_type/6&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type?f_cod={feedstock&amp;lt;/nowiki&amp;gt; code}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/feedstocks_type?f_cod=RN002ASL&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type?f_json_description={string&amp;lt;/nowiki&amp;gt; to search in the description (multilingual)}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/feedstocks_type?f_json_description=maize&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above with 0 or more records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Subjects&amp;diff=277</id>
		<title>EN/API/Subjects</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Subjects&amp;diff=277"/>
		<updated>2026-06-10T14:10:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of subjects linked to SB&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/subjects &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Company Name or Full Name&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;VAT number&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: timestamp of last modification&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1979,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Cma Srl&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;04199860232&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: &amp;quot;2026-06-10 16:03:10&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single subject details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects/{subjectId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects/595&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by VAT number:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_vat={full&amp;lt;/nowiki&amp;gt; VAT number}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects?f_vat=10178660014&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_soggetto_name={string&amp;lt;/nowiki&amp;gt; to search in the name} &lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects?f_soggetto_name=CMA&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above with 0 or more records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Soggetti&amp;diff=276</id>
		<title>API/Soggetti</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Soggetti&amp;diff=276"/>
		<updated>2026-06-10T14:09:17Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei soggetti collegati a SB&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/subjects &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: idSoggetto,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Denominazione o Ragione Sociale&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;Partita Iva&amp;quot;,&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: timestamp ultima modifica,&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1979,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Cma Srl&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;04199860232&amp;quot;&lt;br /&gt;
 		&amp;quot;ts_last_edit&amp;quot;: &amp;quot;2026-06-10 16:03:10&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo soggetto:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects/{idSoggetto}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/subjects/595&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record e dettagli maggiori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca per partita iva:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_vat={partita&amp;lt;/nowiki&amp;gt; iva completa}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/subjects?f_vat=10178660014&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca per descrizione:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_soggetto_name={stringa&amp;lt;/nowiki&amp;gt; da ricercare nella denominazione} &lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/subjects?f_soggetto_name=CMA&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra con 0 o più records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=275</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=275"/>
		<updated>2026-06-10T12:45:11Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 for no subject (internal movements)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 for no subject (internal movements)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1234&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=274</id>
		<title>API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/Magazzino&amp;diff=274"/>
		<updated>2026-06-10T12:44:52Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei magazzino (interni ed esterni) di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In smartbiogas il magazzino è frazionato in tanti magazzini quanti sono i substrati (cioè le materie stoccate) e per provenienza Interna o esterna.&lt;br /&gt;
&lt;br /&gt;
Ad esempio&lt;br /&gt;
&lt;br /&gt;
Un impianto potrebbe avere 2 magazzini per il Mais:&lt;br /&gt;
&lt;br /&gt;
- uno interno per il mais proveniente dai campi dell&#039;azienda proprietaria dell&#039;impianto o dai suoi soci.&lt;br /&gt;
&lt;br /&gt;
- uno esterno per il mais proveniente da acquisti da soggetto esterni.&lt;br /&gt;
&lt;br /&gt;
Un impianto può averne anche solo uno (normalmente interno) se non acquista mais da esterni.&lt;br /&gt;
&lt;br /&gt;
Questo viene ripetuto per ogni substrato. Ad esempio potremmo avere 1 magazzino interno per liquame, uno per letame, uno per Mais e magari uno esterno per Frumento.&lt;br /&gt;
&lt;br /&gt;
I movimenti di magazzino vengono quindi associati ad un magazzino, in tal modo abbiamo un contenitore logico che raggruppa tutti i movimenti di un substrato (interno o esterno) e, per ogni movimento, rimangono salvati dati quali: fornitore, data/ora, quantità, codice della pesata, targa del mezzo ecc...&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Magazzini&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Elenco di tutti i magazzini di un impianto.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNO, 1 -&amp;gt; ESTERNO,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: idSubstrato,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Desc italiana\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Desc inglese\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;Desc francese\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Desc spagnola\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Descrizione della location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del singolo magazzino:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record  &lt;br /&gt;
&lt;br /&gt;
=== Movimenti di magazzino ===&lt;br /&gt;
Una volta identificato il magazzino si può lavorare sui movimenti con le seguenti API&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements/350000 https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con elenco di movimenti&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni)),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca singolo movimento per idMovimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Risultato: Json con dettagli del movimento&lt;br /&gt;
 [&lt;br /&gt;
 	&#039;&#039;&#039;{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;:&#039;&#039;&#039; &#039;&#039;&#039;idMovimento,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: idMagazzino,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantità in tonnellate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]]&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 nessun soggetto (per movimenti interni)),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;identificativo dell&#039;operatore&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; senza disinfezione / 1 -&amp;gt; con disinfezione,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;prezzo in euro a tonnellata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;distanza in km del viaggio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;identificativo della provenienza&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContratto (-1 se non c&#039;è contratto),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Numero/codic del contratto (solo se idContratto &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Numero della partita a cui il movimento è associato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Numero di DDT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Numero della pesata&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; non c&#039;è documento, 1 -&amp;gt; DDT, 2 -&amp;gt; fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&#039;&#039;&#039;Inserimento movimento di magazzino&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere oltre all&#039;autenticazione X-API-TOKEN un JSON così formato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:INT quantità in tonnellate,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT Vedi [[API/Tipologia Movimenti magazzino|Tipologia Movimenti magazzino]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT idSoggetto o -1 se manca il fornitore o il destinatario (nei casi di produzione interna o utilizzazione agricola),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:TEXT &amp;quot;Targa del mezzo&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfezione, 1 -&amp;gt; disinfezione eseguita,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL prezzo a tonnellata in euro,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distanza in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Identificativo della provenienza&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT idContratto (-1 se non presente),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;codice della partita a cui è collegato il movimento&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT&amp;quot;Numero DDT&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT numero della pesata,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no documento, 1 -&amp;gt; DDT, 2 -&amp;gt; Fattura immediata, 3 -&amp;gt; altro&lt;br /&gt;
 }&lt;br /&gt;
Esempio&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;:101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;:&amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;:1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;:&amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;:&amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;Campo nord&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;:&amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aggiornamento dei dati di un singolo movimento&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{idMagazzino}/movements/{idMovimento}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Come per l&#039;inserimento va passato lo stesso json, il sistema invece di aggiungere un movimento andrà ad aggiornare i dati.&lt;br /&gt;
&lt;br /&gt;
essendo il movimento collegato ad un magazzino identificato da idMagazzino risulta evidente che il tipo di substrato, la locazione del magazzino (interno/esterno), tantomeno l&#039;impianto non possono essere variate in questo modo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Risultato inserimento e aggiornamento: json con informazioni sullo stato della riuscita:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi [[Codici errore API]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: idMovimento (in caso di inserimento torna l&#039;id appena inserito, in caso di aggiornamento l&#039;idMovimento su cui si è tentata l&#039;operazione),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
esempi:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In questo caso si è tentato di inserire per 2 volte di fila lo stesso movimento.&lt;br /&gt;
 Un movimento è univoco per queste chiavi:&lt;br /&gt;
 - idMagazzino (che identifica già un magazzino di un impianto di un substrato e se Interno o Esterno)&lt;br /&gt;
 - Data/ora (al secondo)&lt;br /&gt;
 - Tipo Movimento&lt;br /&gt;
 &lt;br /&gt;
 se il sistema rileva che si sta tentando di inserire un movimento ma esiste già per un record con quelle condizioni, da l&#039;errore 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: aaaa&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=273</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=273"/>
		<updated>2026-06-10T12:43:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 for no subject (internal movements),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (or -1 for no subject (internal movements),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1234&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=272</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=272"/>
		<updated>2026-06-10T09:24:26Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId (o -1 per nessun soggetto collegato (esempio movimenti interni),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1234&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=271</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=271"/>
		<updated>2026-06-10T09:23:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: soggettoId (o -1 per nessun soggetto collegato (esempio movimenti interni),&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: soggettoId (o -1 per nessun soggetto collegato (esempio movimenti interni),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1234&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=270</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=270"/>
		<updated>2026-06-10T09:21:09Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: soggettoId,&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: soggettoId (o -1 per nessun soggetto collegato (esempio movimenti interni),&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1234&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/ContrattiDiFornitura&amp;diff=269</id>
		<title>API/ContrattiDiFornitura</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/ContrattiDiFornitura&amp;diff=269"/>
		<updated>2026-06-04T12:52:43Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei contratti di fornitura&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts &lt;br /&gt;
&lt;br /&gt;
Risultato: Json dei contratti di fornitura dell&#039;impianto&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: idContrattoDiFornitura,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: &amp;quot;Numero o codice del contratto&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;Numero o codice del certificato&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_start&amp;quot;: &amp;quot;Data in formato ISO di partenza del contratto&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_end&amp;quot;: &amp;quot;Data in formato ISO di chiusura del contratto&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: idSoggetto del fornitore&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: 47,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_start&amp;quot;: &amp;quot;2025-05-12&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_end&amp;quot;: &amp;quot;2026-05-12&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1876&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca filtrando un fornitore&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts?soggetto_id={idSoggetto}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/suppliercontracts?soggetto_id=1875&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json ma con 0 o più contratti filtrati per il fornitore passato nei criteri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati del contratto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts/{idContrattoDiFornitura}&lt;br /&gt;
&lt;br /&gt;
esempio https://smartbiogas.it/api/v1/suppliercontracts/47&lt;br /&gt;
&lt;br /&gt;
Risultato: stesso Json di sopra ma con un solo record e dettagli maggiori&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot;: 47,&lt;br /&gt;
 	&amp;quot;f_contract_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_certificate_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_date_start&amp;quot;: &amp;quot;2025-05-12&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_date_end&amp;quot;: &amp;quot;2026-05-12&amp;quot;,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 1876,&lt;br /&gt;
 	&amp;quot;feedstocks&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;substrati_id&amp;quot;: idProdotto,&lt;br /&gt;
 			&amp;quot;f_substrati_description&amp;quot;: &amp;quot;Descrizione multilingua del prodotto&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_substrati_qta&amp;quot;: quantità stipulata nel contratto in tons/anno&lt;br /&gt;
 			&amp;quot;f_contract_price&amp;quot;: prezzo del contratto in €/anno&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_substrati_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;:\&amp;quot;Mais pianta intera insilato\&amp;quot;,\&amp;quot;en\&amp;quot;:\&amp;quot;Maize whole plant silage\&amp;quot;,\&amp;quot;es\&amp;quot;:\&amp;quot;Maize whole plant silage\&amp;quot;,\&amp;quot;fr\&amp;quot;:\&amp;quot;Maïs plante entière ensilée\&amp;quot;}&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_substrati_qta&amp;quot;: 2500,&lt;br /&gt;
 			&amp;quot;f_contract_price&amp;quot;: 1000,&lt;br /&gt;
 		},&lt;br /&gt;
 	],&lt;br /&gt;
 	...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Plant/Asservito_a_processi&amp;diff=268</id>
		<title>Plant/Asservito a processi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Plant/Asservito_a_processi&amp;diff=268"/>
		<updated>2026-05-27T13:19:49Z</updated>

		<summary type="html">&lt;p&gt;Admin: Merge edit by 79.135.39.194&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Indicare se l&#039;impianto è asservito ad un processo produttivo interno o esterno all&#039;azienda al sensi della Delibera ARERA 174/2026.&lt;br /&gt;
&lt;br /&gt;
L&#039;asservimento può essere:&lt;br /&gt;
&lt;br /&gt;
* Solo elettricità ceduta all&#039;utenza&lt;br /&gt;
* Solo calore ceduto all&#039;utenza&lt;br /&gt;
* Calore ed elettricità&lt;br /&gt;
Selezionare l&#039;opzione in base alle informazioni tecniche ed agli eventuali contatori di energia presenti in impianto&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Plant/Asservito_a_processi&amp;diff=263</id>
		<title>Plant/Asservito a processi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Plant/Asservito_a_processi&amp;diff=263"/>
		<updated>2026-05-25T12:00:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: Correzioni grammaticali&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Indicare se l&#039;impianto è asservito ad un processo produttivo interno o esterno all&#039;azienda al sensi della Delibera ARERA 174/2026.&lt;br /&gt;
&lt;br /&gt;
L&#039;asservimento può essere:&lt;br /&gt;
&lt;br /&gt;
* Solo elettricità ceduta all&#039;utenza&lt;br /&gt;
* Solo calore ceduto all&#039;utenza&lt;br /&gt;
* Calore ed elettriciità&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Plant/Asservito_a_processi&amp;diff=262</id>
		<title>Plant/Asservito a processi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Plant/Asservito_a_processi&amp;diff=262"/>
		<updated>2026-05-25T11:59:36Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Indicare se l&#039;impianto è asservito ad un processo produttivo interno o esterno all&#039;azienda al sensi della Delibera ARERA 174/2026.&lt;br /&gt;
&lt;br /&gt;
L&#039;asservimento può essere:&lt;br /&gt;
&lt;br /&gt;
* solo elettricità ceduta all&#039;utenza&lt;br /&gt;
* Solo calore ceduto all&#039;utenza&lt;br /&gt;
* Calore ed elettriciità&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=API/PuntidiControlloMisure&amp;diff=259</id>
		<title>API/PuntidiControlloMisure</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=API/PuntidiControlloMisure&amp;diff=259"/>
		<updated>2026-05-12T14:54:35Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=API ◀ Torna al menù API]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco dei punti di controllo di un impianto&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Nell&#039;header delle richieste va specificata l&#039;autenticazione&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {chiave da 128 caratteri fornita per l&#039;impianto in questione)&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Ogni impianto ha un set di punti di controllo standardizzati, ci possono essere differenze tra impianti biogas e biometano. Ogni punto di controllo può a sua volta avere più misurazioni.&lt;br /&gt;
&lt;br /&gt;
Per ogni misura si potranno inserire delle letture a frequenze variabili. Tali frequenze sono descritte in ogni misura, ma non è vincolante. &lt;br /&gt;
&lt;br /&gt;
I dati di una misura potranno essere:&lt;br /&gt;
&lt;br /&gt;
* letture singole puntuali&lt;br /&gt;
* valori progressivi (contatori)&lt;br /&gt;
* campionamenti di un periodo con un valore medio.&lt;br /&gt;
&lt;br /&gt;
Queste caratteristiche possono essere lette nell&#039;anagrafica delle misure stesse.&lt;br /&gt;
&lt;br /&gt;
Ogni punto di controllo ha un codice di questo tipo:&lt;br /&gt;
&lt;br /&gt;
a.bb&lt;br /&gt;
&lt;br /&gt;
a cui seguono le misurazioni con un ulteriore codice:&lt;br /&gt;
&lt;br /&gt;
in totale una misura sarà definita da un codice che comprende il punto di controllo e la misura stessa.&lt;br /&gt;
&lt;br /&gt;
Esempio&lt;br /&gt;
&lt;br /&gt;
2.04.a &lt;br /&gt;
&lt;br /&gt;
2.04 -&amp;gt; punto di controllo &lt;br /&gt;
&lt;br /&gt;
a -&amp;gt; misura&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elenco Punti di Controllo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/controlpoints &lt;br /&gt;
&lt;br /&gt;
Risultato: Json con un array di risultati&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_control_points_id&amp;quot;: idPuntoDiControllo,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Codice testuale (formato n.mm)&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;:\&amp;quot;descrizione in italiano\&amp;quot;,\&amp;quot;en\&amp;quot;:\&amp;quot;Descrizione in inglese\&amp;quot;,\&amp;quot;es\&amp;quot;:\&amp;quot;...\&amp;quot;,\&amp;quot;fr\&amp;quot;:\&amp;quot;...\&amp;quot;}&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_control_points_id&amp;quot;: 10401,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;2.08&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;:\&amp;quot;BG alla caldaia\&amp;quot;,\&amp;quot;en\&amp;quot;:\&amp;quot;Biogas to the boiler\&amp;quot;,\&amp;quot;es\&amp;quot;:\&amp;quot;Biogas to the boiler\&amp;quot;,\&amp;quot;fr\&amp;quot;:\&amp;quot;Biogas to the boiler\&amp;quot;}&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dati punto di controllo e misure collegate&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Ad ogni punto di controllo possono essere associate più misure. Ogni misura avrà uno storico di letture che saranno i dati veri e propri nel tempo.&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/controlpoints/{idPuntoDiControllo}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
esempio: https://smartbiogas.it/api/v1/controlpoints/10335&lt;br /&gt;
&lt;br /&gt;
Risultato: Stesso Json sopra di un unico punto di controllo che contiene un elenco chiamato misure. &lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_control_points_id&amp;quot;: idPuntoDiControllo,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Codice testuale (formato n.mm)&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;:\&amp;quot;descrizione in italiano\&amp;quot;,\&amp;quot;en\&amp;quot;:\&amp;quot;Descrizione in inglese\&amp;quot;,\&amp;quot;es\&amp;quot;:\&amp;quot;...\&amp;quot;,\&amp;quot;fr\&amp;quot;:\&amp;quot;...\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;measures&amp;quot;: [&lt;br /&gt;
 			{&lt;br /&gt;
 				&amp;quot;plant_control_points_misure_id&amp;quot;: idMisura (collegata a questo impianto / Punto di controllo),&lt;br /&gt;
 				&amp;quot;f_description&amp;quot;: &amp;quot;Descrizione testuale&amp;quot;,&lt;br /&gt;
 				&amp;quot;frequency_unita_misura_id&amp;quot;: idUnitàDiMisura (della frequenza di campionamento: del gruppo Tempo),&lt;br /&gt;
 				&amp;quot;f_frequency&amp;quot;: valore della frequenza,&lt;br /&gt;
 				&amp;quot;measure_unita_misura_id&amp;quot;: [[API/Tipi Misure|idUnitàDiMisura]] (dei valori della misura),&lt;br /&gt;
 				&amp;quot;measure_type_id&amp;quot;: idTipoMisura (vedi [[API/PuntidiControllo/TipiMisurazioni|Tipi di misurazioni]]),&lt;br /&gt;
 				&amp;quot;f_cod_misura&amp;quot;: &amp;quot;Codice completo di punto di controllo e misura&amp;quot;&lt;br /&gt;
 			},&lt;br /&gt;
 			{&lt;br /&gt;
 				&amp;quot;plant_control_points_misure_id&amp;quot;: 21042,&lt;br /&gt;
 				&amp;quot;f_description&amp;quot;: &amp;quot;Produzione EE FV1&amp;quot;,&lt;br /&gt;
 				&amp;quot;frequency_unita_misura_id&amp;quot;: 32,&lt;br /&gt;
 				&amp;quot;f_frequency&amp;quot;: &amp;quot;1.0000&amp;quot;,&lt;br /&gt;
 				&amp;quot;measure_unita_misura_id&amp;quot;: 25,&lt;br /&gt;
 				&amp;quot;measure_type_id&amp;quot;: 1,&lt;br /&gt;
 				&amp;quot;f_cod_misura&amp;quot;: &amp;quot;2.12.a&amp;quot;&lt;br /&gt;
 			},&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ricerca Punti di controllo&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/controlpoints?f_cod={codice&amp;lt;/nowiki&amp;gt; o parte del codice}&lt;br /&gt;
&lt;br /&gt;
esempio: https://smartbiogas.it/api/v1/controlpoints?f_cod=2.13&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Inserimento di una lettura&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Una volta individuata una misura (plant_control_points_misure_id) e il relativo punto di controllo (plant_control_points_id) è possibile inserire una lettura nello storico&lt;br /&gt;
&lt;br /&gt;
L&#039;unità di misura della lettura inviata dal sensore deve essere deciso a monte e configurato quindi su SB. E&#039; possibile capire l&#039;unità di misura corrente tramite le api nei dati della misura della quale si inserisce la lettura.&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/controlpoints/{idPuntoDiControllo}/measures/{idMisura}/readings&lt;br /&gt;
&lt;br /&gt;
esempio: https://smartbiogas.it/api/v1/controlpoints/10431/measures/20583/readings&lt;br /&gt;
&lt;br /&gt;
La chiamata deve avere, oltre all&#039;autenticazione X-API-TOKEN, un JSON così formato&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data_lettura_inizio_campione&amp;quot;:DATETIME (nullable) &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_data_lettura&amp;quot;: DATETIME &amp;quot;data/ora in formato ISO&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_rilevatore&amp;quot;: TEXT &amp;quot;Identificazione dell&#039;operatore&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_lettura&amp;quot;: DECIMAL &amp;quot;misura numerica&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_note&amp;quot;:TEXT &amp;quot;Eventuali note&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_inspections_id&amp;quot;: INT &amp;quot;ID della visita (lasciare -1 o non mettere proprio il campo in caso di misura non inserita per visite/ispezioni),&lt;br /&gt;
 	&amp;quot;analisi_id&amp;quot;: INT &amp;quot;ID dell&#039;analisi (lasciare -1 o non mettere proprio il campo in caso di misura non da analisi)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
Esempio di misura in un periodo di 1 ora:&lt;br /&gt;
 &lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data_lettura_inizio_campione&amp;quot;:&amp;quot;2006-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_data_lettura&amp;quot;:&amp;quot;2026-01-01 01:00:00&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_rilevatore&amp;quot;:&amp;quot;test api&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_lettura&amp;quot;: 15.42,&lt;br /&gt;
 	&amp;quot;f_note&amp;quot;:&amp;quot;15.42 kW in un ora&amp;quot;,&lt;br /&gt;
 	&amp;quot;analisi_id&amp;quot;:-1&lt;br /&gt;
 }&lt;br /&gt;
Esempio di misura puntuale&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data_lettura_inizio_campione&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_data_lettura&amp;quot;:&amp;quot;2026-01-01 23:59:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_rilevatore&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_lettura&amp;quot;: 15.42,&lt;br /&gt;
 	&amp;quot;f_note&amp;quot;:&amp;quot;A fine giornata il contatore segnava 15.42 kw&amp;quot;,&lt;br /&gt;
 	&amp;quot;analisi_id&amp;quot;:-1&lt;br /&gt;
 }&lt;br /&gt;
Il sistema deve ritornare un Json come risultato:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: vedi Codici errore API,&lt;br /&gt;
 	&amp;quot;reading_id&amp;quot;: idLettura(torna l&#039;id appena inserito),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Messaggio per capire l&#039;eventuale errore&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API&amp;diff=258</id>
		<title>EN/API</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API&amp;diff=258"/>
		<updated>2026-05-07T09:36:03Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Smartbiogas (SB) provides an API system that can be used to:&lt;br /&gt;
&lt;br /&gt;
# Integrate your own system to read data from SB master records:&lt;br /&gt;
## Feedstocks&lt;br /&gt;
## European Countries and Cities used in our records&lt;br /&gt;
## Subjects&lt;br /&gt;
## Units of measurement&lt;br /&gt;
## Analysis types and parameters&lt;br /&gt;
# Automate the entry of warehouse loads and unloads, or sensor measurements&lt;br /&gt;
# Upload analysis results&lt;br /&gt;
&lt;br /&gt;
Access is not public, both for data security and privacy reasons, and to verify the data source.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It is necessary to request the SB team to &amp;quot;whitelist&amp;quot; the public IP address(es) from which the requests will originate. By default, any request will result in an &amp;quot;unauthorized IP&amp;quot; error.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main route for SB API access is (currently version 1):&lt;br /&gt;
&lt;br /&gt;
https://smartbiogas.it/api/v1&lt;br /&gt;
&lt;br /&gt;
Example to view the list of feedstocks:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/feedstocks_type&lt;br /&gt;
&lt;br /&gt;
In addition to IP whitelisting, for certain resources linked to a specific plant (e.g., Warehouses and warehouse movements), a 128-character key is required. This provides an additional layer of security and uniquely identifies the plant you are working on.&lt;br /&gt;
&lt;br /&gt;
This key must be presented in the request **HEADER** as shown in the example:&lt;br /&gt;
&lt;br /&gt;
X-API-TOKEN: FpEycf3HmcML6Hv4qsjZBXroeWoKGyHyTMZKRO1cekFQkCADoScp5RYXjtrlQvoD5BJhVepaRjruzgux4yfVzq3pBOVoHxybA2Jc1Iu0oyBHMdRiJcjFigLtOtRUCRd1&lt;br /&gt;
&lt;br /&gt;
Each route follows standard REST conventions, using the verbs GET, POST, and PATCH.&lt;br /&gt;
&lt;br /&gt;
In general, the routing rules are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+General routing rules&lt;br /&gt;
!VERB&lt;br /&gt;
!Route&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|GET &lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]&lt;br /&gt;
|returns the list of resources&lt;br /&gt;
|-&lt;br /&gt;
|GET &lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id} &lt;br /&gt;
|Returns data for a specific resource&lt;br /&gt;
|-&lt;br /&gt;
|PATCH&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id} &lt;br /&gt;
|Where permitted, updates the SB resource with data passed in a JSON&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]&lt;br /&gt;
|Where permitted, inserts a new resource into SB&lt;br /&gt;
|}&lt;br /&gt;
Nested routes are available in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id}/[Sub-resource]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/19/cities which returns the list of municipalities in Italy (ID 19).&lt;br /&gt;
&lt;br /&gt;
Some APIs can utilize different search parameters.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/19&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_cod=IT &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_description=ital (this performs a textual search; in this case it finds &amp;quot;Italy&amp;quot;, but partial descriptions can be used to return multiple results)&lt;br /&gt;
&lt;br /&gt;
All three requests return the same result: the first finds by ID, the second by code, and the third by description.&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
For APIs requesting table records, the standard format is JSON. &lt;br /&gt;
&lt;br /&gt;
Example of JSON returned by:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_description=it&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 19,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;IT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Italy&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 21,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;LT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Lithuania&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
APIs may also return errors. Generally, the error format is:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 13,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Not Found&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
For insertion/update APIs, a similar JSON will be returned:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578693,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== List of General Master Data APIs ===&lt;br /&gt;
[[EN/API/feedstocks type|Substrati/Feedstocks]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Cities|Comuni/Cities]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Paesi/Countries|Paesi/Countries]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Subjects|Soggetti/Subjects]] (Natural persons with VAT number or Companies)&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Measurement type|Measurement unit groups and types]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Determinands|Determinants]] (Master data of parameters common to all analyses)&lt;br /&gt;
&lt;br /&gt;
[[EN/Api/AnalysisType|Analysis types]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following APIs have restricted access for entities or companies generating data for multiple plants (e.g., Analysis Laboratories):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[EN/API/PlantsList|Plant List]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following APIs require the plant identification key (X-API-TOKEN) and will return results related to that specific plant:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[EN/Api/Plant|Plant Data / Owning Company / Partners]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Warehouse|Warehouse]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/SuppliersContracts|Supply Contracts]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Analysis|Analysis]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/ControlPointsAndMeasurement|Control Points and Measurements]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API&amp;diff=257</id>
		<title>EN/API</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API&amp;diff=257"/>
		<updated>2026-05-07T09:34:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Smartbiogas (SB) provides an API system that can be used to:&lt;br /&gt;
&lt;br /&gt;
# Integrate your own system to read data from SB master records:&lt;br /&gt;
## Feedstocks&lt;br /&gt;
## European Countries and Cities used in our records&lt;br /&gt;
## Subjects&lt;br /&gt;
## Units of measurement&lt;br /&gt;
## Analysis types and parameters&lt;br /&gt;
# Automate the entry of warehouse loads and unloads, or sensor measurements&lt;br /&gt;
# Upload analysis results&lt;br /&gt;
&lt;br /&gt;
Access is not public, both for data security and privacy reasons, and to verify the data source.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It is necessary to request the SB team to &amp;quot;whitelist&amp;quot; the public IP address(es) from which the requests will originate. By default, any request will result in an &amp;quot;unauthorized IP&amp;quot; error.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main route for SB API access is (currently version 1):&lt;br /&gt;
&lt;br /&gt;
https://smartbiogas.it/api/v1&lt;br /&gt;
&lt;br /&gt;
Example to view the list of feedstocks:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/feedstocks_type&lt;br /&gt;
&lt;br /&gt;
In addition to IP whitelisting, for certain resources linked to a specific plant (e.g., Warehouses and warehouse movements), a 128-character key is required. This provides an additional layer of security and uniquely identifies the plant you are working on.&lt;br /&gt;
&lt;br /&gt;
This key must be presented in the request **HEADER** as shown in the example:&lt;br /&gt;
&lt;br /&gt;
X-API-TOKEN: FpEycf3HmcML6Hv4qsjZBXroeWoKGyHyTMZKRO1cekFQkCADoScp5RYXjtrlQvoD5BJhVepaRjruzgux4yfVzq3pBOVoHxybA2Jc1Iu0oyBHMdRiJcjFigLtOtRUCRd1&lt;br /&gt;
&lt;br /&gt;
Each route follows standard REST conventions, using the verbs GET, POST, and PATCH.&lt;br /&gt;
&lt;br /&gt;
In general, the routing rules are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+General routing rules&lt;br /&gt;
!VERB&lt;br /&gt;
!Route&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|GET &lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]&lt;br /&gt;
|returns the list of resources&lt;br /&gt;
|-&lt;br /&gt;
|GET &lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id} &lt;br /&gt;
|Returns data for a specific resource&lt;br /&gt;
|-&lt;br /&gt;
|PATCH&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id} &lt;br /&gt;
|Where permitted, updates the SB resource with data passed in a JSON&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]&lt;br /&gt;
|Where permitted, inserts a new resource into SB&lt;br /&gt;
|}&lt;br /&gt;
Nested routes are available in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id}/[Sub-resource]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/19/cities which returns the list of municipalities in Italy (ID 19).&lt;br /&gt;
&lt;br /&gt;
Some APIs can utilize different search parameters.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/19&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_cod=IT &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_description=ital (this performs a textual search; in this case it finds &amp;quot;Italy&amp;quot;, but partial descriptions can be used to return multiple results)&lt;br /&gt;
&lt;br /&gt;
All three requests return the same result: the first finds by ID, the second by code, and the third by description.&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
For APIs requesting table records, the standard format is JSON. &lt;br /&gt;
&lt;br /&gt;
Example of JSON returned by:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_description=it&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 19,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;IT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Italy&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 21,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;LT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Lithuania&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
APIs may also return errors. Generally, the error format is:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 13,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Not Found&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
For insertion/update APIs, a similar JSON will be returned:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578693,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== List of General Master Data APIs ===&lt;br /&gt;
[[EN/API/feedstocks type|Substrati/Feedstocks]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Cities|Comuni/Cities]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Paesi/Countries|Paesi/Countries]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Soggetti|Soggetti/Subjects]] (Natural persons with VAT number or Companies)&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Tipi Misure|Measurement unit groups and types]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Determinands|Determinants]] (Master data of parameters common to all analyses)&lt;br /&gt;
&lt;br /&gt;
[[EN/Api/Tipi di analisi|Analysis types]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following APIs have restricted access for entities or companies generating data for multiple plants (e.g., Analysis Laboratories):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Elenco Impianti|Plant List]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following APIs require the plant identification key (X-API-TOKEN) and will return results related to that specific plant:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[EN/Api/Impianto|Plant Data / Owning Company / Partners]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Magazzino|Warehouse]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/ContrattiDiFornitura|Supply Contracts]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Analisi|Analysis]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/PuntidiControlloMisure|Control Points and Measurements]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Subjects&amp;diff=256</id>
		<title>EN/API/Subjects</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Subjects&amp;diff=256"/>
		<updated>2026-05-07T09:34:12Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of subjects linked to SB&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/subjects &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: subjectId,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Company Name or Full Name&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;VAT number&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1979,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Cma Srl&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;04199860232&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single subject details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects/{subjectId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects/595&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by VAT number:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_vat={full&amp;lt;/nowiki&amp;gt; VAT number}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects?f_vat=10178660014&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/subjects?f_soggetto_name={string&amp;lt;/nowiki&amp;gt; to search in the name} &lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/subjects?f_soggetto_name=CMA&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above with 0 or more records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Countries&amp;diff=255</id>
		<title>EN/API/Countries</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Countries&amp;diff=255"/>
		<updated>2026-05-07T09:33:58Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of countries used in SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: countryId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;2-digit country identification code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;description&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 2,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;AL&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Albania&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single country details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/{country_id}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries/19&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/countries?f_cod={country&amp;lt;/nowiki&amp;gt; code}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries?f_cod=IT&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/countries?f_description={string&amp;lt;/nowiki&amp;gt; to search in the description (multilingual)}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries?f_description=fra&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above with 0 or more records&lt;br /&gt;
&lt;br /&gt;
=== Cities related to a country ===&lt;br /&gt;
This route also allows searching for cities filtered by the current Country.&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/countries/{countryId}/cities&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By defining the country in {countryId}, you can obtain a list or search for cities.&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries/19/cities (list of Italian cities)&lt;br /&gt;
&lt;br /&gt;
Result:&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_cities_id&amp;quot;: cityId,&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: countryId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;City code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_country_cod&amp;quot;: &amp;quot;country code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;City name&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_validity_zone&amp;quot;: 1 - North, 2- Central, 3-South, 4-Islands,&lt;br /&gt;
 		&amp;quot;f_reg_description&amp;quot;: &amp;quot;region description&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_prov_description&amp;quot;: &amp;quot;province description&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_cod_catasto&amp;quot;: &amp;quot;Cadastral code of the city&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_cities_id&amp;quot;: 60000,&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 19,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;ITC44014047&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_country_cod&amp;quot;: &amp;quot;IT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Pedesina&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_validity_zone&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;f_reg_description&amp;quot;: &amp;quot;Lombardia&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_prov_description&amp;quot;: &amp;quot;Sondrio&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_cod_catasto&amp;quot;: &amp;quot;G410&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by cityId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/countries/{countryId}/cities/{cityId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries/19/cities/67664&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/countries/{countryId}/cities?f_description={text&amp;lt;/nowiki&amp;gt; to search}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries/19/cities?f_description=piner&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by code&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/countries/{countryId}/cities?f_cod={code}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/countries/19/cities?f_cod=ITC11001234&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API&amp;diff=254</id>
		<title>EN/API</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API&amp;diff=254"/>
		<updated>2026-05-07T09:33:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Smartbiogas (SB) provides an API system that can be used to:&lt;br /&gt;
&lt;br /&gt;
# Integrate your own system to read data from SB master records:&lt;br /&gt;
## Feedstocks&lt;br /&gt;
## European Countries and Cities used in our records&lt;br /&gt;
## Subjects&lt;br /&gt;
## Units of measurement&lt;br /&gt;
## Analysis types and parameters&lt;br /&gt;
# Automate the entry of warehouse loads and unloads, or sensor measurements&lt;br /&gt;
# Upload analysis results&lt;br /&gt;
&lt;br /&gt;
Access is not public, both for data security and privacy reasons, and to verify the data source.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;It is necessary to request the SB team to &amp;quot;whitelist&amp;quot; the public IP address(es) from which the requests will originate. By default, any request will result in an &amp;quot;unauthorized IP&amp;quot; error.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The main route for SB API access is (currently version 1):&lt;br /&gt;
&lt;br /&gt;
https://smartbiogas.it/api/v1&lt;br /&gt;
&lt;br /&gt;
Example to view the list of feedstocks:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/feedstocks_type&lt;br /&gt;
&lt;br /&gt;
In addition to IP whitelisting, for certain resources linked to a specific plant (e.g., Warehouses and warehouse movements), a 128-character key is required. This provides an additional layer of security and uniquely identifies the plant you are working on.&lt;br /&gt;
&lt;br /&gt;
This key must be presented in the request **HEADER** as shown in the example:&lt;br /&gt;
&lt;br /&gt;
X-API-TOKEN: FpEycf3HmcML6Hv4qsjZBXroeWoKGyHyTMZKRO1cekFQkCADoScp5RYXjtrlQvoD5BJhVepaRjruzgux4yfVzq3pBOVoHxybA2Jc1Iu0oyBHMdRiJcjFigLtOtRUCRd1&lt;br /&gt;
&lt;br /&gt;
Each route follows standard REST conventions, using the verbs GET, POST, and PATCH.&lt;br /&gt;
&lt;br /&gt;
In general, the routing rules are:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+General routing rules&lt;br /&gt;
!VERB&lt;br /&gt;
!Route&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|GET &lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]&lt;br /&gt;
|returns the list of resources&lt;br /&gt;
|-&lt;br /&gt;
|GET &lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id} &lt;br /&gt;
|Returns data for a specific resource&lt;br /&gt;
|-&lt;br /&gt;
|PATCH&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id} &lt;br /&gt;
|Where permitted, updates the SB resource with data passed in a JSON&lt;br /&gt;
|-&lt;br /&gt;
|POST&lt;br /&gt;
|&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]&lt;br /&gt;
|Where permitted, inserts a new resource into SB&lt;br /&gt;
|}&lt;br /&gt;
Nested routes are available in the following format:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/&amp;lt;/nowiki&amp;gt;[Resource]/{resource_id}/[Sub-resource]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/19/cities which returns the list of municipalities in Italy (ID 19).&lt;br /&gt;
&lt;br /&gt;
Some APIs can utilize different search parameters.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries/19&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_cod=IT &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_description=ital (this performs a textual search; in this case it finds &amp;quot;Italy&amp;quot;, but partial descriptions can be used to return multiple results)&lt;br /&gt;
&lt;br /&gt;
All three requests return the same result: the first finds by ID, the second by code, and the third by description.&lt;br /&gt;
&lt;br /&gt;
=== Results ===&lt;br /&gt;
For APIs requesting table records, the standard format is JSON. &lt;br /&gt;
&lt;br /&gt;
Example of JSON returned by:&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/countries?f_description=it&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 19,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;IT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Italy&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 21,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;LT&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_description&amp;quot;: &amp;quot;Lithuania&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
APIs may also return errors. Generally, the error format is:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 13,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Not Found&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
For insertion/update APIs, a similar JSON will be returned:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578693,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== List of General Master Data APIs ===&lt;br /&gt;
[[EN/API/feedstocks type|Substrati/Feedstocks]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Cities|Comuni/Cities]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Paesi/Countries|Paesi/Countries]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Soggetti|Soggetti/Subjects]] (Natural persons with VAT number or Companies)&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Tipi Misure|Measurement unit groups and types]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Determinandi|Determinants]] (Master data of parameters common to all analyses)&lt;br /&gt;
&lt;br /&gt;
[[EN/Api/Tipi di analisi|Analysis types]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following APIs have restricted access for entities or companies generating data for multiple plants (e.g., Analysis Laboratories):&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Elenco Impianti|Plant List]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The following APIs require the plant identification key (X-API-TOKEN) and will return results related to that specific plant:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[EN/Api/Impianto|Plant Data / Owning Company / Partners]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Magazzino|Warehouse]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/ContrattiDiFornitura|Supply Contracts]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/Analisi|Analysis]]&lt;br /&gt;
&lt;br /&gt;
[[EN/API/PuntidiControlloMisure|Control Points and Measurements]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/feedstocks_type&amp;diff=253</id>
		<title>EN/API/feedstocks type</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/feedstocks_type&amp;diff=253"/>
		<updated>2026-05-07T09:32:56Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of feedstocks used in SB&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
https://smartbiogas.it/api/v1/feedstocks_type&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;feedstock code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;italian desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;english desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;french desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;spanish desc\&amp;quot;}&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: 162,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;BT611GRC001&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Rotture di mais\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;maize gritz\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single feedstock details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type/{feedstock_type_id}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/feedstocks_type/6&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by code:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type?f_cod={feedstock&amp;lt;/nowiki&amp;gt; code}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/feedstocks_type?f_cod=RN002ASL&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search by description:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/feedstocks_type?f_json_description={string&amp;lt;/nowiki&amp;gt; to search in the description (multilingual)}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/feedstocks_type?f_json_description=maize&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above with 0 or more records&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/Api/Impianto&amp;diff=252</id>
		<title>EN/Api/Impianto</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/Api/Impianto&amp;diff=252"/>
		<updated>2026-05-07T09:32:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/Api/Impianto to EN/Api/Plant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EN/Api/Plant]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/Api/Plant&amp;diff=251</id>
		<title>EN/Api/Plant</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/Api/Plant&amp;diff=251"/>
		<updated>2026-05-07T09:32:23Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/Api/Impianto to EN/Api/Plant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plant Data&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/plant &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;plant_id&amp;quot;: &#039;&#039;plantId&#039;&#039; 79,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &#039;&#039;identification code&#039;&#039; &amp;quot;CN24&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_name&amp;quot;: &#039;&#039;Description&#039;&#039; &amp;quot;Mene&#039;&amp;quot;,&lt;br /&gt;
 	&amp;quot;eu_countries_id&amp;quot;: &#039;&#039;countryId&#039;&#039; 19,&lt;br /&gt;
 	&amp;quot;eu_cities_id&amp;quot;: &#039;&#039;cityId&#039;&#039; 65678,&lt;br /&gt;
 	&amp;quot;f_plant_address&amp;quot;: &#039;&#039;Address&#039;&#039; &amp;quot;Località Spessa Soprana 142\/A&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_plant_latlon&amp;quot;: &#039;&#039;LAT_LON&#039;&#039; &amp;quot;44.7183308223895_7.7189437817964&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_plant_power&amp;quot;: &#039;&#039;Plant power in kW&#039;&#039; 999,&lt;br /&gt;
 	&amp;quot;soggetto_proprietario&amp;quot;: &#039;&#039;single object of the sole plant owner&#039;&#039;&lt;br /&gt;
 	{ &lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: &#039;&#039;subjectId&#039;&#039; 77,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &#039;&#039;Company name&#039;&#039; &amp;quot;Menè Società  Cooperativa Agricola&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &#039;&#039;VAT number&#039;&#039; &amp;quot;03328400043&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetti_soci&amp;quot;: &#039;&#039;Array of connected partners/shareholders&#039;&#039; &lt;br /&gt;
 		[ &lt;br /&gt;
 			{&lt;br /&gt;
 				&amp;quot;soggetto_id&amp;quot;: &#039;&#039;partnerSubjectId&#039;&#039;,&lt;br /&gt;
 				&amp;quot;f_soggetto_name&amp;quot;: &#039;&#039;Partner company name&#039;&#039;,&lt;br /&gt;
 				&amp;quot;f_vat&amp;quot;: &#039;&#039;Partner VAT number&#039;&#039;&lt;br /&gt;
 			},&lt;br /&gt;
 			{&lt;br /&gt;
 				&amp;quot;soggetto_id&amp;quot;: 2095,&lt;br /&gt;
 				&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Massimino Soc. Semplice Agr.&amp;quot;,&lt;br /&gt;
 				&amp;quot;f_vat&amp;quot;: &amp;quot;00230660045&amp;quot;&lt;br /&gt;
 			},&lt;br /&gt;
 			...&lt;br /&gt;
 		]&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/Api/Plant&amp;diff=250</id>
		<title>EN/Api/Plant</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/Api/Plant&amp;diff=250"/>
		<updated>2026-05-07T09:32:08Z</updated>

		<summary type="html">&lt;p&gt;Admin: Created page with &amp;quot;◀ Back to API Menu  &amp;#039;&amp;#039;&amp;#039;Plant Data&amp;#039;&amp;#039;&amp;#039;  &amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt;   &amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt;   GET https://smartbiogas.it/api/v1/plant   Result: Json with an array of results  {  	&amp;quot;plant_id&amp;quot;: &amp;#039;&amp;#039;plantId&amp;#039;&amp;#039; 79,  	&amp;quot;f_cod&amp;quot;: &amp;#039;&amp;#039;identification code&amp;#039;&amp;#039; &amp;quot;CN24&amp;quot;,  	&amp;quot;plant_name&amp;quot;: &amp;#039;&amp;#039;Description&amp;#039;&amp;#039; &amp;quot;Mene&amp;#039;&amp;quot;,  	&amp;quot;eu_countries_id&amp;quot;: &amp;#039;&amp;#039;countryId&amp;#039;&amp;#039; 19,  	&amp;quot;eu_cities_id&amp;quot;: &amp;#039;&amp;#039;cityId&amp;#039;&amp;#039; 65678,  	&amp;quot;f_plant_ad...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plant Data&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/plant &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;plant_id&amp;quot;: &#039;&#039;plantId&#039;&#039; 79,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &#039;&#039;identification code&#039;&#039; &amp;quot;CN24&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_name&amp;quot;: &#039;&#039;Description&#039;&#039; &amp;quot;Mene&#039;&amp;quot;,&lt;br /&gt;
 	&amp;quot;eu_countries_id&amp;quot;: &#039;&#039;countryId&#039;&#039; 19,&lt;br /&gt;
 	&amp;quot;eu_cities_id&amp;quot;: &#039;&#039;cityId&#039;&#039; 65678,&lt;br /&gt;
 	&amp;quot;f_plant_address&amp;quot;: &#039;&#039;Address&#039;&#039; &amp;quot;Località Spessa Soprana 142\/A&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_plant_latlon&amp;quot;: &#039;&#039;LAT_LON&#039;&#039; &amp;quot;44.7183308223895_7.7189437817964&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_plant_power&amp;quot;: &#039;&#039;Plant power in kW&#039;&#039; 999,&lt;br /&gt;
 	&amp;quot;soggetto_proprietario&amp;quot;: &#039;&#039;single object of the sole plant owner&#039;&#039;&lt;br /&gt;
 	{ &lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: &#039;&#039;subjectId&#039;&#039; 77,&lt;br /&gt;
 		&amp;quot;f_soggetto_name&amp;quot;: &#039;&#039;Company name&#039;&#039; &amp;quot;Menè Società  Cooperativa Agricola&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &#039;&#039;VAT number&#039;&#039; &amp;quot;03328400043&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetti_soci&amp;quot;: &#039;&#039;Array of connected partners/shareholders&#039;&#039; &lt;br /&gt;
 		[ &lt;br /&gt;
 			{&lt;br /&gt;
 				&amp;quot;soggetto_id&amp;quot;: &#039;&#039;partnerSubjectId&#039;&#039;,&lt;br /&gt;
 				&amp;quot;f_soggetto_name&amp;quot;: &#039;&#039;Partner company name&#039;&#039;,&lt;br /&gt;
 				&amp;quot;f_vat&amp;quot;: &#039;&#039;Partner VAT number&#039;&#039;&lt;br /&gt;
 			},&lt;br /&gt;
 			{&lt;br /&gt;
 				&amp;quot;soggetto_id&amp;quot;: 2095,&lt;br /&gt;
 				&amp;quot;f_soggetto_name&amp;quot;: &amp;quot;Massimino Soc. Semplice Agr.&amp;quot;,&lt;br /&gt;
 				&amp;quot;f_vat&amp;quot;: &amp;quot;00230660045&amp;quot;&lt;br /&gt;
 			},&lt;br /&gt;
 			...&lt;br /&gt;
 		]&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Analisi&amp;diff=249</id>
		<title>EN/API/Analisi</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Analisi&amp;diff=249"/>
		<updated>2026-05-07T09:30:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/Analisi to EN/API/Analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EN/API/Analysis]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Analysis&amp;diff=248</id>
		<title>EN/API/Analysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Analysis&amp;diff=248"/>
		<updated>2026-05-07T09:30:59Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/Analisi to EN/API/Analysis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of analyses for the plant in question&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analisys_id&amp;quot;: analysisId,&lt;br /&gt;
 		&amp;quot;f_data&amp;quot;: &amp;quot;Date in ISO format YYYY-MM-DD&amp;quot;,&lt;br /&gt;
 		&amp;quot;analisys_type_id&amp;quot;: analysisTypeId,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: laboratoryId (from API/Subjects),&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Analysis type code&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analisys_id&amp;quot;: 2379,&lt;br /&gt;
 		&amp;quot;f_data&amp;quot;: &amp;quot;2017-08-10&amp;quot;,&lt;br /&gt;
 		&amp;quot;analisys_type_id&amp;quot;: 6,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;GA-BAS&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single analysis details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis/{analysisId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/analysis/1136&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details. There is also a field called &amp;quot;parametri&amp;quot; (parameters) containing an array of determinands.&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;analisys_id&amp;quot;: 1136,&lt;br /&gt;
 	&amp;quot;f_data&amp;quot;: &amp;quot;2013-11-25&amp;quot;,&lt;br /&gt;
 	&amp;quot;analisys_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;ID&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;F_Descrizione&amp;quot;: &amp;quot;Emissions - analysis according to Legislative Decree 152\/2006&amp;quot;,&lt;br /&gt;
 	&amp;quot;ID_Checklist&amp;quot;: 145,&lt;br /&gt;
 	&amp;quot;substrati_analisi_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;set_analisi_id&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &amp;quot;FU-BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_substrati_cod&amp;quot;: &amp;quot;FU&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_substrati_description&amp;quot;: &amp;quot;CHP Emissions&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_set_cod&amp;quot;: &amp;quot;BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_set_description&amp;quot;: &amp;quot;Basic analysis&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: analysisParameterId,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: INT determinandId,&lt;br /&gt;
 			&amp;quot;determinand_cod&amp;quot;: TEXT &amp;quot;determinand code&amp;quot;,&lt;br /&gt;
 			&amp;quot;determinand_description&amp;quot;: &amp;quot;determinand description&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_id&amp;quot;: sampleTypeId,&lt;br /&gt;
 			&amp;quot;sample_type_cod&amp;quot;: &amp;quot;sample type code&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_description&amp;quot;: &amp;quot;sample type description&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;text reporting the methods used for the analyses&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot;: DECIMAL value of the analysis,&lt;br /&gt;
 			&amp;quot;unita_misura_id&amp;quot;: measurementUnitId,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;measurement unit description&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;any notes regarding the reading&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 7,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: 5,&lt;br /&gt;
 			&amp;quot;determinand_cod&amp;quot;: &amp;quot;NOx_NO2&amp;quot;,&lt;br /&gt;
 			&amp;quot;determinand_description&amp;quot;: &amp;quot;Nitrogen oxides&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_id&amp;quot;: 2,&lt;br /&gt;
 			&amp;quot;sample_type_cod&amp;quot;: &amp;quot;as-is&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_description&amp;quot;: &amp;quot;on an as-is basis&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Standards UNI EN 14789:2017 – UNI EN 14792:2017 – UNI EN 15058:2017&amp;quot;,&lt;br /&gt;
 			&amp;quot;unita_misura_id&amp;quot;: 38,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot;: &amp;quot;481.0000&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;mg\/Nmc&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;test note&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 	]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Inserting an analysis ===&lt;br /&gt;
It is possible to submit an analysis by providing a JSON containing all the data via the following API.&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/analysis&lt;br /&gt;
&lt;br /&gt;
In the POST request, use this format along with the X-API-TOKEN key to identify the plant.&lt;br /&gt;
&lt;br /&gt;
In the f_document field, insert only a PDF document (encoded in BASE64).&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data&amp;quot;: DATE in ISO format,&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: analysisTypeId,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: subjectId (of the laboratory performing the analysis. Leave -1 if not specified),&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: feedstockId (only if the analysis is performed on a specific material, otherwise leave -1),&lt;br /&gt;
 	&amp;quot;f_code&amp;quot;: TEXT document code/number,&lt;br /&gt;
 	&amp;quot;f_document&amp;quot;: TEXT Document file encoded in BASE64,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot; :[&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: analysisParameterId,&lt;br /&gt;
 			&amp;quot;lca_unita_misura_id&amp;quot;: measurementUnitId,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot; : DECIMAL value of the measurement in the specified unit&lt;br /&gt;
 			&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 		&lt;br /&gt;
 	]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data&amp;quot;: &amp;quot;2026-01-31&amp;quot;,&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;f_code&amp;quot;:&amp;quot;38572.024&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_document&amp;quot;:&amp;quot;JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4....&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot; :[&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 7,&lt;br /&gt;
 			&amp;quot;lca_unita_misura_id&amp;quot;: 38,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot; : 0.23&lt;br /&gt;
 			&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 7,&lt;br /&gt;
 			&amp;quot;lca_unita_misura_id&amp;quot;: 38,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot; : 4.82&lt;br /&gt;
 			&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 	]&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Analysis&amp;diff=247</id>
		<title>EN/API/Analysis</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Analysis&amp;diff=247"/>
		<updated>2026-05-07T09:30:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: Created page with &amp;quot;◀ Back to API Menu  &amp;#039;&amp;#039;&amp;#039;List of analyses for the plant in question&amp;#039;&amp;#039;&amp;#039;  GET https://smartbiogas.it/api/v1/analysis  Result: Json with an array of results  [  	{  		&amp;quot;analisys_id&amp;quot;: analysisId,  		&amp;quot;f_data&amp;quot;: &amp;quot;Date in ISO format YYYY-MM-DD&amp;quot;,  		&amp;quot;analisys_type_id&amp;quot;: analysisTypeId,  		&amp;quot;soggetto_id&amp;quot;: laboratoryId (from API/Subjects),  		&amp;quot;substrati_id&amp;quot;: feedstockId,  		&amp;quot;f_cod&amp;quot;: &amp;quot;Analysis type code&amp;quot;  	},  	{  		&amp;quot;analisys_id&amp;quot;: 2379,  		&amp;quot;f_data&amp;quot;: &amp;quot;2017-08-10&amp;quot;,  		&amp;quot;analisy...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of analyses for the plant in question&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analisys_id&amp;quot;: analysisId,&lt;br /&gt;
 		&amp;quot;f_data&amp;quot;: &amp;quot;Date in ISO format YYYY-MM-DD&amp;quot;,&lt;br /&gt;
 		&amp;quot;analisys_type_id&amp;quot;: analysisTypeId,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: laboratoryId (from API/Subjects),&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;Analysis type code&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;analisys_id&amp;quot;: 2379,&lt;br /&gt;
 		&amp;quot;f_data&amp;quot;: &amp;quot;2017-08-10&amp;quot;,&lt;br /&gt;
 		&amp;quot;analisys_type_id&amp;quot;: 6,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_cod&amp;quot;: &amp;quot;GA-BAS&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single analysis details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/analysis/{analysisId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/analysis/1136&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details. There is also a field called &amp;quot;parametri&amp;quot; (parameters) containing an array of determinands.&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;analisys_id&amp;quot;: 1136,&lt;br /&gt;
 	&amp;quot;f_data&amp;quot;: &amp;quot;2013-11-25&amp;quot;,&lt;br /&gt;
 	&amp;quot;analisys_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;ID&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;F_Descrizione&amp;quot;: &amp;quot;Emissions - analysis according to Legislative Decree 152\/2006&amp;quot;,&lt;br /&gt;
 	&amp;quot;ID_Checklist&amp;quot;: 145,&lt;br /&gt;
 	&amp;quot;substrati_analisi_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;set_analisi_id&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;f_cod&amp;quot;: &amp;quot;FU-BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_substrati_cod&amp;quot;: &amp;quot;FU&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_substrati_description&amp;quot;: &amp;quot;CHP Emissions&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_set_cod&amp;quot;: &amp;quot;BAS&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_set_description&amp;quot;: &amp;quot;Basic analysis&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: analysisParameterId,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: INT determinandId,&lt;br /&gt;
 			&amp;quot;determinand_cod&amp;quot;: TEXT &amp;quot;determinand code&amp;quot;,&lt;br /&gt;
 			&amp;quot;determinand_description&amp;quot;: &amp;quot;determinand description&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_id&amp;quot;: sampleTypeId,&lt;br /&gt;
 			&amp;quot;sample_type_cod&amp;quot;: &amp;quot;sample type code&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_description&amp;quot;: &amp;quot;sample type description&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;text reporting the methods used for the analyses&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot;: DECIMAL value of the analysis,&lt;br /&gt;
 			&amp;quot;unita_misura_id&amp;quot;: measurementUnitId,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;measurement unit description&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;any notes regarding the reading&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 7,&lt;br /&gt;
 			&amp;quot;determinand_id&amp;quot;: 5,&lt;br /&gt;
 			&amp;quot;determinand_cod&amp;quot;: &amp;quot;NOx_NO2&amp;quot;,&lt;br /&gt;
 			&amp;quot;determinand_description&amp;quot;: &amp;quot;Nitrogen oxides&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_id&amp;quot;: 2,&lt;br /&gt;
 			&amp;quot;sample_type_cod&amp;quot;: &amp;quot;as-is&amp;quot;,&lt;br /&gt;
 			&amp;quot;sample_type_description&amp;quot;: &amp;quot;on an as-is basis&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_metodo&amp;quot;: &amp;quot;Standards UNI EN 14789:2017 – UNI EN 14792:2017 – UNI EN 15058:2017&amp;quot;,&lt;br /&gt;
 			&amp;quot;unita_misura_id&amp;quot;: 38,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot;: &amp;quot;481.0000&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_um&amp;quot;: &amp;quot;mg\/Nmc&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_note&amp;quot;: &amp;quot;test note&amp;quot;&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 	]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== Inserting an analysis ===&lt;br /&gt;
It is possible to submit an analysis by providing a JSON containing all the data via the following API.&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/analysis&lt;br /&gt;
&lt;br /&gt;
In the POST request, use this format along with the X-API-TOKEN key to identify the plant.&lt;br /&gt;
&lt;br /&gt;
In the f_document field, insert only a PDF document (encoded in BASE64).&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data&amp;quot;: DATE in ISO format,&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: analysisTypeId,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: subjectId (of the laboratory performing the analysis. Leave -1 if not specified),&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: feedstockId (only if the analysis is performed on a specific material, otherwise leave -1),&lt;br /&gt;
 	&amp;quot;f_code&amp;quot;: TEXT document code/number,&lt;br /&gt;
 	&amp;quot;f_document&amp;quot;: TEXT Document file encoded in BASE64,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot; :[&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: analysisParameterId,&lt;br /&gt;
 			&amp;quot;lca_unita_misura_id&amp;quot;: measurementUnitId,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot; : DECIMAL value of the measurement in the specified unit&lt;br /&gt;
 			&lt;br /&gt;
 		},&lt;br /&gt;
 		...&lt;br /&gt;
 		&lt;br /&gt;
 	]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_data&amp;quot;: &amp;quot;2026-01-31&amp;quot;,&lt;br /&gt;
 	&amp;quot;analysis_type_id&amp;quot;: 7,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;substrati_id&amp;quot;: -1,&lt;br /&gt;
 	&amp;quot;f_code&amp;quot;:&amp;quot;38572.024&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_document&amp;quot;:&amp;quot;JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PC9MZW5ndGggNiAwIFIvRmlsdGVyIC9GbGF0ZURlY29kZT4....&amp;quot;,&lt;br /&gt;
 	&amp;quot;parametri&amp;quot; :[&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 7,&lt;br /&gt;
 			&amp;quot;lca_unita_misura_id&amp;quot;: 38,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot; : 0.23&lt;br /&gt;
 			&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;analysis_parameter_id&amp;quot;: 7,&lt;br /&gt;
 			&amp;quot;lca_unita_misura_id&amp;quot;: 38,&lt;br /&gt;
 			&amp;quot;f_value&amp;quot; : 4.82&lt;br /&gt;
 			&lt;br /&gt;
 		}&lt;br /&gt;
 		&lt;br /&gt;
 	]&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/ContrattiDiFornitura&amp;diff=246</id>
		<title>EN/API/ContrattiDiFornitura</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/ContrattiDiFornitura&amp;diff=246"/>
		<updated>2026-05-07T09:29:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/ContrattiDiFornitura to EN/API/SuppliersContracts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EN/API/SuppliersContracts]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/SuppliersContracts&amp;diff=245</id>
		<title>EN/API/SuppliersContracts</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/SuppliersContracts&amp;diff=245"/>
		<updated>2026-05-07T09:29:45Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/ContrattiDiFornitura to EN/API/SuppliersContracts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of supply contracts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts &lt;br /&gt;
&lt;br /&gt;
Result: Json of the plant&#039;s supply contracts&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: supplyContractId,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: &amp;quot;Contract number or code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;Certificate number or code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_start&amp;quot;: &amp;quot;Contract start date in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_end&amp;quot;: &amp;quot;Contract end date in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: supplierSubjectId&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: 47,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_start&amp;quot;: &amp;quot;2025-05-12&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_end&amp;quot;: &amp;quot;2026-05-12&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1876&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search filtering by supplier&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts?soggetto_id={subjectId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/suppliercontracts?soggetto_id=1875&lt;br /&gt;
&lt;br /&gt;
Result: Same Json but with 0 or more contracts filtered by the supplier passed in the criteria&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contract details&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts/{supplyContractId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/suppliercontracts/47&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot;: 47,&lt;br /&gt;
 	&amp;quot;f_contract_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_certificate_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_date_start&amp;quot;: &amp;quot;2025-05-12&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_date_end&amp;quot;: &amp;quot;2026-05-12&amp;quot;,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 1876,&lt;br /&gt;
 	&amp;quot;feedstocks&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;substrati_id&amp;quot;: productId,&lt;br /&gt;
 			&amp;quot;f_substrati_description&amp;quot;: &amp;quot;Multilingual description of the product&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_substrati_qta&amp;quot;: quantity stipulated in the contract&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_substrati_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;:\&amp;quot;Mais pianta intera insilato\&amp;quot;,\&amp;quot;en\&amp;quot;:\&amp;quot;Maize whole plant silage\&amp;quot;,\&amp;quot;es\&amp;quot;:\&amp;quot;Maize whole plant silage\&amp;quot;,\&amp;quot;fr\&amp;quot;:\&amp;quot;Maïs plante entière ensilée\&amp;quot;}&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_substrati_qta&amp;quot;: 2500&lt;br /&gt;
 		},&lt;br /&gt;
 	],&lt;br /&gt;
 	...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/SuppliersContracts&amp;diff=244</id>
		<title>EN/API/SuppliersContracts</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/SuppliersContracts&amp;diff=244"/>
		<updated>2026-05-07T09:29:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: Created page with &amp;quot;◀ Back to API Menu  &amp;#039;&amp;#039;&amp;#039;List of supply contracts&amp;#039;&amp;#039;&amp;#039;  &amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt;  &amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt;   GET https://smartbiogas.it/api/v1/suppliercontracts   Result: Json of the plant&amp;#039;s supply contracts  [  	{  		&amp;quot;plant_suppliers_contracts_id&amp;quot;: supplyContractId,  		&amp;quot;f_contract_number&amp;quot;: &amp;quot;Contract number or code&amp;quot;,  		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;Certificate number or code&amp;quot;,  		&amp;quot;f...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of supply contracts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts &lt;br /&gt;
&lt;br /&gt;
Result: Json of the plant&#039;s supply contracts&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: supplyContractId,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: &amp;quot;Contract number or code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;Certificate number or code&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_start&amp;quot;: &amp;quot;Contract start date in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_end&amp;quot;: &amp;quot;Contract end date in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: supplierSubjectId&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: 47,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_certificate_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_start&amp;quot;: &amp;quot;2025-05-12&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_date_end&amp;quot;: &amp;quot;2026-05-12&amp;quot;,&lt;br /&gt;
 		&amp;quot;soggetto_id&amp;quot;: 1876&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search filtering by supplier&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts?soggetto_id={subjectId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/suppliercontracts?soggetto_id=1875&lt;br /&gt;
&lt;br /&gt;
Result: Same Json but with 0 or more contracts filtered by the supplier passed in the criteria&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Contract details&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/suppliercontracts/{supplyContractId}&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/suppliercontracts/47&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record and more details&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot;: 47,&lt;br /&gt;
 	&amp;quot;f_contract_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_certificate_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_date_start&amp;quot;: &amp;quot;2025-05-12&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_date_end&amp;quot;: &amp;quot;2026-05-12&amp;quot;,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 1876,&lt;br /&gt;
 	&amp;quot;feedstocks&amp;quot;: [&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;substrati_id&amp;quot;: productId,&lt;br /&gt;
 			&amp;quot;f_substrati_description&amp;quot;: &amp;quot;Multilingual description of the product&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_substrati_qta&amp;quot;: quantity stipulated in the contract&lt;br /&gt;
 		},&lt;br /&gt;
 		{&lt;br /&gt;
 			&amp;quot;substrati_id&amp;quot;: 6,&lt;br /&gt;
 			&amp;quot;f_substrati_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;:\&amp;quot;Mais pianta intera insilato\&amp;quot;,\&amp;quot;en\&amp;quot;:\&amp;quot;Maize whole plant silage\&amp;quot;,\&amp;quot;es\&amp;quot;:\&amp;quot;Maize whole plant silage\&amp;quot;,\&amp;quot;fr\&amp;quot;:\&amp;quot;Maïs plante entière ensilée\&amp;quot;}&amp;quot;,&lt;br /&gt;
 			&amp;quot;f_substrati_qta&amp;quot;: 2500&lt;br /&gt;
 		},&lt;br /&gt;
 	],&lt;br /&gt;
 	...&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=Talk:Substrati/Porosity&amp;diff=243</id>
		<title>Talk:Substrati/Porosity</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=Talk:Substrati/Porosity&amp;diff=243"/>
		<updated>2026-05-07T09:29:02Z</updated>

		<summary type="html">&lt;p&gt;Admin: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Magazzino&amp;diff=242</id>
		<title>EN/API/Magazzino</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Magazzino&amp;diff=242"/>
		<updated>2026-05-07T09:10:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/Magazzino to EN/API/Warehouse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EN/API/Warehouse]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=241</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=241"/>
		<updated>2026-05-07T09:10:25Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/Magazzino to EN/API/Warehouse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]]&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=240</id>
		<title>EN/API/Warehouse</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Warehouse&amp;diff=240"/>
		<updated>2026-05-07T09:10:13Z</updated>

		<summary type="html">&lt;p&gt;Admin: Created page with &amp;quot;◀ Back to API Menu  &amp;#039;&amp;#039;&amp;#039;List of warehouses (internal and external) of a plant&amp;#039;&amp;#039;&amp;#039;  &amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt;   &amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt;   In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).  For example: A plant might have 2 warehouses for Maize: - one internal for maize coming from t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;List of warehouses (internal and external) of a plant&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Authentication must be specified in the request header:&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;X-API-TOKEN: {128-character key provided for the specific plant}&amp;lt;/u&amp;gt; &lt;br /&gt;
&lt;br /&gt;
In Smartbiogas, the warehouse is divided into as many units as there are feedstocks (i.e., stored materials) and by origin (Internal or External).&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
A plant might have 2 warehouses for Maize:&lt;br /&gt;
- one internal for maize coming from the fields of the company owning the plant or its partners.&lt;br /&gt;
- one external for maize purchased from external entities.&lt;br /&gt;
&lt;br /&gt;
A plant may have only one (usually internal) if it does not purchase maize from third parties.&lt;br /&gt;
&lt;br /&gt;
This structure is repeated for each feedstock. For example, we might have 1 internal warehouse for slurry, one for manure, one for Maize, and perhaps one external for Wheat.&lt;br /&gt;
&lt;br /&gt;
Warehouse movements are then associated with a specific warehouse. This creates a logical container that groups all movements of a feedstock (internal or external). For each movement, data such as supplier, date/time, quantity, weighing code, vehicle license plate, etc., are saved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warehouse List&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
List of all warehouses for a plant.&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/warehouse &lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1 -&amp;gt; INTERNAL, 1 -&amp;gt; EXTERNAL,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: feedstockId,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Italian Desc\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;English Desc\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;French Desc\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;Spanish Desc\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Description of the location_id (Internal/External)&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 5332,&lt;br /&gt;
 		&amp;quot;location_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;substrati_id&amp;quot;: -10,&lt;br /&gt;
 		&amp;quot;f_json_description&amp;quot;: &amp;quot;{\&amp;quot;it\&amp;quot;: \&amp;quot;Digestato solido\&amp;quot;, \&amp;quot;en\&amp;quot;: \&amp;quot;Solid digestate\&amp;quot;, \&amp;quot;fr\&amp;quot;: \&amp;quot;\&amp;quot;, \&amp;quot;es\&amp;quot;: \&amp;quot;\&amp;quot;}&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_location_description&amp;quot;: &amp;quot;Internal&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Single warehouse details:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/5869&lt;br /&gt;
&lt;br /&gt;
Result: Same Json as above but with a single record  &lt;br /&gt;
&lt;br /&gt;
=== Warehouse movements ===&lt;br /&gt;
Once the warehouse is identified, you can manage movements using the following APIs:&lt;br /&gt;
&lt;br /&gt;
GET [https://smartbiogas.it/api/v1/warehouse/3857/movements]&lt;br /&gt;
&lt;br /&gt;
Result: Json with a list of movements&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;Quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]]&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 448825,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;-9.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-02-01 23:59:59&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 11&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Search single movement by movementId&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GET &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example: https://smartbiogas.it/api/v1/warehouse/3857/movements/350000&lt;br /&gt;
&lt;br /&gt;
Result: Json with movement details&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: movementId,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: warehouseId,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;quantity in tons&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;Date/time in ISO format&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;operator identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0 -&amp;gt; without disinfection / 1 -&amp;gt; with disinfection,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;price in euros per ton&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;trip distance in km&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;origin identifier&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: contractId (-1 if no contract),&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: Contract number/code (only if contractId &amp;lt;&amp;gt; -1),&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;Batch number associated with the movement&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;Weighing number&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;movement_id&amp;quot;: 350000,&lt;br /&gt;
 		&amp;quot;warehouse_id&amp;quot;: 3857,&lt;br /&gt;
 		&amp;quot;f_quantity&amp;quot;: &amp;quot;3500.000&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2013-01-01 00:00:00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 		&amp;quot;f_targa&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_trasportatore&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 		&amp;quot;f_price&amp;quot;: &amp;quot;0.00&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_distance&amp;quot;: &amp;quot;0&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_provenienza&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_suppliers_contracts_id&amp;quot;: -1,&lt;br /&gt;
 		&amp;quot;f_contract_number&amp;quot;: null,&lt;br /&gt;
 		&amp;quot;f_partita&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_ddt_number&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_num_pesata&amp;quot;: &amp;quot;&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_tipo_documento&amp;quot;: -1&lt;br /&gt;
 	}&lt;br /&gt;
 ]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Insert warehouse movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
POST https://smartbiogas.it/api/v1/warehouse/3857/movements&lt;br /&gt;
&lt;br /&gt;
The call must include the X-API-TOKEN authentication and a JSON formatted as follows:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: INT quantity in tons,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: DATETIME &amp;quot;date/time in ISO format&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: INT See [[EN/API/Warehouse Movement Types|Warehouse Movement Types]],&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: INT subjectId or -1 if supplier/recipient is missing (e.g., internal production or agricultural use),&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: TEXT &amp;quot;Vehicle license plate&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: TEXT &amp;quot;Operator identification&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: BIT 0 -&amp;gt; no disinfection, 1 -&amp;gt; disinfection performed,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : DECIMAL price per ton in euros,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : INT distance in KM,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : TEXT &amp;quot;Origin identifier&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : INT contractId (-1 if not present),&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : TEXT &amp;quot;Batch code linked to the movement&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: TEXT &amp;quot;Waybill (DDT) number&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: INT weighing number,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: -1 -&amp;gt; no document, 1 -&amp;gt; Waybill (DDT), 2 -&amp;gt; Immediate invoice, 3 -&amp;gt; other&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;f_quantity&amp;quot;: 101,&lt;br /&gt;
 	&amp;quot;f_movement_datetime&amp;quot;: &amp;quot;2027-01-01 02:58:59&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_movement_type&amp;quot;: 1,&lt;br /&gt;
 	&amp;quot;soggetto_id&amp;quot;: 2278,&lt;br /&gt;
 	&amp;quot;f_targa&amp;quot;: &amp;quot;ZZ 999 YY&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_trasportatore&amp;quot;: &amp;quot;Mario Rossi&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_disinfezione&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;f_price&amp;quot; : 0.23,&lt;br /&gt;
 	&amp;quot;f_distance&amp;quot; : 25,&lt;br /&gt;
 	&amp;quot;f_provenienza&amp;quot; : &amp;quot;North Field&amp;quot;,&lt;br /&gt;
 	&amp;quot;plant_suppliers_contracts_id&amp;quot; : -1,&lt;br /&gt;
 	&amp;quot;f_partita&amp;quot; : &amp;quot;&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_ddt_number&amp;quot;: &amp;quot;2027/001&amp;quot;,&lt;br /&gt;
 	&amp;quot;f_num_pesata&amp;quot;: 123456,&lt;br /&gt;
 	&amp;quot;f_tipo_documento&amp;quot;: 1&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Update data of a single movement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
PATCH &amp;lt;nowiki&amp;gt;https://smartbiogas.it/api/v1/warehouse/{warehouseId}/movements/{movementId}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same JSON used for insertion must be passed; the system will update the data instead of adding a new movement.&lt;br /&gt;
&lt;br /&gt;
Since the movement is linked to a specific warehouse (identified by warehouseId), the feedstock type, warehouse location (internal/external), and the plant itself cannot be changed via this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Result of insertion and update: Json with status information:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: see [[EN/API/API Error Codes|API Error Codes]],&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: movementId (for insertion, returns the new ID; for updates, returns the ID target of the operation),&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Message explaining the outcome or error&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 0,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578898,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Movement inserted correctly&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 10,&lt;br /&gt;
 	&amp;quot;movement_id&amp;quot;: 4578694,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Duplicate detected&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
 In this case, an attempt was made to insert the same movement twice.&lt;br /&gt;
 A movement is unique based on these keys:&lt;br /&gt;
 - warehouse_id (which identifies the plant, feedstock, and Internal/External status)&lt;br /&gt;
 - Date/time (to the second)&lt;br /&gt;
 - Movement Type&lt;br /&gt;
 &lt;br /&gt;
 If the system detects an existing record with these matching conditions, it returns error 10.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
 	&amp;quot;error_code&amp;quot;: 11,&lt;br /&gt;
 	&amp;quot;message&amp;quot;: &amp;quot;Date not valid: yyyy&amp;quot;&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/PlantsList&amp;diff=239</id>
		<title>EN/API/PlantsList</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/PlantsList&amp;diff=239"/>
		<updated>2026-05-07T09:08:53Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[EN/API|◀ Back to API Menu]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plant list&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;This API is restricted, and a request must be made to gain access. It is intended for data providers managing multiple plants, such as analytical laboratories.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/plants&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_cod&amp;quot;: CHAR(4) &amp;quot;Plant code&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_name&amp;quot;: TEXT &amp;quot;Plant description&amp;quot;,&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: countryId,&lt;br /&gt;
 		&amp;quot;eu_cities_id&amp;quot;: cityId,&lt;br /&gt;
 		&amp;quot;f_plant_address&amp;quot;: TEXT &amp;quot;Physical address&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_api_token&amp;quot;: TEXT &amp;quot;API access token&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_regione_sociale&amp;quot;: TEXT &amp;quot;Company name of the plant owner&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: TEXT &amp;quot;VAT number&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_cod&amp;quot;: &amp;quot;XX01&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_name&amp;quot;: &amp;quot;Test Plant&amp;quot;,&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 19,&lt;br /&gt;
 		&amp;quot;eu_cities_id&amp;quot;: 63804,&lt;br /&gt;
 		&amp;quot;f_plant_address&amp;quot;: &amp;quot;Via roma 1, 10100 torino&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_api_token&amp;quot;: &amp;quot;sdunai3ughncfi7tb3....&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_regione_sociale&amp;quot;: &amp;quot;Consorzio Monviso Energia&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;10178660014&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/Elenco_Impianti&amp;diff=238</id>
		<title>EN/API/Elenco Impianti</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/Elenco_Impianti&amp;diff=238"/>
		<updated>2026-05-07T09:08:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/Elenco Impianti to EN/API/PlantsList&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EN/API/PlantsList]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.monvisoenergia.it/index.php?title=EN/API/PlantsList&amp;diff=237</id>
		<title>EN/API/PlantsList</title>
		<link rel="alternate" type="text/html" href="https://wiki.monvisoenergia.it/index.php?title=EN/API/PlantsList&amp;diff=237"/>
		<updated>2026-05-07T09:08:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: Admin moved page EN/API/Elenco Impianti to EN/API/PlantsList&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://wiki.monvisoenergia.it/index.php?title=EN/API ◀ Back to API Menu]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Plant list&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;This API is restricted, and a request must be made to gain access. It is intended for data providers managing multiple plants, such as analytical laboratories.&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GET https://smartbiogas.it/api/v1/plants&lt;br /&gt;
&lt;br /&gt;
Result: Json with an array of results&lt;br /&gt;
 [&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_cod&amp;quot;: CHAR(4) &amp;quot;Plant code&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_name&amp;quot;: TEXT &amp;quot;Plant description&amp;quot;,&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: countryId,&lt;br /&gt;
 		&amp;quot;eu_cities_id&amp;quot;: cityId,&lt;br /&gt;
 		&amp;quot;f_plant_address&amp;quot;: TEXT &amp;quot;Physical address&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_api_token&amp;quot;: TEXT &amp;quot;API access token&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_regione_sociale&amp;quot;: TEXT &amp;quot;Company name of the plant owner&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: TEXT &amp;quot;VAT number&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	{&lt;br /&gt;
 		&amp;quot;plant_cod&amp;quot;: &amp;quot;XX01&amp;quot;,&lt;br /&gt;
 		&amp;quot;plant_name&amp;quot;: &amp;quot;Test Plant&amp;quot;,&lt;br /&gt;
 		&amp;quot;eu_countries_id&amp;quot;: 19,&lt;br /&gt;
 		&amp;quot;eu_cities_id&amp;quot;: 63804,&lt;br /&gt;
 		&amp;quot;f_plant_address&amp;quot;: &amp;quot;Via roma 1, 10100 torino&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_api_token&amp;quot;: &amp;quot;sdunai3ughncfi7tb3....&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_regione_sociale&amp;quot;: &amp;quot;Consorzio Monviso Energia&amp;quot;,&lt;br /&gt;
 		&amp;quot;f_vat&amp;quot;: &amp;quot;10178660014&amp;quot;&lt;br /&gt;
 	},&lt;br /&gt;
 	...&lt;br /&gt;
 ]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>