{ "openapi": "3.0.4", "info": { "title": "Fenergo Nebula Portal API", "description": "**Portal API**:\n\n
Portal API provides methods related to the Portal application.\n\n
**Portal API provides**:
", "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": [ ] } ] }