MENU navbar-image

Introduction

InCheck API for Azure Importers

External API for Approved Azure Importers to integrate with the ZDHC Sandbox platform for chemical inventory reporting.

ID Format

ZDHC Sandbox uses a structured ID format: {prefix}-XXXXXXX-Z

Prefix Entity Type Example
01 Organisation 01-XXXXXXX-Z
20 Product 20-XXXXXXX-Z
40 InCheck Report 40-XXXXXXX-Z

Error Model

All non-2xx responses use a consistent error structure:

{
    "error": {
        "code": "string",
        "message": "string",
        "details": {}
    }
}

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

Retrieve a token by calling the /auth/login endpoint.

Azure/V1

Certification-Results

Certification Results Reference Values

requires authentication

Static list from ProductCertificationStatusEnum (paginated). Ids are stable via azureApiId().

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/certification-results?page=1&per_page=4" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/certification-results"
);

const params = {
    "page": "1",
    "per_page": "4",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "ResultName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "ResultName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/certification-results

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 4

Certification-Standards

MRSL Certification Standards Index

requires authentication

List all MRSL standards (mrsl_standards).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/certification-standards?page=1&per_page=5&filter%5Bupdated_at%5D=%3C%3D+2026-08-11+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/certification-standards"
);

const params = {
    "page": "1",
    "per_page": "5",
    "filter[updated_at]": "<= 2026-08-11 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "CertificationName": "Brachi Testing Services",
            "CertificationEntity": null,
            "CreateDate": "2026-07-20 20:52:40",
            "LastUpdateDate": "2026-07-31 11:06:32"
        },
        {
            "Id": 1,
            "CertificationName": "Brachi Testing Services",
            "CertificationEntity": null,
            "CreateDate": "2026-07-20 20:52:40",
            "LastUpdateDate": "2026-07-31 11:06:32"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/certification-standards

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 5

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-08-11 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Chemical-Count-Bracket

Chemical Count Brackets Index

requires authentication

No model/data source in current system. Returns empty collection so route is callable.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/chemical-count-bracket?page=1&per_page=8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/chemical-count-bracket"
);

const params = {
    "page": "1",
    "per_page": "8",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "CountBracketName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "CountBracketName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/chemical-count-bracket

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 8

Chemical-Weight-Bracket

Chemical Weight Brackets Index

requires authentication

No model/data source in current system. Returns empty collection so route is callable.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/chemical-weight-bracket?page=1&per_page=9" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/chemical-weight-bracket"
);

const params = {
    "page": "1",
    "per_page": "9",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "ChemicalWeightBracketName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "ChemicalWeightBracketName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/chemical-weight-bracket

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 9

Connection-History

Connection History Index

requires authentication

List all organisation connection history.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/connection-history?page=1&per_page=13&filter%5Bupdated_at%5D=%3E%3D+2026-09-04+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/connection-history"
);

const params = {
    "page": "1",
    "per_page": "13",
    "filter[updated_at]": ">= 2026-09-04 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "ConnectedFromId": 16683,
            "ConnectedToId": 15134,
            "Status": "active",
            "Published": null,
            "StartDate": "2021-01-15 00:00:00",
            "EndDate": null,
            "LastUpdateDate": "2021-01-15 00:00:00"
        },
        {
            "id": 1,
            "ConnectedFromId": 16683,
            "ConnectedToId": 15134,
            "Status": "active",
            "Published": null,
            "StartDate": "2021-01-15 00:00:00",
            "EndDate": null,
            "LastUpdateDate": "2021-01-15 00:00:00"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/connection-history

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 13

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: >= 2026-09-04 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Connections

Connections Index

requires authentication

List all organisation connections (sending ↔ receiving organisations).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/connections?page=1&per_page=10&filter%5Bupdated_at%5D=%3C+2026-08-23+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/connections"
);

const params = {
    "page": "1",
    "per_page": "10",
    "filter[updated_at]": "< 2026-08-23 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ConnectedFromId": 16683,
            "ConnectedToId": 15134
        },
        {
            "Id": 1,
            "ConnectedFromId": 16683,
            "ConnectedToId": 15134
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/connections

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 10

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-23 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

CTZ-Levels

CTZ Levels Index

requires authentication

List all CTZ levels.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ctz-levels?page=1&per_page=4&filter%5Bupdated_at%5D=%3C+2026-08-08+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ctz-levels"
);

const params = {
    "page": "1",
    "per_page": "4",
    "filter[updated_at]": "< 2026-08-08 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "LevelName": "Foundational",
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        },
        {
            "Id": 1,
            "LevelName": "Foundational",
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/ctz-levels

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 4

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-08 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Discharge-Type

Discharge Types Index

requires authentication

Azure legacy route — Guideline API discharge types synced to {@see SupplierAttribute} group {@code discharge_type} via {@code app:guideline-api-sync}. {@code Id} = Guideline {@code external_id} (same id space as {@code DischargeTypeId} on waste-water-reports).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/discharge-type?page=1&per_page=17" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/discharge-type"
);

const params = {
    "page": "1",
    "per_page": "17",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "DischargeName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "DischargeName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/discharge-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 17

Disposal-Pathways

Disposal Pathways Index

requires authentication

Azure legacy route — Guideline API disposal pathways synced to {@see SupplierAttribute} group {@code disposal_pathway} via {@code app:guideline-api-sync}.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/disposal-pathways?page=1&per_page=14" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/disposal-pathways"
);

const params = {
    "page": "1",
    "per_page": "14",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "PathwayName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "PathwayName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/disposal-pathways

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 14

Evaluation-Level

Evaluation Levels Index

requires authentication

Azure legacy route — exports Guideline API {@code performancelevels} cached in {@see WastewaterLevel} (Foundational, Progressive, Aspirational).

Not MRSL {@see \App\Models\Chemical\ConformanceLevel} (Level 1/2/3) — see {@see AzureMsrlLevelsController}. Rows are created when wastewater test results are imported from the Guideline API ({@see \App\Models\Wastewater\WastewaterTestResult::fromSubstanceByFacilityResponse}); there is no standalone performance-level sync in {@code app:guideline-api-sync}.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/evaluation-level?page=1&per_page=17" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/evaluation-level"
);

const params = {
    "page": "1",
    "per_page": "17",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 3,
            "EvaluationName": "Aspirational",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 3,
            "EvaluationName": "Aspirational",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/evaluation-level

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 17

Facility-Type

Facility Type Index

requires authentication

Guideline facility type reference catalogue — Guideline API {@code facility_type} synced to {@see SupplierAttribute} group {@code facility_type} via {@code app:guideline-api-sync}. Same id space as {@code FacilityTypeIds} on {@see \App\Http\Resources\External\Azure\V1\AzureWasteWaterReportsListResource}. Not {@see AzureSupplierTypeController} ({@code supplier_facility_types} org profile).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/facility-type?page=1&per_page=9" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/facility-type"
);

const params = {
    "page": "1",
    "per_page": "9",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "FacilityTypeName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "FacilityTypeName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/facility-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 9

Guidelines

Guidelines Index

requires authentication

Azure legacy route — Guideline API versions synced to {@see SupplierAttribute} group {@code guideline_version} via {@code app:guideline-api-sync}.

{@see \App\Models\Wastewater\WastewaterReportProfile::$version_id} stores the Guideline version id ({@code external_id} on these rows).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/guidelines?page=1&per_page=8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/guidelines"
);

const params = {
    "page": "1",
    "per_page": "8",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "GuidelineName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 1,
            "GuidelineName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/guidelines

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 8

InCheck-Inventory-CTZ-Certificates

InCheck Inventory CTZ Certificates Index

requires authentication

List inventory-item to CTZ certification links from publish MRSL snapshots ({@see \App\Models\Chemical\InventoryMrslState} → MRSL cert → CTZ cert).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-inventory-ctz-certificates?page=1&per_page=18&filter%5Bupdated_at%5D=%3C+2026-09-05+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-inventory-ctz-certificates"
);

const params = {
    "page": "1",
    "per_page": "18",
    "filter[updated_at]": "< 2026-09-05 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 873348,
            "ProductCTZCertificateId": null,
            "CreateDate": "2026-08-04 13:29:47",
            "LastUpdateDate": "2026-08-04 13:29:47"
        },
        {
            "Id": 873348,
            "ProductCTZCertificateId": null,
            "CreateDate": "2026-08-04 13:29:47",
            "LastUpdateDate": "2026-08-04 13:29:47"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/in-check-inventory-ctz-certificates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 18

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-09-05 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

InCheck-Inventory-MRSL-Certificates

InCheck Inventory MRSL Certificates Index

requires authentication

List inventory-line to MRSL certification links from publish snapshots ({@see \App\Models\Chemical\InventoryMrslState}).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-inventory-mrsl-certificates?page=1&per_page=6&filter%5Bupdated_at%5D=%3C+2026-08-10+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-inventory-mrsl-certificates"
);

const params = {
    "page": "1",
    "per_page": "6",
    "filter[updated_at]": "< 2026-08-10 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 873348,
            "ProductMRSLCertificateId": 205236,
            "CreateDate": "2026-08-04 13:29:47",
            "LastUpdateDate": "2026-08-04 13:29:47"
        },
        {
            "Id": 873348,
            "ProductMRSLCertificateId": 205236,
            "CreateDate": "2026-08-04 13:29:47",
            "LastUpdateDate": "2026-08-04 13:29:47"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/in-check-inventory-mrsl-certificates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 6

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-10 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

InCheck-Inventory-Product

InCheck Inventory Product Index

requires authentication

One row per {@see SupplierChemicalInventoryProduct} (inventory item / line). MRSL and CTZ max fields use the publish-time {@see \App\Models\Chemical\InventoryMrslState} snapshot when present.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-inventory-product?page=1&per_page=12&filter%5Bupdated_at%5D=%3D+2026-09-04+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-inventory-product"
);

const params = {
    "page": "1",
    "per_page": "12",
    "filter[updated_at]": "= 2026-09-04 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "InCheckReportId": 1,
            "ProductId": null,
            "InventoryProductId": 1,
            "ProductName": "[No product name] #584543",
            "FormulatorId": null,
            "FormulatorName": null,
            "Weight": 0,
            "MRSLMaxLevelId": null,
            "CTZMaxLevelId": null,
            "MRSLMaxVersionId": null,
            "CTZMaxVersionId": null,
            "AllCertificates": null,
            "CreateDate": "2026-08-04 13:27:12",
            "LastUpdateDate": "2026-08-04 13:27:12"
        },
        {
            "Id": 1,
            "InCheckReportId": 1,
            "ProductId": null,
            "InventoryProductId": 1,
            "ProductName": "[No product name] #584543",
            "FormulatorId": null,
            "FormulatorName": null,
            "Weight": 0,
            "MRSLMaxLevelId": null,
            "CTZMaxLevelId": null,
            "MRSLMaxVersionId": null,
            "CTZMaxVersionId": null,
            "AllCertificates": null,
            "CreateDate": "2026-08-04 13:27:12",
            "LastUpdateDate": "2026-08-04 13:27:12"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/in-check-inventory-product

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 12

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-09-04 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

InCheck-Report-Levels

InCheck Report Levels Index

requires authentication

List all InCheck report level reference values.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-report-levels?page=1&per_page=5&filter%5Bupdated_at%5D=%3C%3D+2026-09-03+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-report-levels"
);

const params = {
    "page": "1",
    "per_page": "5",
    "filter[updated_at]": "<= 2026-09-03 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "LevelName": "Level 0",
            "CreateDate": "2026-07-20 20:52:37",
            "LastUpdateDate": "2026-07-20 20:52:37"
        },
        {
            "Id": 1,
            "LevelName": "Level 0",
            "CreateDate": "2026-07-20 20:52:37",
            "LastUpdateDate": "2026-07-20 20:52:37"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/in-check-report-levels

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 5

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-09-03 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

InCheck-Report-Statuses

InCheck Inventory Status Reference Values

requires authentication

Static list of chemical inventory header statuses from SupplierChemicalInventoryStatusEnum (paginated).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-report-statuses?page=1&per_page=7" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-report-statuses"
);

const params = {
    "page": "1",
    "per_page": "7",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "StatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "StatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/in-check-report-statuses

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 7

InCheck-Reports

InCheck Reports Index

requires authentication

Azure legacy route name — exports one row per {@see SupplierChemicalInventory} (monthly inventory header).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-reports?page=1&per_page=18&filter%5Bupdated_at%5D=%3C+2026-08-17+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/in-check-reports"
);

const params = {
    "page": "1",
    "per_page": "18",
    "filter[updated_at]": "< 2026-08-17 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ReferenceId": "40-4VNNSCSETRST-Y",
            "SupplierId": 14419,
            "SolutionProviderId": 21092,
            "InCheckExternalId": null,
            "ReportingMonth": "2019-05-01 00:00:00",
            "InventoryType": "unspecified",
            "InCheckReportLevelId": 2,
            "CreateDate": "2026-08-04 13:27:12",
            "PublicationDate": "2020-08-06 00:00:00",
            "StatusId": 3,
            "ArchiveDate": null,
            "ArchiveReason": null,
            "LastUpdateDate": "2026-08-04 20:40:31"
        },
        {
            "Id": 1,
            "ReferenceId": "40-4VNNSCSETRST-Y",
            "SupplierId": 14419,
            "SolutionProviderId": 21092,
            "InCheckExternalId": null,
            "ReportingMonth": "2019-05-01 00:00:00",
            "InventoryType": "unspecified",
            "InCheckReportLevelId": 2,
            "CreateDate": "2026-08-04 13:27:12",
            "PublicationDate": "2020-08-06 00:00:00",
            "StatusId": 3,
            "ArchiveDate": null,
            "ArchiveReason": null,
            "LastUpdateDate": "2026-08-04 20:40:31"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/in-check-reports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 18

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-17 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Material-Category

Material Categories Index

requires authentication

List all material categories (supplier_attributes from group "Materials").

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/material-category?page=1&per_page=4" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/material-category"
);

const params = {
    "page": "1",
    "per_page": "4",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "MaterialCategoryName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 1,
            "MaterialCategoryName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/material-category

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 4

MSRL-Levels

MRSL Conformance Levels Index

requires authentication

List all MRSL conformance levels.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/msrl-levels?page=1&per_page=2&filter%5Bupdated_at%5D=%3D+2026-09-04+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/msrl-levels"
);

const params = {
    "page": "1",
    "per_page": "2",
    "filter[updated_at]": "= 2026-09-04 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "LevelName": "Level 1",
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        },
        {
            "Id": 1,
            "LevelName": "Level 1",
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/msrl-levels

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 2

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-09-04 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

MSRL-Versions

MRSL Version Strings (distinct)

requires authentication

Unique version values from mrsl_standards, including soft-deleted rows. Id is MIN(id) per version group.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/msrl-versions?page=1&per_page=8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/msrl-versions"
);

const params = {
    "page": "1",
    "per_page": "8",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "VersionName": "ZDHC MRSL v2.0",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "VersionName": "ZDHC MRSL v2.0",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/msrl-versions

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 8

Organisations

Organisations Index

requires authentication

List all organisations.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisations?page=1&per_page=4&filter%5Bupdated_at%5D=%3E%3D+2026-08-29+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisations"
);

const params = {
    "page": "1",
    "per_page": "4",
    "filter[updated_at]": ">= 2026-08-29 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ZDHCAid": "A356IB10",
            "SalesforceId": null,
            "SandboxID": "01-7TXNQR4L9PFH-I",
            "PdcId": null,
            "Name": "Ping Yang Pengye Shoes Com Ltd",
            "LegalName": "Ping Yang Pengye Shoes Com Ltd",
            "Address1": "浙江省温州市平阳县万全镇雪之梦(B3)18号厂房",
            "Address2": null,
            "CityName": "Wenzhou",
            "StateName": "Zhejiang",
            "LocationId": "CN",
            "ZipCode": "",
            "Latitude": null,
            "Longitude": null,
            "Phone": "",
            "Email": "pengye@126.com",
            "Website": null,
            "TaxId": null,
            "IPE": null,
            "RegistrationNumber": null,
            "OrganisationDescription": null,
            "ContactFirstName": "JIAN",
            "ContactLastName": "Le",
            "OrganisationTypeId": 2,
            "OsHubId": null,
            "HiggId": null,
            "CurrentAccountStatusId": null,
            "CreateDate": "2021-11-04 12:19:55",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-31 11:06:22"
        },
        {
            "Id": 1,
            "ZDHCAid": "A356IB10",
            "SalesforceId": null,
            "SandboxID": "01-7TXNQR4L9PFH-I",
            "PdcId": null,
            "Name": "Ping Yang Pengye Shoes Com Ltd",
            "LegalName": "Ping Yang Pengye Shoes Com Ltd",
            "Address1": "浙江省温州市平阳县万全镇雪之梦(B3)18号厂房",
            "Address2": null,
            "CityName": "Wenzhou",
            "StateName": "Zhejiang",
            "LocationId": "CN",
            "ZipCode": "",
            "Latitude": null,
            "Longitude": null,
            "Phone": "",
            "Email": "pengye@126.com",
            "Website": null,
            "TaxId": null,
            "IPE": null,
            "RegistrationNumber": null,
            "OrganisationDescription": null,
            "ContactFirstName": "JIAN",
            "ContactLastName": "Le",
            "OrganisationTypeId": 2,
            "OsHubId": null,
            "HiggId": null,
            "CurrentAccountStatusId": null,
            "CreateDate": "2021-11-04 12:19:55",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-31 11:06:22"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/organisations

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 4

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: >= 2026-08-29 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Organisation-Registration-Statuses

Organisation registration status history (ModelHistory rows with status in `changed_fields`).

requires authentication

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisation-registration-statuses?page=1&per_page=6&filter%5Bupdated_at%5D=%3D+2026-08-07+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisation-registration-statuses"
);

const params = {
    "page": "1",
    "per_page": "6",
    "filter[updated_at]": "= 2026-08-07 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "OrganisationId": 1,
            "RegistrationStatusId": null,
            "StartDate": "2026-07-20 20:52:33",
            "EndDate": null,
            "LastUpdateDate": "2026-07-20 20:52:33"
        },
        {
            "Id": 1,
            "OrganisationId": 1,
            "RegistrationStatusId": null,
            "StartDate": "2026-07-20 20:52:33",
            "EndDate": null,
            "LastUpdateDate": "2026-07-20 20:52:33"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/organisation-registration-statuses

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 6

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-08-07 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Organisation-Type

Organisation Types Index

requires authentication

List all organisation types.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisation-type?page=1&per_page=5&filter%5Bupdated_at%5D=%3C+2026-08-26+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisation-type"
);

const params = {
    "page": "1",
    "per_page": "5",
    "filter[updated_at]": "< 2026-08-26 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "TypeName": "ZDHC Internal",
            "CreateDate": "2026-07-20 20:52:31",
            "LastUpdateDate": "2026-08-06 14:18:55"
        },
        {
            "Id": 1,
            "TypeName": "ZDHC Internal",
            "CreateDate": "2026-07-20 20:52:31",
            "LastUpdateDate": "2026-08-06 14:18:55"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/organisation-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 5

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-26 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Organisation-Users

OrganisationUsers Index

requires authentication

List all organisation-users.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisation-users?page=1&per_page=16&filter%5Bupdated_at%5D=%3C+2026-08-19+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/organisation-users"
);

const params = {
    "page": "1",
    "per_page": "16",
    "filter[updated_at]": "< 2026-08-19 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "UserId": "02-SL37ZWSJEF99-G",
            "OrganisationId": "01-P2NEAP93YT3W-C",
            "RoleId": 4,
            "StartDate": "2026-07-20 20:52:18",
            "EndDate": null,
            "LastUpdateDate": "2026-07-20 20:52:18"
        },
        {
            "Id": 1,
            "UserId": "02-SL37ZWSJEF99-G",
            "OrganisationId": "01-P2NEAP93YT3W-C",
            "RoleId": 4,
            "StartDate": "2026-07-20 20:52:18",
            "EndDate": null,
            "LastUpdateDate": "2026-07-20 20:52:18"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/organisation-users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 16

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-19 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Parameters

Parameters Index

requires authentication

Azure legacy route — proxies Guideline API {@code GET /substances/all/v1} (flat substance catalogue). {@see GuidelineApi::retrieveParametersCatalog()}.

{@code ParameterCategoryId} = Guideline {@code parent_id} when set.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/parameters?page=1&per_page=2&filter%5Bupdated_at%5D=%3C%3D+2026-08-11+14%3A19%3A11" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/parameters"
);

const params = {
    "page": "1",
    "per_page": "2",
    "filter[updated_at]": "<= 2026-08-11 14:19:11",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "ParameterName": null,
            "ParameterCategoryId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "ParameterName": null,
            "ParameterCategoryId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/parameters

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 2

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-08-11 14:19:11

Processes

Processes Index

requires authentication

List all processes (supplier_attributes from group "Chemical Process").

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/processes?page=1&per_page=14" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/processes"
);

const params = {
    "page": "1",
    "per_page": "14",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProcessName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 1,
            "ProcessName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/processes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 14

Product-Category

Product Categories Index

requires authentication

List all product categories.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-category?page=1&per_page=18&filter%5Bupdated_at%5D=%3D+2026-08-16+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-category"
);

const params = {
    "page": "1",
    "per_page": "18",
    "filter[updated_at]": "= 2026-08-16 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductCategoryName": "Acids",
            "CreateDate": "2026-07-20 21:23:57",
            "LastUpdateDate": "2026-07-20 21:23:57"
        },
        {
            "Id": 1,
            "ProductCategoryName": "Acids",
            "CreateDate": "2026-07-20 21:23:57",
            "LastUpdateDate": "2026-07-20 21:23:57"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-category

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 18

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-08-16 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-CTZ-Certificates

Product CTZ Certifications Index

requires authentication

List all product CTZ certifications.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-ctz-certificates?page=1&per_page=13&filter%5Bupdated_at%5D=%3C%3D+2026-09-02+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-ctz-certificates"
);

const params = {
    "page": "1",
    "per_page": "13",
    "filter[updated_at]": "<= 2026-09-02 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductId": 185967,
            "CTZCertificationBodyId": 8888,
            "CTZCertificationResultId": 1,
            "VerificationStatusId": 2,
            "CTZLevelId": 1,
            "MSRLVersionId": null,
            "IssueDate": "2025-09-24 00:00:00",
            "ExpirationDate": "2099-12-31 00:00:00",
            "QualityCancelation": false,
            "QualityCancelationReason": null,
            "CreateDate": "2025-09-24 00:00:00",
            "LastUpdateDate": "2025-09-24 00:00:00"
        },
        {
            "Id": 1,
            "ProductId": 185967,
            "CTZCertificationBodyId": 8888,
            "CTZCertificationResultId": 1,
            "VerificationStatusId": 2,
            "CTZLevelId": 1,
            "MSRLVersionId": null,
            "IssueDate": "2025-09-24 00:00:00",
            "ExpirationDate": "2099-12-31 00:00:00",
            "QualityCancelation": false,
            "QualityCancelationReason": null,
            "CreateDate": "2025-09-24 00:00:00",
            "LastUpdateDate": "2025-09-24 00:00:00"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-ctz-certificates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 13

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-09-02 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-MRSL-Certificates

Product MRSL Certifications Index

requires authentication

List all product MRSL certifications.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-msrl-certificates?page=1&per_page=5&filter%5Bupdated_at%5D=%3C+2026-08-18+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-msrl-certificates"
);

const params = {
    "page": "1",
    "per_page": "5",
    "filter[updated_at]": "< 2026-08-18 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductId": 224419,
            "CertificationBodyId": 7982,
            "CertificationStandardId": 266,
            "CertificationResultId": 1,
            "VerificationStatusId": 2,
            "MSRLVersionId": "ZDHC MRSL v3.1",
            "MSRLLevelId": 3,
            "SDSid": 89559,
            "IssueDate": "2025-01-24 00:00:00",
            "ExpirationDate": "2026-01-31 00:00:00",
            "QualityCancelation": false,
            "QualityCancelationReason": null,
            "CreateDate": "2025-01-30 00:00:00",
            "LastUpdateDate": "2026-07-31 11:06:41"
        },
        {
            "Id": 1,
            "ProductId": 224419,
            "CertificationBodyId": 7982,
            "CertificationStandardId": 266,
            "CertificationResultId": 1,
            "VerificationStatusId": 2,
            "MSRLVersionId": "ZDHC MRSL v3.1",
            "MSRLLevelId": 3,
            "SDSid": 89559,
            "IssueDate": "2025-01-24 00:00:00",
            "ExpirationDate": "2026-01-31 00:00:00",
            "QualityCancelation": false,
            "QualityCancelationReason": null,
            "CreateDate": "2025-01-30 00:00:00",
            "LastUpdateDate": "2026-07-31 11:06:41"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-msrl-certificates

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 5

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-18 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-Publication-Status

Product Publication Status Reference Index

requires authentication

No model/data source in current system. Returns empty collection so route is callable.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-publication-status?page=1&per_page=20" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-publication-status"
);

const params = {
    "page": "1",
    "per_page": "20",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "PublicationStatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 1,
            "PublicationStatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-publication-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 20

Product-Publication-Status-Log

Product Publication Status Log Index

requires authentication

ModelHistory rows for {@see ChemicalProduct} where publication_status changed.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-publication-status-log?page=1&per_page=17&filter%5Bupdated_at%5D=%3C%3D+2026-08-30+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-publication-status-log"
);

const params = {
    "page": "1",
    "per_page": "17",
    "filter[updated_at]": "<= 2026-08-30 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductID": 1,
            "PublicationStatusID": null,
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        },
        {
            "Id": 1,
            "ProductID": 1,
            "PublicationStatusID": null,
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-publication-status-log

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 17

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-08-30 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-SDS

Product Safety Data Sheets Index

requires authentication

List all safety data sheets.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-sds?page=1&per_page=8&filter%5Bupdated_at%5D=%3D+2026-08-22+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-sds"
);

const params = {
    "page": "1",
    "per_page": "8",
    "filter[updated_at]": "= 2026-08-22 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductID": 173356,
            "SDSid": null,
            "IdentifiedUses": null,
            "FormulatorCountry": "",
            "SDSLanguage": "en",
            "Link": "http://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/product/173356/safety-data-sheet/1",
            "DocStatus": null,
            "UploadDate": "2019-03-02 00:00:00",
            "LastUpdateDate": "2026-07-30 10:32:46"
        },
        {
            "Id": 1,
            "ProductID": 173356,
            "SDSid": null,
            "IdentifiedUses": null,
            "FormulatorCountry": "",
            "SDSLanguage": "en",
            "Link": "http://staging-api.vm400.consulting1x1.info/api/organisation/1/chemical/product/173356/safety-data-sheet/1",
            "DocStatus": null,
            "UploadDate": "2019-03-02 00:00:00",
            "LastUpdateDate": "2026-07-30 10:32:46"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-sds

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 8

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-08-22 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-Status

Product Status Reference Values

requires authentication

Static list of product statuses from ProductStatusEnum (paginated).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-status?page=1&per_page=3" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-status"
);

const params = {
    "page": "1",
    "per_page": "3",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "ProductStatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "ProductStatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/product-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 3

Product-Status-Log

Product Status Log Index

requires authentication

ModelHistory rows for {@see ChemicalProduct} where status changed.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-status-log?page=1&per_page=4&filter%5Bupdated_at%5D=%3C%3D+2026-08-19+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-status-log"
);

const params = {
    "page": "1",
    "per_page": "4",
    "filter[updated_at]": "<= 2026-08-19 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductID": 1,
            "StatusID": null,
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        },
        {
            "Id": 1,
            "ProductID": 1,
            "StatusID": null,
            "CreateDate": "2026-07-20 20:52:33",
            "LastUpdateDate": "2026-07-20 20:52:33"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-status-log

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 4

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-08-19 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-Substrate

Product Substrates Index

requires authentication

List all product substrates.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-substrate?page=1&per_page=18&filter%5Bupdated_at%5D=%3E%3D+2026-08-10+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-substrate"
);

const params = {
    "page": "1",
    "per_page": "18",
    "filter[updated_at]": ">= 2026-08-10 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "SubstrateName": "Adhesives",
            "CreateDate": "2026-07-20 21:23:57",
            "LastUpdateDate": "2026-07-20 21:23:57"
        },
        {
            "Id": 1,
            "SubstrateName": "Adhesives",
            "CreateDate": "2026-07-20 21:23:57",
            "LastUpdateDate": "2026-07-20 21:23:57"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-substrate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 18

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: >= 2026-08-10 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Product-Type

Product Types Index

requires authentication

List all product use types.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-type?page=1&per_page=15&filter%5Bupdated_at%5D=%3C%3D+2026-08-13+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/product-type"
);

const params = {
    "page": "1",
    "per_page": "15",
    "filter[updated_at]": "<= 2026-08-13 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductTypeName": "Accelerator For Solvent Coating",
            "CreateDate": "2026-07-20 21:23:57",
            "LastUpdateDate": "2026-07-20 21:23:57"
        },
        {
            "Id": 1,
            "ProductTypeName": "Accelerator For Solvent Coating",
            "CreateDate": "2026-07-20 21:23:57",
            "LastUpdateDate": "2026-07-20 21:23:57"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/product-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 15

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-08-13 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Products-Category

Products–Categories Index

requires authentication

Lists product classifications from chemical_product_classifications. One row per classification entry.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products-category?page=1&per_page=15&filter%5Bupdated_at%5D=%3C+2026-08-09+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products-category"
);

const params = {
    "page": "1",
    "per_page": "15",
    "filter[updated_at]": "< 2026-08-09 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductID": 153989,
            "ProductCategoryId": 42,
            "CreateDate": "2026-07-21 08:09:34",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-21 08:09:34"
        },
        {
            "Id": 1,
            "ProductID": 153989,
            "ProductCategoryId": 42,
            "CreateDate": "2026-07-21 08:09:34",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-21 08:09:34"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/products-category

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 15

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-09 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Products

Chemical Products Index

requires authentication

List all chemical products.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products?page=1&per_page=7&filter%5Bupdated_at%5D=%3C+2026-08-08+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products"
);

const params = {
    "page": "1",
    "per_page": "7",
    "filter[updated_at]": "< 2026-08-08 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "id": 1,
            "ZDHCId": "P848YD34",
            "FormulatorProductCode": "20-T2D63QJ9N799-C",
            "ProductName": "AKRIL 2000",
            "ProductNameOthers": "P848YD34",
            "ProductDescription": "",
            "ProductChemcheckDescription": null,
            "FormulatorId": 16676,
            "CreateDate": "2025-01-22 00:00:00",
            "UploadDate": null,
            "LastUpdateDate": "2026-07-31 11:06:25"
        },
        {
            "id": 1,
            "ZDHCId": "P848YD34",
            "FormulatorProductCode": "20-T2D63QJ9N799-C",
            "ProductName": "AKRIL 2000",
            "ProductNameOthers": "P848YD34",
            "ProductDescription": "",
            "ProductChemcheckDescription": null,
            "FormulatorId": 16676,
            "CreateDate": "2025-01-22 00:00:00",
            "UploadDate": null,
            "LastUpdateDate": "2026-07-31 11:06:25"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/products

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 7

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-08 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Products-Substrate

Products–Substrates Index

requires authentication

Lists product classifications from chemical_product_classifications. One row per classification entry.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products-substrate?page=1&per_page=13&filter%5Bupdated_at%5D=%3E%3D+2026-08-09+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products-substrate"
);

const params = {
    "page": "1",
    "per_page": "13",
    "filter[updated_at]": ">= 2026-08-09 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductID": 153989,
            "SubstrateId": 3,
            "CreateDate": "2026-07-21 08:09:34",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-21 08:09:34"
        },
        {
            "Id": 1,
            "ProductID": 153989,
            "SubstrateId": 3,
            "CreateDate": "2026-07-21 08:09:34",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-21 08:09:34"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/products-substrate

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 13

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: >= 2026-08-09 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Products-Type

Products–Use Types Index

requires authentication

Lists product classifications from chemical_product_classifications. One row per classification entry.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products-type?page=1&per_page=5&filter%5Bupdated_at%5D=%3C%3D+2026-08-11+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/products-type"
);

const params = {
    "page": "1",
    "per_page": "5",
    "filter[updated_at]": "<= 2026-08-11 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "ProductID": 153989,
            "ProductTypeId": 74,
            "CreateDate": "2026-07-21 08:09:34",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-21 08:09:34"
        },
        {
            "Id": 1,
            "ProductID": 153989,
            "ProductTypeId": 74,
            "CreateDate": "2026-07-21 08:09:34",
            "DeleteDate": null,
            "LastUpdateDate": "2026-07-21 08:09:34"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/products-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 5

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: <= 2026-08-11 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Profile-Supplier-Chemicals

Profile Supplier Chemicals Index

requires authentication

List all profile–chemical-type links (pivot supplier_profile_attributes, Chemical Type group). ChemicalCountBracketId / ChemicalWeightBracketId have no source in current system.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-chemicals?page=1&per_page=15" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-chemicals"
);

const params = {
    "page": "1",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "OrganisationId": 20894,
            "ChemicalTypeId": null,
            "ChemicalCountBracketId": null,
            "ChemicalWeightBracketId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "OrganisationId": 20894,
            "ChemicalTypeId": null,
            "ChemicalCountBracketId": null,
            "ChemicalWeightBracketId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/profile-supplier-chemicals

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 15

Profile-Supplier-Material

Profile Supplier Materials Index

requires authentication

List all profile–material links (pivot supplier_profile_attributes, Materials group).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-material?page=1&per_page=6" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-material"
);

const params = {
    "page": "1",
    "per_page": "6",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "OrganisationId": 20894,
            "MaterialId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "OrganisationId": 20894,
            "MaterialId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/profile-supplier-material

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 6

Profile-Supplier-Processes

Profile Supplier Processes Index

requires authentication

List all profile–process links (pivot supplier_profile_attributes, Chemical Process group).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-processes?page=1&per_page=15" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-processes"
);

const params = {
    "page": "1",
    "per_page": "15",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "OrganisationId": 20894,
            "ProcessId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "OrganisationId": 20894,
            "ProcessId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/profile-supplier-processes

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 15

Profile-Supplier-Product-Category

Profile Supplier Product Categories Index

requires authentication

No model/data source in current system. Returns empty collection so route is callable.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-product-category?page=1&per_page=14" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-product-category"
);

const params = {
    "page": "1",
    "per_page": "14",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "OrganisationId": null,
            "ProductCategoryId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "OrganisationId": null,
            "ProductCategoryId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/profile-supplier-product-category

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 14

Profile-Supplier-Type

Profile Supplier Types Index

requires authentication

List all supplier profiles (organisation_id, facility_type_id = SupplierTypeId).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-type?page=1&per_page=19&filter%5Bupdated_at%5D=%3E%3D+2026-08-22+14%3A19%3A11&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/profile-supplier-type"
);

const params = {
    "page": "1",
    "per_page": "19",
    "filter[updated_at]": ">= 2026-08-22 14:19:11",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "OrganisationId": null,
            "SupplierTypeId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "OrganisationId": null,
            "SupplierTypeId": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/profile-supplier-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 19

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: >= 2026-08-22 14:19:11

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

SDS-Section

SDS Sections Index

requires authentication

No model/data source in current system. Returns empty collection so route is callable.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/sds-section?page=1&per_page=7" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/sds-section"
);

const params = {
    "page": "1",
    "per_page": "7",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "SDSID": null,
            "IngredientName": null,
            "CAS": null,
            "Min": null,
            "Max": null,
            "Concentration": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "SDSID": null,
            "IngredientName": null,
            "CAS": null,
            "Min": null,
            "Max": null,
            "Concentration": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/sds-section

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 7

Supplier-Type

Supplier Types Index

requires authentication

List all supplier (facility) types.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/supplier-type?page=1&per_page=8" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/supplier-type"
);

const params = {
    "page": "1",
    "per_page": "8",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "SupplierTypeName": "Accessories and Trims",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 1,
            "SupplierTypeName": "Accessories and Trims",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/supplier-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 8

Units

Units Index

requires authentication

List all wastewater units.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/units?page=1&per_page=20" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/units"
);

const params = {
    "page": "1",
    "per_page": "20",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 140,
            "UnitName": "",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 140,
            "UnitName": "",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/units

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 20

Users

Users Index

requires authentication

List all users.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/users?page=1&per_page=7&filter%5Bupdated_at%5D=%3D+2026-08-26+14%3A19%3A12&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/users"
);

const params = {
    "page": "1",
    "per_page": "7",
    "filter[updated_at]": "= 2026-08-26 14:19:12",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 8,
            "UserId": "02-TUGF4Z9EK73J-X",
            "FirstName": "Amy",
            "LastName": "Huang",
            "FullName": "Amy Huang",
            "IsActive": true,
            "Email": "amyhuang@ecic.com.tw",
            "Phone": "+886910807779",
            "Address1": null,
            "Address2": null,
            "StateName": null,
            "CityName": null,
            "ZipCode": null,
            "LocationId": "TW",
            "CreateDate": "2017-06-17 04:45:09",
            "DeleteDate": null,
            "LastUpdateDate": "2017-06-17 04:45:09"
        },
        {
            "Id": 8,
            "UserId": "02-TUGF4Z9EK73J-X",
            "FirstName": "Amy",
            "LastName": "Huang",
            "FullName": "Amy Huang",
            "IsActive": true,
            "Email": "amyhuang@ecic.com.tw",
            "Phone": "+886910807779",
            "Address1": null,
            "Address2": null,
            "StateName": null,
            "CityName": null,
            "ZipCode": null,
            "LocationId": "TW",
            "CreateDate": "2017-06-17 04:45:09",
            "DeleteDate": null,
            "LastUpdateDate": "2017-06-17 04:45:09"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/users

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 7

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-08-26 14:19:12

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Verification-Status

Verification status reference values

requires authentication

Static list from ProductCertificationBodyAssignmentStatusEnum (paginated). Ids are stable via azureApiId().

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/verification-status?page=1&per_page=7" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/verification-status"
);

const params = {
    "page": "1",
    "per_page": "7",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "StatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "StatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/verification-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 7

Waste-Water-Reports

Waste Water Reports Index

requires authentication

List all wastewater (ClearStream) reports including Step 2 profile fields ({@code wastewater_report_profiles} + Guideline attribute {@code external_id}s). Several legacy ticket fields remain {@code null} until mapping is agreed.

Includes archived reports (archived_at set) — no soft-delete column on this model.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/waste-water-reports?page=1&per_page=7&filter%5Bupdated_at%5D=%3C+2026-08-10+14%3A19%3A12&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/waste-water-reports"
);

const params = {
    "page": "1",
    "per_page": "7",
    "filter[updated_at]": "< 2026-08-10 14:19:12",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "TRID": "60-BX4M3Q2DMW9B-F",
            "OrganisationId": 12822,
            "SolutionProviderId": 1046,
            "ReportingCycle": "2022-10-01 00:00:00",
            "WWReportStatusId": 3,
            "GuidelineId": 1,
            "CompletedDate": "2022-09-29 00:00:00",
            "DisposalPathwayId": null,
            "DisposalPathwayPercentage": null,
            "DischargeTypeId": null,
            "WWType": "Industrial Wastewater",
            "NumberOfDischargePoints": 3,
            "IndustryTypeId": null,
            "HasSludgeId": null,
            "Above15mId": null,
            "FibreId": null,
            "FacilityTypeIds": [],
            "WWDischargePerDay": null,
            "OnSiteAppNumber": "LEGACY-18790",
            "SamplingDate": null,
            "CreateDate": "2022-10-13 11:42:54",
            "UploadDate": "2022-10-13 11:45:27",
            "LastUpdateDate": "2026-07-31 11:54:12"
        },
        {
            "Id": 1,
            "TRID": "60-BX4M3Q2DMW9B-F",
            "OrganisationId": 12822,
            "SolutionProviderId": 1046,
            "ReportingCycle": "2022-10-01 00:00:00",
            "WWReportStatusId": 3,
            "GuidelineId": 1,
            "CompletedDate": "2022-09-29 00:00:00",
            "DisposalPathwayId": null,
            "DisposalPathwayPercentage": null,
            "DischargeTypeId": null,
            "WWType": "Industrial Wastewater",
            "NumberOfDischargePoints": 3,
            "IndustryTypeId": null,
            "HasSludgeId": null,
            "Above15mId": null,
            "FibreId": null,
            "FacilityTypeIds": [],
            "WWDischargePerDay": null,
            "OnSiteAppNumber": "LEGACY-18790",
            "SamplingDate": null,
            "CreateDate": "2022-10-13 11:42:54",
            "UploadDate": "2022-10-13 11:45:27",
            "LastUpdateDate": "2026-07-31 11:54:12"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/waste-water-reports

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 7

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-08-10 14:19:12

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

Waste-Water-Results

Waste Water Results Index

requires authentication

One row per filled ClearStream test parameter ({@code wastewater_test_result_parameters}) on {@code editable()} leaf rows (excludes category/group parents and leachate-only rows).

Leachate follow-up values are nested on the sludge/source row via {@code Leachate*} fields.

Includes parameters on archived reports — no soft-delete column on this model.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/waste-water-results?page=1&per_page=12&filter%5Bupdated_at%5D=%3C+2026-09-04+14%3A19%3A12&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/waste-water-results"
);

const params = {
    "page": "1",
    "per_page": "12",
    "filter[updated_at]": "< 2026-09-04 14:19:12",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 3766098,
            "ReportId": 14496,
            "ParameterId": 129,
            "ParameterName": "1,2-benzenedicarboxylic acid, di-C7-11 branched and liearalkyl esters (DHNUP)",
            "SamplingLocation": "Untreated",
            "DetectionAsText": "0",
            "DetectionNormalizedAsNumber": 0,
            "UnitId": 109,
            "EvaluationLevelId": null,
            "EvaluationPassing": 1,
            "EvaluationIsSampleAndReportOnly": 0,
            "ReferenceLimitValueMax": null,
            "ReferenceLimitValueMin": null,
            "LeachateDetection": null,
            "LeachateUnitId": null,
            "LeachateEvaluationLevelId": null,
            "LeachateEvaluationPassing": null,
            "CreateDate": "2026-07-30 13:58:22",
            "LastUpdateDate": "2026-07-30 14:04:37"
        },
        {
            "Id": 3766098,
            "ReportId": 14496,
            "ParameterId": 129,
            "ParameterName": "1,2-benzenedicarboxylic acid, di-C7-11 branched and liearalkyl esters (DHNUP)",
            "SamplingLocation": "Untreated",
            "DetectionAsText": "0",
            "DetectionNormalizedAsNumber": 0,
            "UnitId": 109,
            "EvaluationLevelId": null,
            "EvaluationPassing": 1,
            "EvaluationIsSampleAndReportOnly": 0,
            "ReferenceLimitValueMax": null,
            "ReferenceLimitValueMin": null,
            "LeachateDetection": null,
            "LeachateUnitId": null,
            "LeachateEvaluationLevelId": null,
            "LeachateEvaluationPassing": null,
            "CreateDate": "2026-07-30 13:58:22",
            "LastUpdateDate": "2026-07-30 14:04:37"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/waste-water-results

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 12

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: < 2026-09-04 14:19:12

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at

WW-Profile-Industry-Type

WW Profile Industry Type Index

requires authentication

Industry type reference catalogue — Guideline API {@code industry_type} synced to {@see SupplierAttribute} group {@code industry_type} via {@code app:guideline-api-sync}. Same id space as {@code IndustryTypeId} on {@see \App\Http\Resources\External\Azure\V1\AzureWasteWaterReportsListResource}. Not {@see AzureSupplierTypeController} ({@code supplier_facility_types} org profile).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-profile-industry-type?page=1&per_page=6" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-profile-industry-type"
);

const params = {
    "page": "1",
    "per_page": "6",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "IndustryTypeName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "IndustryTypeName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/ww-profile-industry-type

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 6

WW-Report-Fibre

WW Report Fibre Index

requires authentication

Fibre type reference catalogue — Guideline API {@code fiber_type} synced to {@see SupplierAttribute} group {@code fiber_type} via {@code app:guideline-api-sync}. Same id space as {@code FibreId} on {@see \App\Http\Resources\External\Azure\V1\AzureWasteWaterReportsListResource}.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-report-fibre?page=1&per_page=2" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-report-fibre"
);

const params = {
    "page": "1",
    "per_page": "2",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "FibreName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "FibreName": "Cotton",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/ww-report-fibre

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 2

Pretreatments

WW Report Pretreatment Index

requires authentication

ClearStream sampling pre-treatment catalogue ({@see SampleInformationPointPreTreatmentEnum}) — same labels stored on {@code wastewater_sampling_points.pre_treatments}.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/pretreatments?page=1&per_page=5" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/pretreatments"
);

const params = {
    "page": "1",
    "per_page": "5",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 1,
            "PretreatmentName": "None",
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": 1,
            "PretreatmentName": "None",
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/pretreatments

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 5

WW-Report-Status

Wastewater Report Status Reference Values

requires authentication

Static list of wastewater report statuses from WastewaterReportStatusEnum (paginated).

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-report-status?page=1&per_page=14" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-report-status"
);

const params = {
    "page": "1",
    "per_page": "14",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": null,
            "WWStatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        },
        {
            "Id": null,
            "WWStatusName": null,
            "CreateDate": null,
            "LastUpdateDate": null
        }
    ]
}
 

Request      

GET api/azure/v1/ww-report-status

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 14

WW-Report-vs-CAP

WW Report vs CAP (RCA/CAP) Index

requires authentication

One row per parameter root-cause analysis ({@code wastewater_root_cause_analyses}).

Includes rows on archived reports — no soft-delete column on this model.

Example request:
curl --request GET \
    --get "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-report-vs-cap?page=1&per_page=2&filter%5Bupdated_at%5D=%3D+2026-08-21+14%3A19%3A12&sort=updated_at" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
const url = new URL(
    "https://staging-api.vm400.consulting1x1.info/api/azure/v1/ww-report-vs-cap"
);

const params = {
    "page": "1",
    "per_page": "2",
    "filter[updated_at]": "= 2026-08-21 14:19:12",
    "sort": "updated_at",
};
Object.keys(params)
    .forEach(key => url.searchParams.append(key, params[key]));

const headers = {
    "Authorization": "Bearer {YOUR_AUTH_KEY}",
    "Content-Type": "application/json",
    "Accept": "application/json",
};


fetch(url, {
    method: "GET",
    headers,
}).then(response => response.json());

Example response (200):


{
    "data": [
        {
            "Id": 48,
            "WWReportId": 31779,
            "FileName": null,
            "ParameterId": 393,
            "ReasonsForFailure": "Incomplete chemical inventory",
            "CorrectiveAction": "Update and verify chemical inventory",
            "PlannedResolutionDate": "2026-08-31",
            "IsResolved": 0,
            "CreateDate": "2026-08-03 06:57:27",
            "LastUpdateDate": "2026-08-03 06:57:27"
        },
        {
            "Id": 48,
            "WWReportId": 31779,
            "FileName": null,
            "ParameterId": 393,
            "ReasonsForFailure": "Incomplete chemical inventory",
            "CorrectiveAction": "Update and verify chemical inventory",
            "PlannedResolutionDate": "2026-08-31",
            "IsResolved": 0,
            "CreateDate": "2026-08-03 06:57:27",
            "LastUpdateDate": "2026-08-03 06:57:27"
        }
    ],
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "&laquo; Previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "Next &raquo;",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}
 

Request      

GET api/azure/v1/ww-report-vs-cap

Headers

Authorization        

Example: Bearer {YOUR_AUTH_KEY}

Content-Type        

Example: application/json

Accept        

Example: application/json

Query Parameters

page   integer  optional    

the page number to show. Example: 1

per_page   integer  optional    

Number of items to show per page. Defaults to 10 Example: 2

filter[updated_at]   datetime  optional    

Filter column updated_at by any accepted value. any operator can be used, e.g. <= < = > >=, together with a date time value (YYYY-MM-DD HH:MM:SS) Example: = 2026-08-21 14:19:12

sort   string  optional    

sort by any accepted column: updated_at. prefix a "-" before the column name to sort in descending order Example: updated_at