Skip to content

Hosting api & appsettings.json

Warning

This api is available only when hosting:system_api in settings.json match domain

  • POST /api/core/hosting/refresh - refresh configuration
  • POST /api/core/hosting/signup/{hosting_domain} - create hosting account
  • POST /api/core/hosting/browse
  • POST /api/core/hosting/confirm/{hosting_uuid}

db

  • hosting_domain support for multiple domains separator ;

appsettings.json

JSON
"hosting": {
  "system_api":"app.platformaerp.com", //domena ktora zarzadza 
  "hosting_datastore": "c:\\data", //prefix datastore
  "hosting_domain_sufix": "platformaerp.com",
  "hosting_apps_path": "C:\\data\\paanda.data\\apps", //applications templates,
  "hosting_apps": "erp,paanda-app-client,erp-dostawca,tasks",
  "hosting_server": "s01.platformacrm.pl",
  "hosting_scripts":"platforma-db",
  "hosting_roles": "srs_administrator,sys_administrator", //default roles ,
 "system_jobs_pass": "PASSWORD" //opctional non default password for /api/core/jobs/browse
 },
"system": {
  "branding": "platformaerp.com", //optional printout branding
  "bundle_size":150000,      //optional non standard default: 50000
  "app_directory":"\\apps\\",     //optional non standard app paths default: \\apps\\ Warning not fully supported just for edge case. rendering hbs and old hosting api
  "mail_branding": "sent by platformaerp.com", //optional default sent by paanda.io
  "mail_smtp_server": "smtp.gmail.com",   //optional, if empty all mail settings are defaults notifications@platformaerp.com
  "mail_from": "xxxxxx@xxxxxx.com",
  "mail_username": "xxxxxx",
  "mail_password": "xxxxxx",
  "mail_smtp_port": 587,
  "mail_usessl":true ,          //optional non standard  default: true
  "mail_smtp_valid_cert": true  //optional
},

1. Rejestracja użytkownika

API POST /signup/{hosting_domain}

JSON
 {
  "hosting_company":"XD",
  "hosting_domain":"test30",     
  "hosting_first_name":"marcin",
  "hosting_last_name":"kotynia",
  "hosting_job_title":"XD",
  "hosting_country":"PL",
  "hosting_agreement_subscription":true,
  "hosting_agreement_privacy":true,
  "hosting_promo_code":"pa2020 erp paanda-app-client",  
  "hosting_email":"support@platformacrm.pl"
}
  • hosting_promo_code -aplikacje które mają być pobrane erp tasks
  • nie moze sie powtarzac email

REZULTAT

  • wpis do tabeli app.hosting
  • app.hosting.dsn = null
  • wysłanie email mail-instance-new.md
    • dostępne pola: hosting_uuid,hosting_domain,instance_domain,hosting_email

2. Potwierdzenie instancji

API GET {{host}}/api/hosting/confirm/{app.hosting.hosting_uuid}

REZULTAT

  1. utworzenie bazy
  2. generowany uzytkownik z uprawnieniami tylko do db + tworzenie connectionstrng i szyfrowanie zapisanie app.hosting
  3. tworzenie datastore hosting_datastore\\hosting_db
  4. zapisanie jakie uprawnienia moze dostac uzytkownik adminsitracyjny instancji (nie dajemy app_administrator)
  5. uruchomienie procesu wykonania skryptów appsettings: settings.hosting.hosting_scripts
    • wykonanie skryptów które koncza sie na _setup
    • skrypt z nazwą instance_setup otrzymuje jednorazowoa cala konfiguracje przez parameter app_hosting sa one odpalne na koncu wiec na tym etapi sa wszystei obiekty
    • skrypty znajduja sie w apliakcji support.jetQuery.io/platformadb

Parametry konfiguracyjne

JSON
1
2
3
4
5
6
7
8
9
 "hosting": {
    "hosting_datastore": "c:\\data", //prefix datastore
    "hosting_scripts": "c:\\git\\platforma-db", //sql scripts folder separated by ,
    "hosting_apps_path": "c:\\git\\platforma-db", //sciezka do aplikacji
    "hosting_apps": "erp,paanda-app-client,erp-dostawca,tasks", //aplikacjes
    "hosting_domain_sufix": "platformaerp.com",
    "hosting_server": "s01.platformacrm.pl",
    "hosting_roles": "app_administrator,srs_administrator,sys_administrator" //default roles ,
  },

3. Konfiguracja za pomoca skryptów _setup

  • [dbo].[instance_setup] jest przekazywany @app_hosting z wpisami
    • Dodanie kontrahenta [firm].[firm]
    • Dodanie indeksu zaliczkowego [wms].[item]
    • kvstore dodanie polaczenia
  • dodanie typow dokuemntow document.documenttype_setup
  • dodanie kolumn [dbo].[columns]
  • dodanie slownikow [common].[dictionary]
  • dodanie konfiguracji [configuration].[configuration_setup]
    • Ustawienie w konfiguracji indeksu zaliczkowego configuration instance.sales.advanceindex
    • Ustawienie w konfiguracji domyslnego kontrahenta configuration instance.sales.seller sprzedawca

PRzejscie na instancje czyli uruchomienie https://nazwa instancji.platformaerp.com

API GET {{host}}/api/core/system

REZULTAT

  • zalozenie uzytkownika jesli brak
  • informacja o statusie skryptów kv.v.runner
  • UWAGA jest szansa ze np przerwanie zinstanjci zostanie przerwana wznawia API GET {{host}}/api/hosting/confirm/{app.hosting.hosting_uuid}
JSON
{"kv.v.runner.status":"NOT FOUND",
"kv.v.runner.done":"0",
"kv.v.runner.total":"0",
"kv.v.runner.error":"0",
"kv.v.api.client":"https://support.jetQuery.io",
"kv.v.api.token":"true",
"kv.v.api.url":"https://support.jetQuery.io",
"kv.v.api.version":"1.0.0",
"kv.v.owner.language":"pl",
"kv.v.owner.name":"🐼jetQuery.io",
"kv.v.platformacrm.packtype":"78E9964B-3CC5-475B-9F15-CCF25ACE5130"}

10. Skrypty pomocnicze

dbo.instance_setup parametr app_hosting

SQL
1
2
3
4
SELECT *
  FROM [app].[hosting] rows
   where hosting_domain ='localhost'
  for xml auto, ROOT('item'), ELEMENTS  

rezultat

XML
<item>
  <rows>
    <hosting_uuid>A</hosting_uuid>
    <hosting_domain>localhost</hosting_domain>
    <hosting_company>IT SOLUTIONS Marcin Kotynia</hosting_company>
    <hosting_email>marcin@platformacrm.pl</hosting_email>
    <hosting_first_name>Marcin</hosting_first_name>
    <hosting_last_name>Kotynia</hosting_last_name>
    <hosting_job_title>IT</hosting_job_title>
    <hosting_country>Polska</hosting_country> 
    <hosting_dsn></hosting_dsn>
    <hosting_datastore>c:\git\paanda.data</hosting_datastore>
    <hosting_created_at>2020-11-14T22:00:00</hosting_created_at>
    <hosting_status>0</hosting_status>
    <hosting_agreement_subscription>0</hosting_agreement_subscription>
    <hosting_agreement_privacy>1</hosting_agreement_privacy>
    <hosting_promo_code>pa2020</hosting_promo_code>
  </rows>
</item>

kvstore configuration

SQL
1
2
3
4
5
select * from app.kvstore where 
slug like 'kv.connections.%' or 
slug like 'kv.sys.ftp.%'  or 
slug like 'kv.sys.mail.%' or 
slug like 'kv.v.api.url.%'