📍 Eindpunt Details
Het /interface/Api.aspx eindpunt fungeert als het centrale ontvangstkanaal voor alle inkomende API-communicatie naar FOX4Work. Het beheert de verbinding, authenticatie, validatie van het contentformaat, en activeert interne bedrijfsprocessen (USEREXIT).
| Element | Detail |
| Basis URL | [URL_van_uw_server]/interface/Api.aspx |
| Technologie | ASP.NET Web Forms (VB.NET Code-behind) |
| Doel | Ontvangst, authenticatie en verwerking van inkomende gegevens (IDocs, zakelijke berichten, enz.) |
🛠 Aanvraag Levenscyclus (Workflow)
De verwerking van een aanvraag volgt een precieze levenscyclus:
-
Pre-initialisatie (Page_PreInit): Legt de verbinding met de beheerengine vast (via Initialise).
-
Laden (Page_Load):
-
Maakt de HTTP-antwoordstroom leeg (Response.Clear()).
-
Bepaalt het contentformaat (Content-Type).
-
Voert Authenticatie uit.
-
Roept de hoofdfunctie voor verwerking op (Message_to_send) bij succesvolle authenticatie.
-
-
Verwerking (Message_to_send): Valideert de HTTP-methode en het formaat van de aanvraagbody, en voert vervolgens interne bedrijfsprocessen uit.
-
Ontladen(Page_Unload): Sluit verbindingen (Connection.CONNECTEUR_ARRET()).
🔒 Authenticatiemechanismen
Het eindpunt ondersteunt vier (4) verschillende authenticatiemechanismen, die in de volgende volgorde worden gecontroleerd. Zodra een set inloggegevens wordt gevonden, probeert de code de gebruiker te authenticeren.
1. Aangepaste Toegangstoken (Header)
-
Type: Token voor specifiek gebruik (waarschijnlijk voor een applicatie of klantenservice).
-
Locatie: HTTP Header X-CS-Access-Token.
-
Formaat: Een tekenreeks die de token vertegenwoordigt.
-
Header Voorbeeld: X-CS-Access-Token: uw-geheime-toegangstoken
2. Query String Parameters
-
Type: Eenvoudig doorgeven van inloggegevens in de URL. Afgeraden methode voor productie vanwege beveiligingsrisico’s (zichtbaarheid in logboeken en geschiedenis).
-
Locatie: URL, na de ?.
-
Formaat: user en password
-
URL Voorbeeld: /interface/Api.aspx?user=mijngebruiker&password=mijnwachtwoord
3. Basis Authenticatie (Header)
-
Type: HTTP Standaard. Inloggegevens (gebruikersnaam:wachtwoord) zijn Base64 gecodeerd.
-
Locatie: HTTP Header Authorization.
-
Formaat: Basic [Base64-gecodeerd(gebruikersnaam:wachtwoord)]
-
Header Voorbeeld: Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
4. Bearer Token (Header)
-
Type: Meestal gebruikt met OAuth 2.0.
-
Locatie: HTTP Header Authorization.
-
Formaat: Bearer [token]
-
Header Voorbeeld: Authorization: Bearer mijn-beveiligde-bearer-token
⚠️ Beveiligingsopmerking: Als geen van de bovenstaande methoden inloggegevens verstrekt (Autorisatie(0) is leeg), retourneert de server een 401 Unauthorized code met de boodschap BasicAuthRequired.
📥 Ondersteunde Content Formaten
Het eindpunt zal alleen doorgaan met de verwerking van de aanvraag als de Content-Type van de aanvraag overeenkomt met een van de geautoriseerde formaten.
Ondersteunde Formaten
| MIME Type (Content-Type) | Beschrijving |
| application/xml | Standaard XML |
| application/json | Standaard JSON |
| application/soap+xml | SOAP Aanvraag |
| text/xml | Alias voor XML |
| text/plain | Ruwe Tekst Gegevens |
| text/csv | CSV Gegevensformaat |
Afhandeling van Niet-Geautoriseerde Content
-
Als de Content-Type niet overeenkomt met een van de bovenstaande formaten, retourneert de server een 400 Bad Request code met de boodschapUnauthorizedContext.
⚙️ Verwerking van Zakelijke Acties
Zodra de authenticatie en het contentformaat zijn gevalideerd, neemt de functie Message_to_send het over om interne acties te activeren.
1. Geautoriseerde HTTP Methoden
-
De code controleert of de aanvraagmethode (REQUEST_METHOD) is geautoriseerd.
-
Toegestane Methoden: GET, POST, PUT, PATCH, DELETE.
2. Lezen en Valideren van de Aanvraagbody (Payload)
De body van de aanvraag wordt ingelezen in de variabele Message.
De functie Verifie_structure_post voert een eenvoudige structurele validatie uit op basis van de Content-Type:
| Content-Type | Validatievoorwaarde |
| Bevat xml | De body moet < EN > bevatten. |
| Bevat json | De body moet { EN } bevatten. |
| Overige (text/plain, enz.) | Validatie is altijd True (Geen structurele controle). |
⚠️ Waarschuwing: Als de validatie mislukt, retourneert de server een 405 Method Not Allowed code met de boodschap Method Not Allowed.
3. Activering van Interne Processen (USEREXIT)
Twee soorten acties kunnen worden geactiveerd via de Query Strings:
A. Hoofdproces (Interfaces)
-
Activatie: Wordt altijd uitgevoerd als de structuur geldig is.
-
Rol: Start de algemene interfaceverwerking (Device.LogEvent.Evenement_locfile.Interfaces).
B. Specifieke Sub-Actie (Jobcall)
-
Parameter: jobcall (geheel getal/opsomming).
-
Rol: Als de waarde van de jobcall verschilt van None (0), wordt een secundaire actie gestart.
C. Actiefilter (action)
-
Parameter: action (tekenreeks).
-
Rol: Deze parameter wordt doorgegeven aan de interne processen om te filteren welke sub-acties moeten worden uitgevoerd (maakt het mogelijk om slechts een subset van beschikbare API-aanroepen uit te voeren).
4. Logging
-
Een volledige trace van de ontvangen aanvraag wordt gelogd in de ERP_I tabel (waarschijnlijk een ERP fouten/gebeurtenissen log). Gegevens worden afgekapt tot 8000 tekens.
↩️ Antwoord Formaten en Foutcodes
Het antwoord wordt geformatteerd op basis van de oorspronkelijk verzonden Content-Type in de aanvraag, met behulp van de functie Message_retour.
Antwoord Structuur (Voorbeelden)
| Content Type | Antwoord Formaat |
| xml / soap+xml / text/xml | <response><code>[Status]</code><message>[Tekst]</message></response> |
| json | {“response”: {“code”: “[Status]”,”message”: “[Tekst]”}} |
| text/plain / text/csv (standaard text/xml bij fout) | <ApiError><code>[Status]</code><message>[Tekst]</message></ApiError> |
Gebruikelijke Foutcodes
| HTTP Status | Interne Boodschap | Beschrijving | Oorsprong |
| 200 OK | OK of Zakelijke Boodschap | Succesvolle verwerking. | Message_to_send |
| 400 Bad Request | UnauthorizedContext | Niet-ondersteunde Content-Type. | Page_Load |
| 401 Unauthorized | BasicAuthRequired | Geen authenticatie-informatie verstrekt. | Page_Load |
| 401 Unauthorized | InvalidCredentials | Authenticatie mislukt (onjuiste gebruiker/wachtwoord). | Page_Load |
| 405 Method Not Allowed | Method Not Allowed | Structurele validatie van de aanvraagbody mislukt. | Message_to_send |
| 500 Internal Server Error | Invalid data | Onbehandelde fout (Exceptie) in het Try…Catch blok. | Page_Load |