components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.intro
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.audience-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.audience-description
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.enabling-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.enabling-description
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-enabling-pipeline-comment
app.UsePowerPortalsProWebServer();
app.MapAuthEndpoints<PortalUser>();
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.enabling-followup
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.routes-type-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.routes-type-description
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-routes-anywhere-comment
var loginUrl = Routes.Api.Auth.Login; // components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-routes-login-url-comment
var meUrl = Routes.Api.Auth.Me; // components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-routes-me-url-comment
var createUrl = Routes.Api.Tables.GetCreateRoute("contact");
var fetchUrl = Routes.Api.GetRetrieveMultipleRoute(fetchXml);
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.routes-type-followup
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.authmodel-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.authmodel-description
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-authmodel-react-vue-comment-line1
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-authmodel-react-vue-comment-line2
const me = await fetch('/api/auth/me', { credentials: 'include' })
.then(r => r.json());
if (me.isAuthenticated) {
console.log(me.userName, me.roles);
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.cors-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.cors-description
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.record-shape-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.record-shape-description
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tableName": "account",
"permissions": 15,
"properties": {
"name": { "$type": 14, "value": "Acme Corporation" },
"revenue": { "$type": 8, "value": 5000000, "formattedValue": "$5,000,000.00" },
"createdon": { "$type": 2, "value": "2026-05-15T10:30:00Z", "formattedValue": "May 15, 2026 10:30 AM" },
"primarycontactid": { "$type": 6, "value": "9f8e7d6c-...", "name": "Jane Doe", "tableName": "contact" }
},
"formattedValues": { "revenue": "$5,000,000.00" },
"currency": { "isoCode": "USD", "symbol": "$", "precision": 2 }
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.record-shape-types
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.errors-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.errors-description
{
"type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
"title": "Bad Request",
"status": 400,
"detail": "The record could not be saved because a required column was missing."
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.reference-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.reference-intro
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-records-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-records-description
POST /api/table/{tableLogicalName}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-create-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const res = await fetch('/api/table/account', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tableName: 'account',
properties: {
name: { $type: 14, value: 'Acme Corporation' },
revenue: { $type: 8, value: 5000000 }
}
})
});
const { id } = await res.json();
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"responseName": "CreateResponse",
"outputParameters": {},
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
GET /api/table/{tableLogicalName}/{recordId}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-retrieve-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const record = await fetch(
'/api/table/account/a1b2c3d4-e5f6-7890-abcd-ef1234567890?columns=name,revenue',
{ credentials: 'include' }
).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tableName": "account",
"permissions": 15,
"properties": {
"name": { "$type": 14, "value": "Acme Corporation" },
"revenue": { "$type": 8, "value": 5000000, "formattedValue": "$5,000,000.00" }
},
"formattedValues": { "revenue": "$5,000,000.00" },
"currency": { "isoCode": "USD", "symbol": "$", "precision": 2 }
}
PATCH /api/table/{tableLogicalName}/{recordId}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-update-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/table/account/a1b2c3d4-e5f6-7890-abcd-ef1234567890', {
method: 'PATCH',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tableName: 'account',
properties: { revenue: { $type: 8, value: 6500000 } }
})
});
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "responseName": "UpdateResponse", "outputParameters": {} }
DELETE /api/table/{tableLogicalName}/{recordId}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-delete-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/table/account/a1b2c3d4-e5f6-7890-abcd-ef1234567890', {
method: 'DELETE',
credentials: 'include'
});
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "responseName": "DeleteResponse", "outputParameters": {} }
GET /api/retrieveMultiple?fetchXml=…
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-retrieve-multiple-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const fetchXml = `<fetch><entity name="account">
<attribute name="name" /><attribute name="revenue" />
<order attribute="name" />
</entity></fetch>`;
const result = await fetch(
'/api/retrieveMultiple?fetchXml=' + encodeURIComponent(fetchXml),
{ credentials: 'include' }
).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"pagingInfo": { "totalRecordCount": 42, "pagingCookie": "<cookie page=…>", "pageNumber": 1 },
"tableRecords": [
{
"id": "a1b2c3d4-…",
"tableName": "account",
"permissions": 1,
"properties": { "name": { "$type": 14, "value": "Acme Corporation" } },
"formattedValues": {}
}
]
}
POST /api/executeMultiple?returnResponses=true|false
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-execute-multiple-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/executeMultiple?returnResponses=true', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify([
{ $type: 'CreateRequest', record: { tableName: 'contact',
properties: { lastname: { $type: 14, value: 'Doe' } } } },
{ $type: 'DeleteRequest', record: { tableName: 'account', id: 'old-guid' } }
])
});
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
[
{ "$type": "CreateResponse", "responseName": "CreateResponse", "outputParameters": {}, "id": "new-guid" },
{ "$type": "DeleteResponse", "responseName": "DeleteResponse", "outputParameters": {} }
]
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-grids-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-grids-description
POST /api/grids/data
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-grid-data-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const page = await fetch('/api/grids/data', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
viewId: '00000000-0000-0000-0000-000000000001',
searchText: 'acme',
sorts: [{ columnName: 'name', descending: false }],
pageNumber: 1,
pageSize: 50
})
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"pagingInfo": { "totalRecordCount": 2, "pageNumber": 1 },
"tableRecords": [ { "id": "a1b2c3d4-…", "tableName": "account",
"properties": { "name": { "$type": 14, "value": "Acme Corporation" } } } ],
"columns": [
{ "columnName": "name", "displayName": "Name", "type": 14, "isSortable": true, "isPrimaryName": true }
],
"tablePermissions": 15
}
POST /api/charts/data
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-chart-data-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const chart = await fetch('/api/charts/data', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
viewId: '00000000-0000-0000-0000-000000000002',
labelColumn: 'statuscode',
valueColumn: 'count',
singleSeriesLabel: 'Accounts by Status'
})
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"data": {
"labels": ["Active", "Inactive"],
"datasets": [ { "label": "Accounts by Status", "data": [ { "value": 25 }, { "value": 8 } ] } ]
}
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-metadata-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-metadata-description
GET /api/tableMetadata/{tableLogicalName}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-table-metadata-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const meta = await fetch('/api/tableMetadata/account', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"tableName": "account",
"objectTypeCode": 1,
"primaryIdColumn": "accountid",
"primaryNameColumn": "name",
"isIntersect": false,
"columns": [ { "$type": 14, "columnName": "name", "displayName": "Name", "maxLength": 160 } ],
"oneToMany": [ { "relationshipName": "account_contacts", "referencingEntity": "contact" } ],
"manyToOne": [],
"manyToMany": []
}
GET /api/permissions/table/{tableLogicalName}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-table-permissions-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const mask = await fetch('/api/permissions/table/account', { credentials: 'include' })
.then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-permissions-mask-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
15
GET /api/viewMetadata/{viewId}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-view-metadata-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const view = await fetch('/api/viewMetadata/00000000-0000-0000-0000-000000000001',
{ credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"id": "00000000-0000-0000-0000-000000000001",
"name": "All Accounts",
"tableName": "account",
"isDefault": true,
"fetchXml": "<fetch>…</fetch>",
"columns": [ { "columnName": "name", "displayName": "Name", "width": 300 } ]
}
GET /api/viewMetadata/{tableLogicalName}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-views-for-table-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const views = await fetch('/api/viewMetadata/account', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
[
{ "id": "0000…0001", "name": "All Accounts", "isDefault": true, "tableName": "account" },
{ "id": "0000…0002", "name": "Active Accounts", "isDefault": false, "tableName": "account" }
]
GET /api/organizationSettings
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-organization-settings-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const settings = await fetch('/api/organizationSettings', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"defaultCurrency": { "isoCode": "USD", "symbol": "$", "precision": 2 },
"blockedFileExtensions": ["exe", "bat", "js"],
"maxUploadFileSizeInBytes": 10485760
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-files-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-files-description
GET /api/files/{tableLogicalName}/{recordId}/{columnName}?includeData=…
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-file-info-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const file = await fetch(
'/api/files/account/a1b2c3d4-…/new_attachment?includeData=true',
{ credentials: 'include' }
).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"fileName": "contract.pdf",
"fileSizeInBytes": 245678,
"fileData": "JVBERi0xLjQKJeLjz9M…"
}
POST /api/files/{tableLogicalName}/{columnName}/batch?includeData=…
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-files-batch-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const files = await fetch('/api/files/account/new_attachment/batch?includeData=false', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(['a1b2c3d4-…', 'b2c3d4e5-…'])
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
[
{ "fileName": "contract.pdf", "fileSizeInBytes": 245678, "fileData": null },
{ "fileName": "invoice.docx", "fileSizeInBytes": 89456, "fileData": null }
]
POST /api/files/createFileArchive
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-file-archive-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-archive-default-comment
const blob = await fetch('/api/files/createFileArchive', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
tableName: 'account',
columnName: 'new_attachment',
recordIds: ['a1b2c3d4-…', 'b2c3d4e5-…']
})
}).then(r => r.blob());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-archive-response-format-comment
{
"fileName": "account-files.zip",
"contentType": "application/zip",
"data": "UEsDBBQAAAAIAP2t…"
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-localization-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-localization-description
GET /api/localizedStrings/{culture}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-localized-strings-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const strings = await fetch('/api/localizedStrings/fr-fr', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"app": { "navigation": { "home": "Accueil" } },
"tables": { "account": { "columns": { "name": { "label": "Nom du compte" } } } }
}
GET /localizations/version
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-loc-version-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const manifest = await fetch('/localizations/version').then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "supportedLocales": ["en-us", "fr-fr", "de-de"] }
GET /localizations/{locale}/thumbprints
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-loc-thumbprints-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const thumbs = await fetch('/localizations/fr-fr/thumbprints').then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"bundle": "a3f5e8c2d",
"tables": { "account": "b7f2d9e1a", "contact": "c4f8a1b3e" },
"views": { "550e8400e29b41d4a716446655440000": "e2f4b8d1c" }
}
GET /localizations/default/{filename} · /tables/{tableName}/{filename} · /views/{viewId}/{filename}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-loc-bundles-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-loc-bundles-filename-comment
const bundle = await fetch('/localizations/tables/account/fr-fr.b7f2d9e1a.json')
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"tables": { "account": { "label": "Compte", "columns": { "name": { "label": "Nom du compte" } } } },
"choices": { "account_industrycode": { "1": "Fabrication", "2": "Services" } }
}
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-culture-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-culture-description
GET /Culture/{culture}?redirectUri=…
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-culture-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-culture-fullpage-comment
window.location.href = '/Culture/fr-fr?redirectUri=' + encodeURIComponent('/dashboard');
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-culture-response-line1
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-culture-response-line2
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-admin-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-admin-description
GET /api/caches
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-caches-list-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const names = await fetch('/api/caches', { credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
["TableMetadataCache", "ViewMetadataCache", "CurrencyCache"]
POST /api/caches/clear
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-caches-clear-all-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const results = await fetch('/api/caches/clear', { method: 'POST', credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
[
{ "name": "TableMetadataCache", "succeeded": true, "error": null, "elapsedMs": 45 },
{ "name": "ViewMetadataCache", "succeeded": false, "error": "Timed out", "elapsedMs": 5000 }
]
POST /api/caches/{cacheName}/clear
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-cache-clear-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const result = await fetch('/api/caches/TableMetadataCache/clear',
{ method: 'POST', credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "name": "TableMetadataCache", "succeeded": true, "error": null, "elapsedMs": 132 }
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-auth-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-auth-description
POST /api/auth/login
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-login-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/login', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@example.com', password: 'P@ssw0rd!', rememberMe: true })
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-login-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0 }
POST /api/auth/login/2fa
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-login-2fa-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { success } = await fetch('/api/auth/login/2fa', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ code: '123456', rememberMachine: false })
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true }
POST /api/auth/logout
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-logout-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/auth/logout', { method: 'POST', credentials: 'include' });
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-logout-response-comment
POST /api/auth/register
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-register-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/register', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'newuser@example.com', password: 'P@ssw0rd!' })
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-register-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0 }
POST /api/auth/forgot-password
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-forgot-password-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/auth/forgot-password', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@example.com' })
});
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-forgotpw-response-comment
POST /api/auth/reset-password
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-reset-password-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const res = await fetch('/api/auth/reset-password', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@example.com', code: '<token-from-email>', newPassword: 'N3wP@ss!' })
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-resetpw-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0, "errors": [] }
POST /api/auth/confirm-email
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-confirm-email-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { success } = await fetch('/api/auth/confirm-email', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ userId: '550e8400-…', code: '<token-from-email>' })
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true }
POST /api/auth/resend-email-confirmation
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-resend-email-confirmation-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/auth/resend-email-confirmation', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@example.com' })
});
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-resend-confirmation-response-comment
GET /api/auth/options
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-auth-options-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const options = await fetch('/api/auth/options').then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"localAccountsEnabled": true,
"externalProviders": [
{ "name": "Microsoft", "displayName": "Microsoft" },
{ "name": "Google", "displayName": "Sign in with Google" },
{ "name": "Facebook", "displayName": "Facebook" }
]
}
GET /api/auth/external-login?provider=…&returnUrl=…
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-external-login-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-external-fullpage-comment
window.location.href =
'/api/auth/external-login?provider=Microsoft&returnUrl=' + encodeURIComponent('/dashboard');
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-external-response-comment
GET /api/auth/external-login/pending
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-external-login-pending-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const res = await fetch('/api/auth/external-login/pending', { credentials: 'include' });
const pending = res.status === 204 ? null : await res.json();
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"loginProvider": "Microsoft",
"providerDisplayName": "Microsoft",
"identityEmail": "user@company.com",
"requiresChoice": false,
"candidates": []
}
POST /api/auth/external-login/confirm
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-external-login-confirm-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/external-login/confirm', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'user@company.com' })
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-external-confirm-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0, "errors": [] }
POST /api/auth/external-login/select
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-external-login-select-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/external-login/select', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ kind: 1 }) // components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-external-select-kind-comment
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0, "errors": [] }
GET /api/auth/me
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-me-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const me = await fetch('/api/auth/me', { credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"isAuthenticated": true,
"userId": "550e8400-…",
"userName": "user@example.com",
"email": "user@example.com",
"roles": ["Member"],
"tableName": "contact",
"altIdentityTableName": "systemuser",
"altIdentityUserId": "660e8400-…"
}
POST /api/auth/switch-identity
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-switch-identity-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/switch-identity', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: '{}'
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-switch-identity-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0 }
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-manage-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.grp-manage-description
GET /api/auth/manage/profile
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-profile-get-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const profile = await fetch('/api/auth/manage/profile', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"firstName": "John", "lastName": "Doe", "mobilePhone": "+1-555-0123",
"email": "john.doe@example.com",
"isEmailConfirmed": true, "hasPassword": true, "isTwoFactorEnabled": false, "isReadOnly": false
}
POST /api/auth/manage/profile
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-profile-update-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
await fetch('/api/auth/manage/profile', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ firstName: 'Jane', lastName: 'Smith', mobilePhone: '+1-555-9876' })
});
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-profile-update-response-comment
POST /api/auth/manage/password/set
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-password-set-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const res = await fetch('/api/auth/manage/password/set', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ newPassword: 'N3wP@ss!' })
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true, "errors": [] }
POST /api/auth/manage/password/change
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-password-change-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/manage/password/change', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ oldPassword: 'Old!', newPassword: 'N3wP@ss!' })
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-password-change-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0, "errors": [] }
POST /api/auth/manage/email/change
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-email-change-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/manage/email/change', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ newEmail: 'new@example.com' })
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-email-change-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0 }
POST /api/auth/manage/email/send-confirmation
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-email-send-confirmation-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { sent } = await fetch('/api/auth/manage/email/send-confirmation',
{ method: 'POST', credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "sent": true }
GET /api/auth/manage/2fa
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-twofactor-status-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const status = await fetch('/api/auth/manage/2fa', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "hasAuthenticator": true, "is2faEnabled": true, "isMachineRemembered": false, "recoveryCodesLeft": 8 }
GET /api/auth/manage/authenticator/setup
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-authenticator-setup-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const setup = await fetch('/api/auth/manage/authenticator/setup', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"sharedKey": "abcd efgh ijkl mnop",
"authenticatorUri": "otpauth://totp/PowerPortalsPro:user@example.com?secret=ABCD…&issuer=PowerPortalsPro"
}
POST /api/auth/manage/authenticator/verify
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-authenticator-verify-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const res = await fetch('/api/auth/manage/authenticator/verify', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ code: '123456' })
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true, "recoveryCodes": ["ABC123DEF456", "GHI789JKL012", "…"] }
POST /api/auth/manage/authenticator/reset
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-authenticator-reset-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { success } = await fetch('/api/auth/manage/authenticator/reset',
{ method: 'POST', credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true }
POST /api/auth/manage/2fa/disable
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-twofactor-disable-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { success } = await fetch('/api/auth/manage/2fa/disable',
{ method: 'POST', credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true }
POST /api/auth/manage/2fa/recovery-codes/generate
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-recovery-codes-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { recoveryCodes } = await fetch('/api/auth/manage/2fa/recovery-codes/generate',
{ method: 'POST', credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "recoveryCodes": ["ABC123DEF456", "GHI789JKL012", "…"] }
POST /api/auth/manage/2fa/forget-browser
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-forget-browser-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { success } = await fetch('/api/auth/manage/2fa/forget-browser',
{ method: 'POST', credentials: 'include' }).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true }
GET /api/auth/manage/external-logins
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-external-logins-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const logins = await fetch('/api/auth/manage/external-logins', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"currentLogins": [
{ "loginProvider": "Microsoft", "providerKey": "oid-…", "providerDisplayName": "Microsoft" }
]
}
GET /api/auth/manage/login-info
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-login-info-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const info = await fetch('/api/auth/manage/login-info', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"externalLogins": [ { "loginProvider": "Microsoft", "providerKey": "oid-…", "providerDisplayName": "Microsoft" } ],
"hasLocalPassword": true
}
GET /api/auth/manage/external-logins/link?provider=…
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-link-external-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-link-external-fullpage-comment
window.location.href =
'/api/auth/manage/external-logins/link?provider=Google&returnUrl=' + encodeURIComponent('/account');
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-link-external-response-comment
GET /api/auth/manage/external-logins/link/callback
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-link-external-callback-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-link-external-callback-request-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-link-external-callback-response-comment
POST /api/auth/manage/external-logins/remove
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-remove-external-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { success } = await fetch('/api/auth/manage/external-logins/remove', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ loginProvider: 'Microsoft', providerKey: 'oid-…' })
}).then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "success": true }
GET /api/auth/manage/personal-data
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-personal-data-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const data = await fetch('/api/auth/manage/personal-data', { credentials: 'include' })
.then(r => r.json());
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{
"personalData": { "Id": "550e8400-…", "Email": "john.doe@example.com" },
"externalLogins": { "Microsoft": "oid-…" }
}
POST /api/auth/manage/personal-data/delete
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.ep-personal-data-delete-desc
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-request
const { result } = await fetch('/api/auth/manage/personal-data/delete', {
method: 'POST',
credentials: 'include',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ password: 'CurrentP@ss!' }) // components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-personal-data-delete-password-comment
}).then(r => r.json());
// components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.snippet-personal-data-delete-result-comment
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.label-response
{ "result": 0 }
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.seealso-title
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.seealso-description
components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.seealso-service-link — components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.seealso-service-notecomponents.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.seealso-systemuser-link — components.PowerPortalsPro.Demo.Client.Customizations.Pages.ClientApi.ClientApiPage.seealso-systemuser-note
