openapi: 3.2.0 info: title: Fenergo Nebula Portal Passwordless API description: '**Portal API**: Portal API provides methods related to the Portal application. **Portal API provides**: The ability to initiate Seamless Passwordless SSO. The ability to query for Magic Link (Seamless Passwordless SSO).' version: 1.0.0.0 servers: - url: /portal-bff security: - Bearer: [] tags: - name: Passwordless 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 operationId: postApiPasswordlessInit x-operation-id-source: derived /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 operationId: postApiPasswordlessMagiclink x-operation-id-source: derived /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 operationId: postApiPasswordlessEncryptedUrl x-operation-id-source: derived 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.Domain.Models.Response.CommonResponseMessage: type: object properties: message: type: - string - 'null' type: type: - string - 'null' additionalProperties: false Microsoft.AspNetCore.Mvc.ProblemDetails: type: object properties: type: type: - string - 'null' title: type: - string - 'null' status: type: - integer - 'null' format: int32 detail: type: - string - 'null' instance: type: - string - 'null' additionalProperties: {} 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: type: integer description: Expiration time in milliseconds since Unix epoch format: int64 example: 1696118400000 exclusiveMinimum: 0 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 - 'null' description: Return URL to which user will be redirected after journey completion example: https://return-user-to.destination callbackUrl: type: - string - 'null' description: Callback URL for sending a webhook to clients application when magic link is generated and ready to be retrieved 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.EncryptedPasswordlessDataDto: type: object properties: encryptedData: type: - string - 'null' additionalProperties: false ? 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 - 'null' items: $ref: '#/components/schemas/Fenergo.Nebula.Portal.BFF.Domain.Models.Response.CommonResponseMessage' additionalProperties: false 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 securitySchemes: Bearer: type: apiKey description: Please insert JWT with Bearer into field name: Authorization in: header