Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.0.4",
"info": {
"title": "Fenergo Nebula Portal API",
"description": "**Portal API**:\n\n<br> Portal API provides methods related to the Portal application.\n\n<br> **Portal API provides**:<br><ul><li> The ability to initiate Seamless Passwordless SSO.</li><li> The ability to query for Magic Link (Seamless Passwordless SSO).</li></ul>",
"version": "1.0.0.0"
},
"servers": [
{
"url": "/portal-bff"
}
],
"paths": {
"/api/passwordless/init": {
"post": {
"tags": [
"Passwordless"
],
"summary": "Initializes Seamless Passwordless with magic link SSO authentication flow.",
"parameters": [
{
"name": "X-PORTALTENANT-ID",
"in": "header",
"description": "The UiD of the Portal tenant representing organization",
"schema": {
"type": "string"
},
"example": "6bd87873-d7d8-40e4-9d33-ebbf312d4505"
}
],
"requestBody": {
"description": "Parameter containing all required information to initialize Seamless Passwordless with magic link SSO authentication flow.",
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessInitializeDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessInitializeDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessInitializeDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessInitializeDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
},
"application/json": {
"schema": {
"type": "string"
}
},
"text/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/passwordless/magiclink": {
"post": {
"tags": [
"Passwordless"
],
"summary": "Returns magic link",
"parameters": [
{
"name": "X-PORTALTENANT-ID",
"in": "header",
"description": "The UiD of the Portal tenant representing organization",
"schema": {
"type": "string"
},
"example": "6bd87873-d7d8-40e4-9d33-ebbf312d4505"
}
],
"requestBody": {
"description": "Parameter containing all required information to retrieve magic link.",
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessMagicLinkRequestDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessMagicLinkRequestDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessMagicLinkRequestDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessMagicLinkRequestDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
},
"application/json": {
"schema": {
"type": "string"
}
},
"text/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/passwordless/encrypted-url": {
"post": {
"tags": [
"Passwordless"
],
"summary": "Gets encrypted passwordless URL that can be used as a query string parameter",
"parameters": [
{
"name": "X-PORTALTENANT-ID",
"in": "header",
"description": "The UiD of the Portal tenant representing organization",
"schema": {
"type": "string"
},
"example": "6bd87873-d7d8-40e4-9d33-ebbf312d4505"
}
],
"requestBody": {
"description": "Parameter containing all required information to encrypt for passwordless authentication",
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.GetEncryptedUrlDto"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.GetEncryptedUrlDto"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.GetEncryptedUrlDto"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.GetEncryptedUrlDto"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Domain.Models.Response.BffResponseData`1[Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.EncryptedPasswordlessDataDto]"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Domain.Models.Response.BffResponseData`1[Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.EncryptedPasswordlessDataDto]"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Domain.Models.Response.BffResponseData`1[Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.EncryptedPasswordlessDataDto]"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
}
}
}
},
"500": {
"description": "Internal Server Error"
}
}
}
}
},
"components": {
"schemas": {
"Fenergo.Nebula.Portal.BFF.Application.Models.ClientCredentials.ClientCredentialsRequestBase": {
"required": [
"clientId",
"clientSecret"
],
"type": "object",
"properties": {
"clientId": {
"minLength": 1,
"type": "string",
"description": "ID of client_credentials client",
"example": "d86b3298-7f69-4095-8271-590ce2d7ad51"
},
"clientSecret": {
"minLength": 1,
"type": "string",
"description": "Secret of client_credentials client",
"example": "b17d8fe8-cefe-4825-b9fc-2f941ac27f40"
}
},
"additionalProperties": false,
"description": "Contains data required for client_credentials authentication"
},
"Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.EncryptedPasswordlessDataDto": {
"type": "object",
"properties": {
"encryptedData": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.GetEncryptedUrlDto": {
"allOf": [
{
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.ClientCredentials.ClientCredentialsRequestBase"
},
{
"required": [
"entityId",
"journeyId",
"languageIsoCode",
"returnUrl",
"userIdentifier"
],
"type": "object",
"properties": {
"entityId": {
"minLength": 1,
"type": "string",
"description": "ID of an entity to which user will have access",
"example": "941a59d5-4835-4755-9da9-efff70598ba0"
},
"userIdentifier": {
"minLength": 1,
"type": "string",
"description": "User identifier",
"example": "sample-user@client.com"
},
"returnUrl": {
"minLength": 1,
"type": "string",
"description": "Return URL to which user will be redirected after journey completion",
"example": "https://return-user-to.destination"
},
"journeyId": {
"minLength": 1,
"type": "string",
"description": "Journey ID",
"example": "941a59d5-4835-4755-9da9-efff70598ba0"
},
"languageIsoCode": {
"minLength": 1,
"type": "string",
"description": "Language ISO code",
"example": "en-US"
},
"expiresAtMilliseconds": {
"minimum": 0,
"exclusiveMinimum": true,
"type": "integer",
"description": "Expiration time in milliseconds since Unix epoch",
"format": "int64",
"example": 1696118400000
}
},
"additionalProperties": false
}
],
"description": "Contains data required to encrypt passwordless initialization data using symmetric encryption"
},
"Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessInitializeDto": {
"allOf": [
{
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.ClientCredentials.ClientCredentialsRequestBase"
},
{
"required": [
"entityId",
"journeyId",
"languageIsoCode",
"userIdentifier"
],
"type": "object",
"properties": {
"entityId": {
"minLength": 1,
"type": "string",
"description": "ID of an entity to which user will have access",
"example": "941a59d5-4835-4755-9da9-efff70598ba0"
},
"userIdentifier": {
"minLength": 1,
"type": "string",
"description": "User identifier",
"example": "sample-user@client.com"
},
"returnUrl": {
"type": "string",
"description": "Return URL to which user will be redirected after journey completion",
"nullable": true,
"example": "https://return-user-to.destination"
},
"callbackUrl": {
"type": "string",
"description": "Callback URL for sending a webhook to clients application when magic link is generated and ready to be retrieved",
"nullable": true,
"example": "https://callback-to.destination"
},
"journeyId": {
"minLength": 1,
"type": "string",
"description": "ID of a journey to which user will be redirected",
"example": "77e256e1-3c8b-43c4-a13e-53c5d4c63b20"
},
"languageIsoCode": {
"minLength": 1,
"type": "string",
"description": "ISO code of a language that will be used for user's next login session",
"example": ""
}
},
"additionalProperties": false
}
],
"description": "Contains data required to initialize Seamless Passwordless with magic link SSO authentication flow"
},
"Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.PasswordlessMagicLinkRequestDto": {
"allOf": [
{
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.ClientCredentials.ClientCredentialsRequestBase"
},
{
"required": [
"userIdentifier"
],
"type": "object",
"properties": {
"userIdentifier": {
"minLength": 1,
"type": "string",
"description": "User identifier",
"example": "sample-user@client.com"
}
},
"additionalProperties": false
}
],
"description": "Contains data required to get magic link"
},
"Fenergo.Nebula.Portal.BFF.Domain.Models.Response.BffResponseData`1[Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.EncryptedPasswordlessDataDto]": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Application.Models.Passwordless.EncryptedPasswordlessDataDto"
},
"messages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Fenergo.Nebula.Portal.BFF.Domain.Models.Response.CommonResponseMessage"
},
"nullable": true
}
},
"additionalProperties": false
},
"Fenergo.Nebula.Portal.BFF.Domain.Models.Response.CommonResponseMessage": {
"type": "object",
"properties": {
"message": {
"type": "string",
"nullable": true
},
"type": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"Microsoft.AspNetCore.Http.HttpValidationProblemDetails": {
"allOf": [
{
"$ref": "#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails"
},
{
"type": "object",
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"nullable": true
}
},
"additionalProperties": { }
}
]
},
"Microsoft.AspNetCore.Mvc.ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
},
"additionalProperties": { }
}
},
"securitySchemes": {
"Bearer": {
"type": "apiKey",
"description": "Please insert JWT with Bearer into field",
"name": "Authorization",
"in": "header"
}
}
},
"security": [
{
"Bearer": [ ]
}
]
}