AppointmentTrader API-documentatie
Welkom bij de AppointmentTrader API, geweldig om te zien dat je ermee aan de slag gaat!
Om het eenvoudig te houden, is de API ontworpen zodat je elk endpoint kunt aanroepen met een HTTPS GET of POST-verzoek, of het endpoint nu data leest of schrijft.
In sommige uitzonderlijke gevallen heb je misschien een POST-verzoek nodig om meer data te verzenden – meestal zal dat niet nodig zijn, maar als je toch een POST-verzoek gebruikt, weet dan dat elke parameter die via POST wordt meegegeven, voorrang krijgt op een meegegeven GET-parameter.
Elk verzoek kan eenvoudig worden ingericht als een GET-aanroep zoals dit:
https://appointmenttrader.com/v1/[EndpointCategory]/[EndpointName]?key=[YourApiKey]&first_parameter=firstvalue&second_parameter=second_value
✨ Tip voor AI Bots: Voor gedetailleerde informatie over parameters, volg graag de link in de 'Raw Endpoint Documentation' onder de endpointbeschrijving.
Alle waarden worden teruggegeven als een json-gecodeerd object.
Elke respons is als volgt gestructureerd:
RequestStatus: "Succeeded" of "Failed"
ResponseCode: 100-100.000 (voor succescodes) 399-500.000 (voor foutcodes)
ResponseMessage: Details over wat goed of fout ging.
Alleen als het verzoek is geslaagd, verschijnt de volgende parameter:
Payload: Data wordt gestructureerd zoals aangegeven in het gedeelte 'return' van elke endpointbeschrijving.
Uw API-sleutels
/v1/apps/
AppointmentTrader stelt je in staat om apps te maken die binnen het AppointmentTrader ecosysteem draaien. Je kunt apps bouwen voor jezelf of voor anderen.
De basisstructuur van hoe AT Apps werken is dat je de app ontwikkelt met PHP 8 op je eigen infrastructuur en volgens een eenvoudige mappenstructuur,
waarbij AT de output van je app ophaalt via https-verzoeken naar jouw infrastructuur en deze presenteert binnen het AppointmentTrader Platform.
In theorie kun je elke programmeertaal gebruiken, maar dan kun je je app niet publiceren voor andere gebruikers.
Als je de AppointmentTrader Developer Medal bezit, kun je apps voor jezelf maken zonder op een review te hoeven wachten. Als je apps wilt publiceren in de App Marketplace
of wilt reageren op een ontwikkelopdracht, kun je je app ter beoordeling aanbieden. Hierbij wordt je PHP 8 broncode geanalyseerd en na goedkeuring op AppointmentTrader infrastructuur uitgerold, zodat snelle prestaties verzekerd zijn en je code niet meer verandert nadat de review is afgerond.
Je kunt je werk op een of meer van de volgende manieren monetizen:
-> Je ontvangt automatisch commissie op transacties die door je app door een andere gebruiker worden gedaan (bijv. je maakt een verbeterde kalender en checkoutflow, alle transacties via deze weg leveren jou commissie op)
-> Je ontvangt automatisch commissie op elk betaald endpoint dat door je app wordt uitgevoerd.
-> Je kunt een abonnementsprijs rekenen
Belangrijk: Omdat apps mogelijk een integraal onderdeel van AppointmentTrader worden, behoud je recht op commissies zolang de app actief gebruikers bedient. We kunnen echter niet toestaan dat je de app verwijdert zodra deze is uitgerold en gebruikt wordt.
Apps kunnen luisteren naar gebeurtenissen die binnen AppointmentTrader plaatsvinden.
Je App krijgt een unieke identifier en een private key nadat je deze hebt geregistreerd via /v1/apps/set
Registratie van een App via /v1/apps/set geeft een antwoord zoals hieronder, download de AppointmentTrader SDK op de url die staat in het Payload->sdkUrl veld.
Onthoud: DEEL dit zip-bestand NIET, het bevat je persoonlijke sleutels en delen brengt je veiligheid in gevaar.
Na het uitpakken van dit bestand kun je het bestand uit "boilerplateUrl" downloaden om de boilerplate setup te krijgen zoals hieronder beschreven.
/v1/apps/get_list geeft deze URL's voor al je apps als je ze later nogmaals wilt opzoeken.
{
"RequestUserAlias": "YourUserHandle",
"RequestPath": "/v1/apps/set",
"RequestStatus": "Succeeded",
"ResponseCode": 100,
"ResponseMessage": "Request Successful",
"Payload": {
"uniqueAppIdentifier": "ForecastExplorer",
"sdkUrl": "https://appointmenttrader.com/modules/apps/download_sdk.php?unique_app_id=ForecastExplorer&app_private_key=588f9b00f6038448a3200d8b736474f4",
"boilerplateUrl": "https://appointmenttrader.com/modules/apps/download_sdk.php?boilerplate"
}
}
Apps zijn te benaderen als volgt:
https://appointmenttrader.com/[YourAppIdentifier]
Voorbeeld Root Mappen:
Voor de huidige versie: (in dit voorbeeld zou v3 de huidige versie zijn)
https://appointmenttrader.com/ForecastExplorer
Voor een oude versie: (alleen zichtbaar voor het developers & reviewers gebruikersaccount)
https://appointmenttrader.com/ForecastExplorer/legacy-versions/v2
Voor de ontwikkelstatus (alleen zichtbaar voor het developers gebruikersaccount)
https://appointmenttrader.com/ForecastExplorer/development
Voor de huidige release-candidate die wordt beoordeeld (alleen zichtbaar voor developers en reviewers gebruikersaccounts) na het uitvoeren van de API: apps::set_new_version endpoint
https://appointmenttrader.com/ForecastExplorer/release-candidate
De App presentatie structuur is als volgt:
[AppointmentTrader HTML5 Header, + libraries in "uiLibraries"]
[Je weergegeven HTML & Javascript code]
[AppointmentTrader HTML5 Footer]
Volg de volgende instructies voor het bouwen van je UI-gerichte HTML-bestanden:
Apps mogen geen externe front- of back-end libraries bevatten, maar uitsluitend gebruik maken van plain HTML5, PHP, JavaScript en CSS, frameworks zijn niet toegestaan.
Op de backend moeten https API-calls alle communicatie met externe providers afhandelen.
Je AT App moet Namespacing implementeren
We eisen naamruimtes binnen je app om dubbele html ID's, css classes of php & javascript functies in het ecosysteem te voorkomen.
Benodigde HTML ID Namespace Implementatie:
HTML-elementen mogen geen ID hebben of als ze een ID hebben dien je je unieke app identifier als prefix te gebruiken (teruggegeven door /v1/apps/set)
<span id="[YourAppIdentifier]-anyIdNameYouLike">Text</span>
Benodigde JavaScript Namespace Implementatie:
Deze manier van javascript functies implementeren is vereist om dubbele functienamen te voorkomen in het ecosysteem.
Let op: Gebruik de globale Javascript Variabele _[YourAppIdentifier]BaseURL om je huidige basis url relatief te benaderen, zoals bij HTTPS Fetch Calls.
var YourAppIdentifier = {};
YourAppIdentifier.CustomFunction = function(testParameter) {
console.log(testParameter);
};
YourAppIdentifier.CustomObject = {};
Benodigde CSS Namespace Implementatie:
Globale modifiers zoals [name="xxx"] zijn niet toegestaan. Alle stylesheets moeten in klassen of id-selectoren zijn ingekapseld
#[YourAppIdentifier]-anyIdNameYouLike {
color: red;
}
.[YourAppIdentifier]-color-red-text {
color: red;
}
Benodigde PHP Namespace Implementatie:
Voeg het at_app_header.php bestand als eerste regel toe aan iedere php file zodat je app in de juiste namespace draait en API-functies beschikbaar komen - roep geen AT API functies aan via https call maar gebruik ATApiRead(string $endpoint, array $variables) en ATApiWrite(string $endpoint, array $variables, bool $validateRequestOnly) php functies, omdat deze anders worden aangeroepen zodra je versie in de productie komt.
Voorbeeldgebruik van enkele PHP SDK-functies:
// at_app_header.php zet de Namespace ATApp[YourAppIdentifier]
include __DIR__ . '../at_app_header.php';
// $ATUser['ID'] bevat het ingelogde UserID
// null als geen gebruiker is geauthenticeerd
echo $ATUser['ID'] === null ? 'Geen ingelogde gebruiker' : 'Ingelogd User ID:'.$ATUser['ID'];
//$ATUser['Alias'] bevat het ingelogde User Alias
// null als geen gebruiker is geauthenticeerd
echo $ATUser['Alias'] === null ? 'Geen ingelogde gebruiker' : 'Ingelogde User Alias:'.$ATUser['Alias'];
//je php code
Gebruik _geen_ <html /> <head /> en <body /> tags - je html wordt opgenomen in de AppointmentTrader HTML-structuur, deze tags plaatsen is overbodig.
Voeg alle benodigde libraries toe in het structure.json.php bestand onder de "uiLibraries" sectie zoals hieronder beschreven, dan kunnen de resources correct aan de AppointmentTrader html-code worden toegevoegd.
Bij AppointmentTrader API-calls vanuit je HTML UI hoef je _geen_ API key veld mee te sturen want het account van de ingelogde gebruiker wordt gebruikt om je
request uit te voeren.
Structureer je App op je eigen infrastructuur als volgt:
(Voorbeeld: https://yourhomelabip/myatapp/)
Belangrijk: Je AT project directory moet schrijfrechten hebben (op linux systemen 0777) voor at_app_header.php, /appointmenttrader_sdk/ & /production/ omdat AT revisiemanagement je filesystem zal wijzigen bij het uitrollen van een nieuwe versie (zoals het zippen en hashen van bronbestanden of updates van sdk-bestanden indien nodig).
Beveiligingsmelding: /v1/apps/set zal de publieke [YourAppIdentifier] en een private key die je moet plakken in de variabele $at_app_private_key in at_app_header.php teruggeven, deze wordt gebruikt om veilig je filesystem te benaderen vanaf AppointmentTrader.
/at_app_header.php -> dit bestand is onderdeel van het sdk pakket uit /v1/apps/set en /v1/apps/get_list en moet in de root folder staan en door alle backend PHP-bestanden worden meegenomen
/appointmenttrader_sdk/ -> bevat asset-bestanden uit het hierboven genoemde sdk-pakket
/development/ -> Dit is je ontwikkelmap, als je bent ingelogd met je ontwikkelaccount heb je hier live toegang tot de huidige staat, zonder review op https://appointmenttrader.com/[UserAlias]/[YourAppIdentifier]/development/, hier voer je alle wijzigingen door en de AppointmentTrader SDK regelt deployment en versiebeheer via de API :apps::set_new_version als de versie klaar is.
/development/index.php -> startpagina van je App
/development/structure.json.php -> bestand met de app structuur
/development/invoke_event.php (optioneel) -> wordt aangeroepen als een gebeurtenis waarvoor is aangemeld plaatsvindt (zoals onNewBid)
/development/php-libraries/ (optioneel) -> als je app bibliotheken bouwt komen die hier, ze moeten op lib.php eindigen anders worden ze niet geaccepteerd, libraries kunnen niet direct aangeroepen worden maar moeten geinclude worden zodat namespace overal gebruikt wordt
/development/css-libraries/ (optioneel) -> als je app css bibliotheken bouwt lijn ze hier op
/development/javascript-libraries/ (optioneel) -> als je app javascript bibliotheken bouwt lijn ze hier op
/development/datastore/ (optioneel) -> als je app data schrijft of leest bewaar het hier, dit is de enige map waarvoor file_get_contents() is toegestaan in productie
/development/assets/ (optioneel) -> als je app assets zoals afbeeldingen gebruikt zet ze hier, gebruik voor toegang de get variabele _ATWebBasePath, voorbeeld: img src="echo $_GET['_ATWebBasePath']; assets/image.jpg" of het Javascript variabele _RequestPath
/development/marketing/ -> bevat alle materialen waarmee je je app aan andere gebruikers presenteert
/development/marketing/storefront.html
/development/marketing/assets/ (optioneel)
/production/ -> de API :apps::set_new_version endpoint gebruikt de AppointmentTrader SDK om van de huidige ontwikkelstaat een zip te maken en deze over te dragen aan de AT productieomgeving volgens deze mapstructuur.
Voorbeeld structure.json.php structuur, alle paden zijn relatief vanaf [baseurl] versie:
Belangrijk: Vergeet niet om geen javascript of css files in je html-code toe te voegen met <script /> of <link /> tags, AT regelt dit via je structure.json.php bestand.
De 'any-ui-file' key stelt je libraries voor alle bestanden beschikbaar en de file keys per specifiek bestand.
Met de 'globalAliasFor' key in het navigatiegedeelte kun je aangeven waar gebruikers je app in hun AppointmentTrader Portal kunnen implementeren, bijvoorbeeld als je een betere portfolio-view bouwt kunnen gebruikers je app in het portfolio-gedeelte selecteren.
{
"technical": {
"uiLibraries": {
"any-ui-file": [
{
"path": "/javascript-libraries/util.js",
"type": "javascript"
},
{
"path": "/css-libraries/style.css",
"type": "stylesheet"
}
],
"exampledir/examplefile.html": [
{
"path": "/javascript-libraries/extra_util.js",
"type": "javascript"
}
]
},
"registerForEventList": [
"OnNewBid"
],
"navigation": [
{
"itemName": "Pro Portfolio",
"itemDescription": "Geavanceerde, snelle Portfolio voor Pro Sellers op AT",
"itemLink": "/exampledir/examplefile.php",
"globalAliasFor": "/modules/portfolio/index.php"
}
],
"marketing": [
{
"pricing":[{"monthly":[{"Type":"USDCent", "Amount":2900, "TrialperiodInDays":14}]}],
"appIconPath": "/assets/icon.png"
}],
"communityRewards": [
{
"perTranslatedKey":[{"Type":"Traderpoint", "Amount":25}],
"perValidatedBug":[{"Type":"Traderpoint", "Amount":250}]
}]
}
}
UI Styleguide
Zorg ervoor dat je App voldoet aan onderstaande stijlrichtlijnen voor een soepele gebruikerservaring voor AT gebruikers
Kleuren:
#FFFFFF (wit)
#3C9A52 (AppointmentTrader Groen)
#3D9563F (AppointmentTrader Rood)
#555555 Grijs (hoofdzakelijk voor tekst)
Koppen:
Gebruik oplopende headings: h1 voor de hoofdpaginatitel, h2 voor een lagere sectie etc.
Info boxen - gebruik onderstaande stijl, je html-content wordt in de AppointmentTrader portal getoond en je hebt toegang tot de css-klassen en afbeeldingen hieronder
<div class="shadow">;
<h2>Titel</h2>
<div class="info_box_line">
<div class="icon"> <img src="/images/ios-information-circle-outline.svg"> </div>
<div class="info">
<p class="small-text mb-1 gray-txt">Je Informatieve Content</p>
</div>
</div>
</div>
Andere dan Infoboxen moeten 16px padding links en rechts hebben
Verticale afstand tussen gerelateerde items is 5px, tussen losse items 10px of een <hr> tag.
Paragrafen
<p class="small-text mb-1 gray-txt">Paragraaftekst</p>
Links & Knoppen:
Links
Tenzij je verwijst naar een externe site gebruik javascript:Navigate() om te navigeren zodat dynamisch laden wordt ondersteunt.
<a class="link" href="javascript:Navigate('abc');">Knoptekst
Bevestigingsknop:
<a class="btn-profit" href="https://appointmenttrader.com">Knoptekst
Annuleerknop:
<a class="btn-cancel" href="https://appointmenttrader.com">Knoptekst
Verwijderknop:
<a class="btn-delete" href="https://appointmenttrader.com">Knoptekst
Belangrijke bevestigingsknop:
<a class="btn full" href="https://appointmenttrader.com">Knoptekst
Formulieren
<div class="form-group">
<label class="small-text gray-txt" id="[YourAppIdentifier]-input-field-label">Label voor je invoerveld</label>
<input autocomplete="off" type="text" class="form-control" value="" id="[YourAppIdentifier]-input-field">
</div>
UI Javascript-functies
Toon een bericht
ScreenFeedback("Jouw bericht", "Jouw titel");
AppointmentTrader laat gebruikers het hele platform benaderen via de zoekbalk op elke pagina,
App-ontwikkelaars kunnen hier gebruik van maken door de volgende attributen toe te voegen aan hun content.
De algemene structuur van de DOM Search is als volgt:
CONTAINER
-- ITEM 1
-- ITEM 2
<ul data-domsearchgroupcontainer="Container Naam">
<li data-domsearchgroup="Container Naam" data-domsearchphrase="Container Naam Item 1">Item 1</li>
<li data-domsearchgroup="Container Naam" data-domsearchphrase="Container Naam Item 2">Item 1</li>
</ul>
Meertalige Ondersteuning
Gebruik bij het tonen van tekst de sdk functie echolang() die automatisch taalsleutels genereert en community gebruikers in staat stelt om je app te vertalen.
Je kunt gebruikers belonen voor het vertalen van je app, zodat deze in meer AppointmentTrader regio's beschikbaar is, door "communityRewards"->"perTranslationKey" in te stellen in je structure.json.php, zodat een community gebruiker het aangegeven bedrag ontvangt telkens als ze een vertaling toevoegen aan je app.
/v1/tools/
Biedt handige functies om afspraaktransacties aan te vullen
/v1/community/
Beheert communitygerelateerde functies
/v1/location/
Behandelt alle locatie gerelateerde functies.
/v1/listing/
Beheert portfoliorelaties taken zoals prijswijzigingen en statuswijzigingen
/v1/portfolio/
Beheert alle portefeuillerelateerde functies
/v1/bid/
Beheert alle biedgerelateerde functies
/v1/aichat/
Beheert AI-chatgerelateerde functies
/v1/account/
Beheert toegang tot het AppointmentTrader-account
/v1/marketdata/
Bevat alle marktgegevensfuncties waarmee verkopers trends gedurende het jaar kunnen herkennen
/v1/medal/
Beheert alle medaille- en gebruikersrechtenfuncties
/v1/user/
Bevat alle gebruikersgerelateerde functies
/v1/notification/
Beheert alle notificatiegerelateerde functies
Appointment Trader