Allmänt
För att aktivera en app som datakälla slår du på reglaget Datakälla under Ramverk. Fortsätt sedan att konfigurera appen enligt dokumentationen nedan. Ett fullständigt exempel på hur config kan se ut finns i figur 1. För allmän appkonfiguration, t.ex. fält som användarna konfigurerar själva, se dokumentationen för Upsales-appar.
Upsales skickar varje anrop till din app som en POST med en JSON-body, och appens endpoint måste använda HTTPS. Appen har 30 sekunder på sig att svara.
Config för capabilities
Följande fält kan konfigureras under capabilities. Din app visas i modalen för att lägga till nytt företag bara om capabilities.typeahead är satt, och i dialogen för att uppdatera/koppla företag bara om capabilities.refresh är satt.
Tabell 1
Egenskaper för config-objektet capabilities
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| logo | String | "https://img.upsales.com/app/102/logo.png" | Används för att visa appens logotyp i modalen för att lägga till nytt företag och i dialogen för att uppdatera/koppla företag. Om det inte är satt använder modalen för att lägga till nytt företag appens ikon. |
| match | Object | {"upsales": "dunsNo", "integration": "dunsNo"} | Används för att avgöra om ett företag redan finns i Upsales. |
| pricing | Objekt med prisalternativ, egenskaperna finns i tabell 2 | {"buy": {"endpoint": "buy", "cost": 0, "text": "Basic data"}} | Köpalternativen som visas när en användare klickar på lägg till-knappen. Varje nyckel är ett alternativ och måste vara "buy" eller "monitor". Finns fler än ett alternativ väljer användaren ett innan hen bekräftar. Om pricing inte är satt lägger lägg till-knappen till företaget direkt. |
| typeahead | Objekt, se Config för typeahead | {"idField": "dunsNo", "columns": [...]} | Konfiguration för modalen för att lägga till nytt företag. |
| refresh | Objekt, se Config för refresh | {"columns": [...]} | Konfiguration för dialogen för att uppdatera/koppla företag. |
Tabell 2
Egenskaper för ett prisalternativ
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| endpoint | "buy" eller "monitor", samma som alternativets nyckel | "buy" | Anropet som Upsales skickar till din app när användaren bekräftar det här alternativet: /client/buy eller /client/monitor. |
| text | String, eller objekt med en text per språkkod | {"en": "Basic data", "sv": "Basdata"} | Alternativets namn. Med ett objekt visas texten för användarens språk, med engelska som reserv. |
| cost | Number | 10 | Visas under alternativet som ett antal krediter. |
Config för typeahead
Det här är konfigurationen för modalen för att lägga till nytt företag. Varje sökning skickas till din app som ett filter på name, eller på orgNo när söktexten ser ut som ett organisationsnummer. Följande fält kan konfigureras under typeahead:
Tabell 3
Egenskaper för config-objektet typeahead
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| idField | String | "duns_no" | När en användare klickar på köp på en rad skickas värdet i det här fältet på objektet till appen via {body: {data: {id}}} |
| pagination | Objekt, egenskaperna finns i tabell 4. | {"enabled": false} | Inställningsobjekt för att slå på/av paginering |
| countryTabs | Objekt, egenskaperna finns i tabell 5. | {"enabled": true, "showAll": false, "showTotals": false} | Inställningsobjekt för att slå på/av landsflikar |
| columns | Array av Column, se tabell 6 för egenskaperna för Column. | {"type": "add", "width": "30%"} | En array av config-objekt av typen Column, som bestämmer hur resultattabellen ser ut |
| waitTime | Number | 500 | Hur många millisekunder det dröjer efter att användaren slutat skriva innan sökningen görs. Standardvärdet är 300. |
Tabell 4
Egenskaper för config-objektet pagination
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| enabled | Boolean | true | Slår på/av paginering när metadata.total > data.length |
Tabell 5
Egenskaper för config-objektet countryTabs
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| enabled | Boolean | true | Slår på/av countryTabs. Om det är avstängt skickar typeahead eventuellt landsfilter eller eventuell landslista. |
| showAll | Boolean | true | Slår på/av fliken ”Alla” när landsflikar används. |
| showTotals | Boolean | true | Slår på taggarna som visar det totala antalet matchande företag för varje resultat. |
Kolumner
Följande attribut kan konfigureras för kolumner
Tabell 6
Egenskaper för ett config-objekt av typen Column
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| type | String | "string" | Typen bestämmer kolumnens beteende och presentation. För det mesta bestämmer typen bara hur fältets värde visas, t.ex. "currency", men typerna "add", "user" och "view" är specialtyper som har ett fast beteende. Giltiga värden finns i tabell 7. |
| header | String | "Company name" | Kolumnens namn. |
| width | String | "25%" | Kolumnens bredd i %. |
| field | String | "name" | Fältet på objektet som värdet ska hämtas från. |
| subText | Array av Column | {"type": "string", "field": "name"} | Lägger till en andra rad i kolumnen. Config-objektet är detsamma som för en kolumn, förutom att följande attribut inte har någon effekt: width, header, subText. |
| icon | String | "fa fa-bar-chart" | Gör att du kan sätta en ikon framför värdet. |
| style | React-stilobjekt | {"marginRight": "5px"} | Gör att du kan skicka valfri CSS-stil till kolumnens TD-element |
| staticValue | String | "sniCode" | Gör det möjligt att översätta "staticValues" som finns i Upsales, t.ex. sniCode. |
Tabell 7
De olika kolumntyperna
| Värde | Beskrivning |
| number | Den här typen kör parseInt() på värdet innan det visas. |
| string | Den här typen visar värdet som det är. |
| currency | Den här typen visar ett tal med tusentalsavgränsare. |
| flag | Den här typen visar en flagga om den får en landskod, t.ex. 'SE' |
| add | Den här typen visar knapparna för att lägga till/slå samman. Den använder objektet pricing under capabilities för att skapa de olika köpalternativen, se tabell 2. |
| user | Den här typen visar gravatarer för användarna under attributet user på objektet, om de har samma format som för företag i Upsales. |
| view | Den här typen använder idField för att navigera till /accounts/{id}/ |
Config för refresh
Det här är inställningarna för knappen för att uppdatera/koppla företag i företagsvyn. Följande fält kan konfigureras under refresh:
| Egenskap | Giltiga värden | Exempel | Beskrivning |
| columns | Array av Column | {"type": "string", "field": "name"} | Samma som för typeahead |
Konfiguration av iFrame
För att visa din app i en iframe på företagskortet sätter du iframe=true i den yttersta nivån av config. Appens ikon visas bredvid namnet. När en användare öppnar appen på ett företag skickar Upsales ett POST-anrop till din app på /iframe med företaget under body.data (dess id är body.data.id). Svara med URL:en till sidan som ska visas i iframen.
Exempel
Figur 1. Ett exempel på config för en datakälla-app
{
"fields": {
"account": [
{
"type": "multiselect",
"name": "countries",
"label": "Countries",
"required": true,
"externalValues": true
},
{
"type": "checkbox",
"name": "createContacts",
"label": "Create contacts"
}
],
"user": [],
"test": true
},
"uiElements": {
"account": {
"sidebar": [
{
"name": "monitoring",
"type": "iframe"
}
]
}
},
"requirements": [],
"capabilities": {
"logo": "https://img.upsales.com/app/102/logo.png",
"match": {
"upsales": "dunsNo",
"integration": "dunsNo"
},
"pricing": {
"buy": {
"endpoint": "buy",
"cost": 0,
"text": {
"en": "Basic data",
"sv": "Basdata"
}
}
},
"typeahead": {
"idField": "dunsNo",
"pagination": {
"enabled": true
},
"countryTabs": {
"enabled": false
},
"columns": [
{
"type": "string",
"header": "Company name",
"field": "name",
"width": "70%"
},
{
"type": "add",
"width": "30%"
}
]
},
"refresh": {
"columns": [
{
"type": "string",
"header": "Company name",
"field": "name",
"width": "70%"
},
{
"type": "add",
"width": "30%"
}
]
}
},
"iframe": true
}