These are the main use cases of this product that are exposed via "public" APIs in the Backend, e.g., ApiHost1
.
This does not include all the interactions of all subdomains, of which there are many more "private" interactions that are not accessible by "public" clients.
Legend:
-
$$$ denotes a customer API that requires a paid/trial subscription.
-
TSTO denotes an API that is only available for testing (not compiled into production builds).
-
SVC denotes an internal API that is only accessible for service accounts of the system itself.
-
OPS denotes a support API that is only accessible to operations team of the platform
This is sample subdomain, and is expected to be deleted when this product goes to production
- Register a new car $$$
- Delete a car $$$
- Schedule the car for "maintenance" $$$
- Take a car "offline" $$$
- Inspect a specific car $$$
- Find all the un-availabilities for a specific car TSTO
- Find all the cars on the platform $$$
- Find all the available cars for a specific time frame $$$
This is sample subdomain, and is expected to be deleted when this product goes to production
- Make a booking for a specific car and time frame $$$
- Cancel an existing booking $$$
- Find all bookings for all cars $$$
- Check the health of the web service
For permanently recording compliance and business critical events that are performed on the platform.
- [Asynchronously] persist an audit to permanent storage SVC
- Find all stored audits TSTO
- Deliver all pending audits TSTO
For delivering emails to 3rd party services
- [Asynchronously] deliver an email to an email gateway SVC
- Find all delivered emails TSTO
- Deliver all pending emails TSTO
For delivering SMS to 3rd party services
- [Asynchronously] deliver an SMS to an SMS gateway SVC
- Find all delivered SMS TSTO
- Deliver all pending SMS TSTO
For controlling feature flags for software releases
- Fetch a specific flag SVC
- Fetch all feature flags (for the current deployment environment) SVC
- Fetch a specific flag for the current (Authenticated) user
Used for registering new tenants on the platform, when provisioning physical cloud infrastructure for individual tenants.
- [Asynchronously] notify the provisioning of a new tenant SVC
- Deliver all pending provisionings TSTO
Recording combines, logging, auditing, metrics and usages in a single concept.
- Record a new measurement event (from a Frontend) SVC
- Record a new usage event (from a Frontend) SVC
Usages are the means to record the usage of a product by a user.
- [Asynchronously] deliver a usage event to product usage service SVC
- Deliver all pending usages TSTO
These are the end users on the platform.
- Assign [platform] roles to an existing user OPS
- Unassign [platform] roles to an existing user (except
Standard
role) OPS - Invite a guest to register on the platform (a referral)
- Resend an invitation to a guest
- Guest verifies an invitation is still valid
- Change the default organization for the current (Authenticated) user $$$
- List all memberships of the current (Authenticated) user
- Inspect a specific user TSTO
Identity is the way that a user can authenticate with the platform.
- Fetch the identity characteristics about the authenticated user
API Key are the way a user (person or machine) can authenticate with the platform using an API key.
- Create a new API key for the current (Authenticated) user $$$
- List all API keys of the current (Authenticated) user $$$
- Delete an API Key $$$
Auth Tokens are the way that a user can authenticate with the platform using one or more tokens.
- Refresh an access token
- Revoke an existing access token
Machines are the way that non-human entities can operate on the platform.
- Register a new machine (anonymously or by authenticated user)
Is the way a user can authenticate with the platform using a username and password.
- Authenticate the current user (with a password), may include a second factor (i.e. MFA)
- Register a new person (with a password and with optional invitation)
- Confirm registration of a person (from email)
- Initiate a password reset
- Resend password reset notification
- Verify a password reset token
- Reset password
- Fetch the registration confirmation token TSTO
Is the way you can use one or more second factors for authenticating with the platform for password-protected accounts (above)
- Enable or disable MFA for the current user
- Associate a second factor authenticator for use in authentication (e.g., OOB-SMS, OOB-Email, or TOTP for authenticator apps)
- Complete the association to an authenticator, and authenticate
- Disassociate a second factor authenticator $$$
- List the associated authenticators
- Challenge for an associated authenticator
- Verify the associated authenticator, and authenticate
Is the way that a user can authenticate with the platform using an external OAuth2 provider (like with: Microsoft, Google, Facebook, etc.)
- Authenticate and (auto-register) a person from another OAuth2 provider (with an optional invitation)
Provides a simple image service for uploading and downloading images.
- Upload a new image (supported image types: jpeg,png, gif, maximum size: 100MB) $$$
- Update the metadata about an image (i.e. Description) $$$
- Delete an image $$$
- Inspect a specific image
- Download the image file
Organizations are the primary way that users are grouped together on the platform. An organization can be a "personal" organization (for a single user) or a "shared" organization (for multiple users). An organization is the manifestation of a tenant on the platform.
- Create a new (shared) organization for the current user $$$
- Inspect a specific organization
- Change the organization's details
- Add an Avatar image to the organization
- Remove the Avatar from the organization
- Invite another guest or person to an organization (guest by email, or an existing person by email or by ID) $$$
- Un-invite a member from the organization $$$
- Assign roles to a member $$$
- Unassign roles from a member $$$
- List all members of the organization
- Delete the organization (must be no remaining members) $$$
Event Notifications are the way that subdomains can listen to each other in a loosely-coupled way. A "producing" subdomain produces "domain_events" which are stored on a message bus. This API provides an endpoint to consume those "domain_events".
- Handle a domain_event published to a message bus SVC
- Find all delivered domain_events TSTO
- Deliver all pending domain_events TSTO
A billing subscription is created for every
Organization
(personal and shared) on the platform for any (person or machine). It represents the billing subscription plan for that tenant/organization (i.e., pricing, cost, and features). The subscription plan determines the
Features
each user has access to on the platform, and it defines the fiscal responsibilities that each
EndUser
has an obligation for (i.e., scheduled payments).
Every Organization
must have a single EndUser
that owns the fiscal responsibility of the
Organization
(called the "buyer"), who can control the extent of that responsibility.
- Inspect the subscription for a specific organization
- Upgrade/Downgrade the subscription plan (or transfer the subscription to another authorized buyer when the buyer has left the platform)
- Cancel the subscription
- List all the available pricing plans
- Search the billing history for a subscription
- Transfer the subscription to another authorized buyer
- Export all subscriptions that could be migrated (when migrating off of an existing billing provider) SVC
- Migrate the billing provider data (from one billing provider to a new one) OPS
- Force the cancellation of a subscription for a specific organization OPS
A user profile will be automatically created for every new registered EndUser
on the platform (person or machine).
When a person is registered we also query the
IAvatarService
to see if we can find a default avatar for the persons email. The default adapter is Gravatar.com.
- Change the details (i.e. names, phone, time zone) of the profile
- Change the address of the profile
- Add an Avatar image the profile
- Remove the Avatar from the profile
- Inspect the profile of the current (Authenticated) user
These are the main use cases of this product that are exposed via "public" APIs in the Frontend BEFFE, e.g.,
WebsiteHost
.
In many cases, these API calls are made from a JavaScript client and are forwarded to the Backend APIs. Most of these APIs are protected by CSRF protection, and only accessible to the JavaScript application
- Check the health of the web service
- Fetch all feature flags (for the current deployment environment)
- Fetch a specific flag for a specific user
- Record a new measurement event
- Record a new usage event
- Record a crash report
- Record a diagnostic trace
- Record a page view
- Authenticate the user (with a password or for the specified SSO provider)
- Refresh an authenticated session
- Logout of an authenticated session