URI/URL

Each UNIT is identified by a unique UNIT-URI that can be mapped unambiguously to a https UNIT-URL. Each UNIT-URI contains the email-address of it's PRODUCER. If the resp. email-provider supports UNITED-PAGES it is called the NATIVE-PROVIDER otherwise united-pages.com is called the DEFAULT-PROVIDER.

A UNIT-URI starts with the scheme "unit", followed by the abbreviation of its UNIT-CLASS(e.g. cal for calendar), the email-address of the PRODUCER and ends up with an optional query. As known from http-query-parameters the query is separated by ‘?’ and parameters are separated by ‘&’. The mapped UNIT-URL depends partially on the resp. UP-PROVIDER(native vs. default).

<unit-uri> ::= unit://<unit-class>/<local-part>@<domain-part>[?<query>]
<unit-url> ::= https://<up-domain-part>/<unit-class>/<local-part>/<domain-part>[?<query>]
<unit-class> ::= 'air' | 'cal' | 'cct' | 'dev' | 'dom' | 'doms ' | 'fle' | 'idy' | 'loc' |
'lst' | 'mail' | 'msg' | 'pky' | 'pwd' | 'ref' | 'sce' | 'tok'
<query> ::= <query_id>[&_black=<blacklist>]|[&_flag<flag>]
<flag> ::= 'all' | 'download' | 'plain'
<up-domain-part> ::= <native-domain-part> | 'www.united-pages.com/unit'
<blacklist> ::= <unit-variable> | <unit-variable>,<blacklist>
<query_id> ::= <identifier>=<value> | <identifier>=<value>&<query_id>

Semantic:

<native-domain-part> ~ result of GET https://www.united-pages.com/unit/dom/<domain-part>
e.g GET https://www.united-pages.com/unit/dom/goohoo.com -> {

<local-part> ~ RFC5322 IMF (Internet Message Format)
<domain-part> ~ RFC5322 IMF (Internet Message Format)
<query> ~ RFC 3986 URI(Uniform Resource Identifier)
<blacklist> ~ every variable in blacklist is not part of a GET-response
<all> ~ all unit-uri of the resp. unit-class are listed in a GET-response
<download> ~ if download is set in GET request on a fle UNIT the resp. file is downloaded
<plain> ~ no inheritance is evaluated

How is a <unit-uri> mapped to <unit-url>?

(I) native

<unit-uri> unit://cct/john.doe@goohoo.com
<unit-url> https://api.goohoo.com/up/cct/john.doe/goohoo.com

(II) default

<unit-uri> unit://cal/praxis@medicus.de?q=123
<unit-url> https://www.united-pages.com/unit/cal/praxis/medicus.de?q=123

Small/capital letters and the sequence of http-query-parameters in a UP-URI are not decisive, e.g. the following URIs are semantically identical:

unit://cal/praxis@medicus.de?id=abc
unit://CAL/Praxis@Medicus.de?iD=ABc

How is the native-domain-part determined?

(I) GET-request of all native domain-mappings:

GET https://www.united-pages.com/unit/doms
-> e.g. {“up”:"(goohoo.com,api.goohoo.com/unit),(gmx.net,www.gmx.com/up),(gmx.de,www.gmx.com/up),(gmail.com,api.google.com/united ),...”}

(II) GET request for a concrete domain-part:

GET https://www.united-pages.com/unit/dom/<domain-part>
-> e.g. GET http://www.united-pages.com/unit/dom/goohoo.com returns {“up”:”api.goohoo.com/unit”}

Where is <unit-uri> used?

Instead of focusing only on <unit-url> for the following reasons the <unit-uri> format is specified additionally:
- the <unit-uri> does not need to consider whether a domain is supported by its native email-provider
- it is not a must to use http(s) for webservices (only state-of-the-art)
- <unit-uri> is shorter and more intuitive for humans
- a unique scheme (here: unit) can be coupled with a certain application, i.e. a certain App can be started when clicking on a certain <unit-uri> within Email or Messenger e.g.

Hello John Doe, 

your next appointment:

unit://cal/praxis@medicus.de?id=123

Regards
Your medicus team
unit://cct/praxis@medicus.de?q=dispatcher