diff --git a/package-lock.json b/package-lock.json index 10cb89ee8..58f24b5ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6364,7 +6364,8 @@ }, "node_modules/d3-sankey/node_modules/internmap": { "version": "1.0.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" }, "node_modules/d3-scale": { "version": "4.0.2", diff --git a/src/apim.design.module.ts b/src/apim.design.module.ts index fe7bcab89..bd50197db 100644 --- a/src/apim.design.module.ts +++ b/src/apim.design.module.ts @@ -36,6 +36,8 @@ import { ResetPasswordDesignModule } from "./components/users/reset-password/res import { ConfirmPasswordDesignModule } from "./components/users/confirm-password/confirmPassword.design.module"; import { HelpModule } from "./components/help"; import { ChangePasswordDesignModule } from "./components/users/change-password/changePassword.design.module"; +import { ApplicationListDesignModule } from "./components/applications/application-list/applicationList.design.module"; +import { ApplicationDetailsDesignModule } from "./components/applications/application-details/applicationDetails.design.module"; import { TenantService } from "./services/tenantService"; import { ValidationSummaryDesignModule } from "./components/users/validation-summary/validationSummary.design.module"; import { BackendService } from "./services/backendService"; @@ -79,6 +81,8 @@ export class ApimDesignModule implements IInjectorModule { injector.bindModule(new ResetPasswordDesignModule()); injector.bindModule(new ConfirmPasswordDesignModule()); injector.bindModule(new ChangePasswordDesignModule()); + injector.bindModule(new ApplicationListDesignModule()) + injector.bindModule(new ApplicationDetailsDesignModule()); injector.bindModule(new ValidationSummaryDesignModule()); injector.bindModule(new RoleBasedSecurityDesignModule()); injector.bindSingleton("app", App); diff --git a/src/apim.publish.module.ts b/src/apim.publish.module.ts index 7494f6f58..1b0362939 100644 --- a/src/apim.publish.module.ts +++ b/src/apim.publish.module.ts @@ -27,6 +27,8 @@ import { IdentityService } from "./services/identityService"; import { ConfirmPasswordPublishModule } from "./components/users/confirm-password/confirmPassword.publish.module"; import { ChangePasswordPublishModule } from "./components/users/change-password/changePassword.publish.module"; import { ReportsPublishModule } from "./components/reports/reports.publish.module"; +import { ApplicationListPublishModule } from "./components/applications/application-list/applicationList.publish.module"; +import { ApplicationDetailsPublishModule } from "./components/applications/application-details/applicationDetails.publish.module"; import { ResetPasswordPublishModule } from "./components/users/reset-password/resetPassword.publish.module"; import { ValidationSummaryPublishModule } from "./components/users/validation-summary/validationSummary.publish.module"; import { BackendService } from "./services/backendService"; @@ -71,6 +73,8 @@ export class ApimPublishModule implements IInjectorModule { injector.bindModule(new ConfirmPasswordPublishModule()); injector.bindModule(new ChangePasswordPublishModule()); injector.bindModule(new ReportsPublishModule()); + injector.bindModule(new ApplicationListPublishModule()); + injector.bindModule(new ApplicationDetailsPublishModule()); injector.bindModule(new ValidationSummaryPublishModule()); injector.bindModule(new CustomHtmlPublishModule()); injector.bindModule(new CustomWidgetPublishModule()); diff --git a/src/apim.runtime.module.ts b/src/apim.runtime.module.ts index 2aae19373..0a8c42241 100644 --- a/src/apim.runtime.module.ts +++ b/src/apim.runtime.module.ts @@ -91,6 +91,7 @@ import { RuntimeStaticDataProvider } from "./services/runtimeStaticDataProvider" import { RequestRetryStrategy } from "./clients/retryStrategy/requestRetryStrategy"; import { TraceClick } from "./bindingHandlers/traceClick"; import { GraphqlService } from "./services/graphqlService"; +import { ApplicationService } from "./services/applicationService"; import { ListOfApisRuntimeModule } from "./components/apis/list-of-apis/listOfApis.runtime.module"; import { ApiProductsRuntimeModule } from "./components/apis/api-products/apiProducts.runtime.module"; import { ProductListRuntimeModule } from "./components/products/product-list/productList.runtime.module"; @@ -112,6 +113,8 @@ import { ChangePasswordRuntimeModule } from "./components/users/change-password/ import { ConfirmPasswordRuntimeModule } from "./components/users/confirm-password/confirmPassword.runtime.module"; import { SubscriptionsRuntimeModule } from "./components/users/subscriptions/subscriptions.runtime.module"; import { ReportsRuntimeModule } from "./components/reports/reports.runtime.module"; +import { ApplicationListRuntimeModule } from "./components/applications/application-list/applicationList.runtime.module"; +import { ApplicationDetailsRuntimeModule } from "./components/applications/application-details/applicationDetails.runtime.module"; import { ValidationSummaryRuntimeModule } from "./components/users/validation-summary/validationSummary.runtime.module"; import { ClientLogger } from "./logging/clientLogger"; @@ -145,6 +148,7 @@ export class ApimRuntimeModule implements IInjectorModule { injector.bind("fileInput", FileInput); injector.bind("apiService", ApiService); injector.bind("graphqlService", GraphqlService); + injector.bind("applicationService", ApplicationService); injector.bind("tagService", TagService); injector.bind("productService", ProductService); injector.bind("analyticsService", AnalyticsService); @@ -214,6 +218,8 @@ export class ApimRuntimeModule implements IInjectorModule { injector.bindModule(new ConfirmPasswordRuntimeModule()); injector.bindModule(new SubscriptionsRuntimeModule()); injector.bindModule(new ReportsRuntimeModule()); + injector.bindModule(new ApplicationListRuntimeModule()); + injector.bindModule(new ApplicationDetailsRuntimeModule()); injector.bindModule(new ValidationSummaryRuntimeModule()); if (process.env.NODE_ENV === staticDataEnvironment) { diff --git a/src/components/applications/application-details/applicationDetails.design.module.ts b/src/components/applications/application-details/applicationDetails.design.module.ts new file mode 100644 index 000000000..4559c8dae --- /dev/null +++ b/src/components/applications/application-details/applicationDetails.design.module.ts @@ -0,0 +1,55 @@ +import { IInjectorModule, IInjector } from "@paperbits/common/injection"; +import { IWidgetService } from "@paperbits/common/widgets"; +import { KnockoutComponentBinder } from "@paperbits/core/ko"; +import { ReactComponentBinder } from "@paperbits/react/bindings"; +import { ComponentFlow } from "@paperbits/common/components"; +import { Logger } from "@paperbits/common/logging"; +import { ISettingsProvider } from "@paperbits/common/configuration"; +import { ApplicationDetailsHandlers } from "./applicationDetailsHandlers"; +import { ApplicationDetailsModel } from "./applicationDetailsModel"; +import { ApplicationDetailsModelBinder } from "./applicationDetailsModelBinder"; +import { ApplicationDetailsViewModel } from "./react/ApplicationDetailsViewModel"; +import { ApplicationDetailsViewModelBinder } from "./applicationDetailsViewModelBinder"; +import { ApplicationDetailsEditor } from "./ko/applicationDetailsEditor"; +import { Utils } from "../../../utils"; +import { FEATURE_CLIENT_APPLICATIONS } from "../../../constants"; + +export class ApplicationDetailsDesignModule implements IInjectorModule { + public register(injector: IInjector): void { + injector.bind("applicationDetailsEditor", ApplicationDetailsEditor); + injector.bindSingleton("applicationDetailsModelBinder", ApplicationDetailsModelBinder); + injector.bindSingleton("applicationDetailsViewModelBinder", ApplicationDetailsViewModelBinder) + injector.bindSingleton("applicationDetailsHandlers", ApplicationDetailsHandlers); + + const widgetService = injector.resolve("widgetService"); + const logger = injector.resolve("logger"); + const settingsProvider = injector.resolve("settingsProvider"); + + Utils.getFeatureValueOrNull(FEATURE_CLIENT_APPLICATIONS, settingsProvider, logger) + .then((isEnabled) => { + if (isEnabled) { + widgetService.registerWidget("application-details", { + modelDefinition: ApplicationDetailsModel, + componentBinder: ReactComponentBinder, + componentDefinition: ApplicationDetailsViewModel, + modelBinder: ApplicationDetailsModelBinder, + viewModelBinder: ApplicationDetailsViewModelBinder, + componentFlow: ComponentFlow.Block + }); + + widgetService.registerWidgetEditor("application-details", { + displayName: "Application: Details", + category: "Applications", + iconClass: "widget-icon widget-icon-api-management", + componentBinder: KnockoutComponentBinder, + componentDefinition: ApplicationDetailsEditor, + handlerComponent: ApplicationDetailsHandlers + }); + } + }) + .catch((error) => { + logger.trackError(error, { message: "Failed to get feature value for client applications in ApplicationDetailsDesignModule." }); + } + ); + } +} \ No newline at end of file diff --git a/src/components/applications/application-details/applicationDetails.publish.module.ts b/src/components/applications/application-details/applicationDetails.publish.module.ts new file mode 100644 index 000000000..a5d4c39a0 --- /dev/null +++ b/src/components/applications/application-details/applicationDetails.publish.module.ts @@ -0,0 +1,42 @@ +import { IInjectorModule, IInjector } from "@paperbits/common/injection"; +import { IWidgetService } from "@paperbits/common/widgets"; +import { ReactComponentBinder } from "@paperbits/react/bindings"; +import { ComponentFlow } from "@paperbits/common/components"; +import { Logger } from "@paperbits/common/logging"; +import { ISettingsProvider } from "@paperbits/common/configuration"; +import { ApplicationDetailsModelBinder } from "./applicationDetailsModelBinder"; +import { ApplicationDetailsViewModelBinder } from "./applicationDetailsViewModelBinder"; +import { ApplicationDetailsModel } from "./applicationDetailsModel"; +import { ApplicationDetailsViewModel } from "./react/ApplicationDetailsViewModel"; +import { Utils } from "../../../utils"; +import { FEATURE_CLIENT_APPLICATIONS } from "../../../constants"; + + +export class ApplicationDetailsPublishModule implements IInjectorModule { + public register(injector: IInjector): void { + injector.bindToCollection("modelBinders", ApplicationDetailsModelBinder); + injector.bindToCollection("viewModelBinders", ApplicationDetailsViewModelBinder); + + const widgetService = injector.resolve("widgetService"); + const logger = injector.resolve("logger"); + const settingsProvider = injector.resolve("settingsProvider"); + + Utils.getFeatureValueOrNull(FEATURE_CLIENT_APPLICATIONS, settingsProvider, logger) + .then((isEnabled) => { + if (isEnabled) { + widgetService.registerWidget("application-details", { + modelDefinition: ApplicationDetailsModel, + componentBinder: ReactComponentBinder, + componentDefinition: ApplicationDetailsViewModel, + modelBinder: ApplicationDetailsModelBinder, + viewModelBinder: ApplicationDetailsViewModelBinder, + componentFlow: ComponentFlow.Block + }); + } + }) + .catch((error) => { + logger.trackError(error, { message: "Failed to get feature value for client applications in ApplicationDetailsPublishModule." }); + } + ); + } +} \ No newline at end of file diff --git a/src/components/applications/application-details/applicationDetails.runtime.module.ts b/src/components/applications/application-details/applicationDetails.runtime.module.ts new file mode 100644 index 000000000..971095b0c --- /dev/null +++ b/src/components/applications/application-details/applicationDetails.runtime.module.ts @@ -0,0 +1,10 @@ +import { IInjector, IInjectorModule } from "@paperbits/common/injection"; +import { registerCustomElement } from "@paperbits/react/customElements"; +import { ApplicationsDetailsRuntime } from "./react/runtime/ApplicationsDetailsRuntime"; + +export class ApplicationDetailsRuntimeModule implements IInjectorModule { + public register(injector: IInjector): void { + injector.bind("applicationsDetailsRuntime", ApplicationsDetailsRuntime); + registerCustomElement(ApplicationsDetailsRuntime, "fui-application-details", injector); + } +} \ No newline at end of file diff --git a/src/components/applications/application-details/applicationDetailsContract.ts b/src/components/applications/application-details/applicationDetailsContract.ts new file mode 100644 index 000000000..6cc2af87d --- /dev/null +++ b/src/components/applications/application-details/applicationDetailsContract.ts @@ -0,0 +1,18 @@ +import { Contract } from "@paperbits/common"; +import { HyperlinkContract } from "@paperbits/common/editing"; +import { LocalStyles } from "@paperbits/common/styles"; + +/** + * Application details widget configuration. + */ +export interface ApplicationDetailsContract extends Contract { + /** + * Link to a page that contains product details. + */ + detailsPageHyperlink?: HyperlinkContract; + + /** + * Widget local styles. + */ + styles?: LocalStyles; +} diff --git a/src/components/applications/application-details/applicationDetailsHandlers.ts b/src/components/applications/application-details/applicationDetailsHandlers.ts new file mode 100644 index 000000000..bf21aa775 --- /dev/null +++ b/src/components/applications/application-details/applicationDetailsHandlers.ts @@ -0,0 +1,8 @@ +import { IWidgetHandler } from "@paperbits/common/editing"; +import { ApplicationDetailsModel } from "./applicationDetailsModel"; + +export class ApplicationDetailsHandlers implements IWidgetHandler { + public async getWidgetModel(): Promise { + return new ApplicationDetailsModel(); + } +} \ No newline at end of file diff --git a/src/components/applications/application-details/applicationDetailsModel.ts b/src/components/applications/application-details/applicationDetailsModel.ts new file mode 100644 index 000000000..b87346653 --- /dev/null +++ b/src/components/applications/application-details/applicationDetailsModel.ts @@ -0,0 +1,14 @@ +import { HyperlinkModel } from "@paperbits/common/permalinks"; +import { LocalStyles } from "@paperbits/common/styles"; + +export class ApplicationDetailsModel { + /** + * Link to a page that contains product details. + */ + public detailsPageHyperlink: HyperlinkModel; + + /** + * Widget local styles. + */ + public styles: LocalStyles = {}; +} diff --git a/src/components/applications/application-details/applicationDetailsModelBinder.ts b/src/components/applications/application-details/applicationDetailsModelBinder.ts new file mode 100644 index 000000000..2075b11b1 --- /dev/null +++ b/src/components/applications/application-details/applicationDetailsModelBinder.ts @@ -0,0 +1,35 @@ +import { Contract } from "@paperbits/common"; +import { IModelBinder } from "@paperbits/common/editing"; +import { IPermalinkResolver } from "@paperbits/common/permalinks"; +import { ApplicationDetailsModel } from "./applicationDetailsModel"; +import { ApplicationDetailsContract } from "./applicationDetailsContract"; + +export class ApplicationDetailsModelBinder implements IModelBinder { + constructor(private readonly permalinkResolver: IPermalinkResolver) { } + + public async contractToModel(contract: ApplicationDetailsContract): Promise { + const model = new ApplicationDetailsModel(); + model.styles = contract.styles ?? {}; + + if (contract.detailsPageHyperlink) { + model.detailsPageHyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.detailsPageHyperlink); + } + + return model; + } + + public modelToContract(model: ApplicationDetailsModel): Contract { + const contract: ApplicationDetailsContract = { + type: "application-details", + detailsPageHyperlink: model.detailsPageHyperlink + ? { + target: model.detailsPageHyperlink.target, + targetKey: model.detailsPageHyperlink.targetKey + } + : null, + styles: model.styles + }; + + return contract; + } +} diff --git a/src/components/applications/application-details/applicationDetailsViewModelBinder.ts b/src/components/applications/application-details/applicationDetailsViewModelBinder.ts new file mode 100644 index 000000000..fb212f519 --- /dev/null +++ b/src/components/applications/application-details/applicationDetailsViewModelBinder.ts @@ -0,0 +1,43 @@ +import { ViewModelBinder, WidgetState } from "@paperbits/common/widgets"; +import { StyleCompiler } from "@paperbits/common/styles"; +import { ISiteService } from "@paperbits/common/sites"; +import { Logger } from "@paperbits/common/logging"; +import { ApplicationDetailsModel } from "./applicationDetailsModel"; +import { ApplicationDetailsViewModel } from "./react/ApplicationDetailsViewModel"; +import { isRedesignEnabledSetting } from "../../../constants"; + +export class ApplicationDetailsViewModelBinder implements ViewModelBinder { + constructor( + private readonly styleCompiler: StyleCompiler, + private readonly siteService: ISiteService, + private readonly logger: Logger + ) { } + + public stateToInstance(state: WidgetState, componentInstance: ApplicationDetailsViewModel): void { + componentInstance.setState(prevState => ({ + isRedesignEnabled: state.isRedesignEnabled, + styles: state.styles, + detailsPageUrl: state.detailsPageHyperlink + ? state.detailsPageHyperlink.href + : undefined + })); + } + + public async modelToState(model: ApplicationDetailsModel, state: WidgetState): Promise { + state.detailsPageHyperlink = model.detailsPageHyperlink; + + if (model.styles) { + state.styles = await this.styleCompiler.getStyleModelAsync(model.styles); + } + + let isRedesignEnabled = false; + + try { + isRedesignEnabled = !!(await this.siteService.getSetting(isRedesignEnabledSetting)); + } catch (error) { + this.logger?.trackError(error, { message: `Failed to get setting: ${isRedesignEnabledSetting} - ApplicationDetailsViewModelBinder` }); + } finally { + state.isRedesignEnabled = isRedesignEnabled; + } + } +} \ No newline at end of file diff --git a/src/components/applications/application-details/ko/applicationDetailsEditor.html b/src/components/applications/application-details/ko/applicationDetailsEditor.html new file mode 100644 index 000000000..de102c016 --- /dev/null +++ b/src/components/applications/application-details/ko/applicationDetailsEditor.html @@ -0,0 +1,16 @@ +
+
+ +
+ + +
+
+
\ No newline at end of file diff --git a/src/components/applications/application-details/ko/applicationDetailsEditor.ts b/src/components/applications/application-details/ko/applicationDetailsEditor.ts new file mode 100644 index 000000000..e328f9a45 --- /dev/null +++ b/src/components/applications/application-details/ko/applicationDetailsEditor.ts @@ -0,0 +1,40 @@ +import * as ko from "knockout"; +import { Component, OnMounted, Param, Event } from "@paperbits/common/ko/decorators"; +import { HyperlinkModel } from "@paperbits/common/permalinks"; +import { ApplicationDetailsModel } from "../applicationDetailsModel"; +import template from "./applicationDetailsEditor.html"; + +@Component({ + selector: "application-details-editor", + template: template +}) +export class ApplicationDetailsEditor { + public readonly hyperlink: ko.Observable; + public readonly hyperlinkTitle: ko.Computed; + + constructor() { + this.hyperlink = ko.observable(); + this.hyperlinkTitle = ko.computed(() => this.hyperlink() ? this.hyperlink().title : "Add a link..."); + } + + @Param() + public model: ApplicationDetailsModel; + + @Event() + public onChange: (model: ApplicationDetailsModel) => void; + + @OnMounted() + public async initialize(): Promise { + this.hyperlink(this.model.detailsPageHyperlink); + } + + private applyChanges(): void { + this.model.detailsPageHyperlink = this.hyperlink(); + this.onChange(this.model); + } + + public onHyperlinkChange(hyperlink: HyperlinkModel): void { + this.hyperlink(hyperlink); + this.applyChanges(); + } +} \ No newline at end of file diff --git a/src/components/applications/application-details/react/ApplicationDetailsViewModel.tsx b/src/components/applications/application-details/react/ApplicationDetailsViewModel.tsx new file mode 100644 index 000000000..b720fa4bd --- /dev/null +++ b/src/components/applications/application-details/react/ApplicationDetailsViewModel.tsx @@ -0,0 +1,22 @@ +import * as React from "react"; +import { StyleModel } from "@paperbits/common/styles"; + +export class ApplicationDetailsViewModel extends React.Component { + public state: { + isRedesignEnabled: boolean; + styles: StyleModel + }; + + constructor(props) { + super(props); + + this.state = {...props}; + } + + public render(): JSX.Element { + const data = JSON.stringify(this.state); + + return this.state.isRedesignEnabled + && ; + } +} diff --git a/src/components/applications/application-details/react/runtime/ApplicationDetails.tsx b/src/components/applications/application-details/react/runtime/ApplicationDetails.tsx new file mode 100644 index 000000000..1d3feff3c --- /dev/null +++ b/src/components/applications/application-details/react/runtime/ApplicationDetails.tsx @@ -0,0 +1,247 @@ +import * as React from "react"; +import { useEffect, useState } from "react"; +import { Logger } from "@paperbits/common/logging"; +import { + Button, + MessageBar, + MessageBarBody, + Popover, + PopoverSurface, + PopoverTrigger, + Spinner, + Table, + TableBody, + TableCell, + TableHeader, + TableHeaderCell, + TableRow, + Tooltip +} from "@fluentui/react-components"; +import { Copy16Regular } from "@fluentui/react-icons"; +import { UsersService } from "../../../../../services"; +import { ProductService } from "../../../../../services/productService"; +import { ApplicationService } from "../../../../../services/applicationService"; +import { Application } from "../../../../../models/application"; +import { EntraSecret } from "../../../../../models/entraSecret"; +import { Page } from "../../../../../models/page"; +import { Product } from "../../../../../models/product"; +import { ScrollableTableContainer } from "../../../../utils/react/ScrollableTableContainer"; +import { ApplicationsProducts } from "./ApplicationProducts"; + +const dateOptions: Intl.DateTimeFormatOptions = { + weekday: "long", + year: "numeric", + month: "long", + day: "numeric", +}; + +export const ApplicationDetails = ({ + usersService, + productService, + applicationService, + logger, + applicationName, + getProductReferenceUrl +}: { + usersService: UsersService, + applicationService: ApplicationService, + productService: ProductService, + logger: Logger, + applicationName: string, + getProductReferenceUrl: (productName: string) => string +}) => { + const [userId, setUserId] = useState(); + const [application, setApplication] = useState(); + const [products, setProducts] = useState(); + const [working, setWorking] = useState(true); + const [clientWorking, setClientWorking] = useState(false); + const [clientSecret, setClientSecret] = useState(); + const [popoverOpen, setPopoverOpen] = useState(false); + const [isCopied, setIsCopied] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + setWorking(true); + + initUser() + .then((userId) => { + setUserId(userId); + }); + + setError(null); + loadApplication(applicationName) + .then(setApplication) + .catch((error) => { + if (error.code === "Unauthorized") { + usersService.navigateToSignin(); + return; + } + + logger.trackError(error, { message: `Unable to load application ${applicationName}.` }); + }); + + loadApplicationProducts(applicationName) + .then((loadedProducts) => { + loadedProducts && setProducts(loadedProducts.value); + }) + .finally(() => setWorking(false)); + }, [usersService, applicationService, productService, applicationName]); + + const initUser = async (): Promise => { + return await usersService.ensureSignedIn(); + } + + const loadApplication = async (applicationName: string): Promise => { + let application: Application; + + try { + application = await applicationService.getApplication(userId, applicationName); + } catch (error) { + setError(`Unable to load application.`); + logger.trackError(error, { message: `Unable to load application ${applicationName}.` }); + } + + return application; + } + + const generateClientSecret = async (): Promise => { + let clientSecret: EntraSecret; + + try { + clientSecret = await applicationService.createNewSecret(userId, applicationName); + } catch (error) { + logger.trackError(error, { message: `Unable to generate client secret for application ${applicationName}.` }); + } + + return clientSecret; + } + + const loadApplicationProducts = async (applicationName: string): Promise> => { + let products: Page; + + try { + products = await applicationService.getApplicationProducts(userId, applicationName); + } catch (error) { + logger.trackError(error, { message: `Unable to load products for application ${applicationName}.` }); + } + + return products; + } + + if (working) { + return ( + + ); + } + + return ( + <> + {(error || !application) ? ( + + {error} + + ) : ( + <> +

{application.name}

+ Application + + + + To call the API, you will need to retrieve the OAuth token and call the API gateway endpoint.{` `} + View documentation + + + +
+

Application

+ + + + + Entra Application ID + Client Secret + Token URL + + + + + {application.entraApplicationId} + + + + + + +
+

New client secret

+

The secret is stored securely in Microsoft Entra ID. Rotate the secret before the expiration date for continued access. + Client secret is valid until {new Date(clientSecret?.entra.expiresAt).toLocaleDateString(undefined, dateOptions)}.

+

Client secret (only shown once)

+
+ {clientSecret?.entra.clientSecret} + + + +
+ + + The secret value is only shown once. Copy it at this time because it will not show again. + + + +
+
+
+
+ {application.entraTenantId && `https://login.microsoftonline.com/${application.entraTenantId}/oauth2/v2.0/token`} +
+
+
+
+ +
+ + )} + + ); +}; diff --git a/src/components/applications/application-details/react/runtime/ApplicationProducts.tsx b/src/components/applications/application-details/react/runtime/ApplicationProducts.tsx new file mode 100644 index 000000000..dfc27a981 --- /dev/null +++ b/src/components/applications/application-details/react/runtime/ApplicationProducts.tsx @@ -0,0 +1,119 @@ +import * as React from "react"; +import { useEffect, useState } from "react"; +import { Logger } from "@paperbits/common/logging"; +import { Spinner, Table, TableBody, TableCell, TableHeader, TableHeaderCell, TableRow } from "@fluentui/react-components"; +import { CheckmarkCircleFilled, ChevronDownRegular, ChevronRightRegular } from "@fluentui/react-icons"; +import { Product } from "../../../../../models/product"; +import { ProductService } from "../../../../../services/productService"; +import { ScrollableTableContainer } from "../../../../utils/react/ScrollableTableContainer"; +import { NoRecordsRow } from "../../../../utils/react/NoRecordsRow"; +import { MarkdownProcessor } from "../../../../utils/react/MarkdownProcessor"; + +const ProductRow = ({ + product, + getProductReferenceUrl +}: { + product: Product, + getProductReferenceUrl: (productName: string) => string +}) => { + const [isExpanded, setIsExpanded] = useState(false); + + return ( + <> + + + {isExpanded + ? setIsExpanded(!isExpanded)} style={{ marginRight: "10px" }} /> + : setIsExpanded(!isExpanded)} style={{ marginRight: "10px" }} /> + } + + {product.displayName} + + + {product.applicationSettings?.entra?.applicationId} + Approved {/* add actual value */} + + {isExpanded && ( +
+
+ Description +
+ Credential types +
Oauth and API key
+ Redirect URI (OAuth) +
{product.applicationSettings?.entra?.audience}
+ Product application ID (OAuth) +
{product.applicationSettings?.entra?.applicationId}
+
+
+ )} + + ) +} + +export const ApplicationsProducts = ({ + products, + productService, + logger, + getProductReferenceUrl +}: { + products: Product[], + productService: ProductService, + logger: Logger, + getProductReferenceUrl: (productName: string) => string +}) => { + const [loadedProducts, setLoadedProducts] = useState([]); + const [working, setWorking] = useState(true); + + useEffect(() => { + setWorking(true); + + if (products) { + products.forEach((product) => { + loadProduct(product.id) + .then((loadedProduct) => { + setLoadedProducts((prevProducts) => [...prevProducts, loadedProduct]); + }); + }); + } + }, [products, productService]); + + const loadProduct = async (productName: string): Promise => { + let product: Product; + + try { + product = await productService.getProduct(productName); + } catch (error) { + logger.trackError(error, { message: `Unable to load product ${productName}.` }); + } + + return product; + }; + + if (working) { + return ; + } + + return ( +
+

Products

+ + + + + Product name + Product application ID + Approval status + + + + {loadedProducts?.length > 0 + ? loadedProducts.map((product) => ) + : + } + +
+
+
+ ); +} diff --git a/src/components/applications/application-details/react/runtime/ApplicationsDetailsRuntime.tsx b/src/components/applications/application-details/react/runtime/ApplicationsDetailsRuntime.tsx new file mode 100644 index 000000000..6b3fbb0c0 --- /dev/null +++ b/src/components/applications/application-details/react/runtime/ApplicationsDetailsRuntime.tsx @@ -0,0 +1,77 @@ +import * as React from "react"; +import { FluentProvider } from "@fluentui/react-components"; +import { Resolve } from "@paperbits/react/decorators"; +import { Router } from "@paperbits/common/routing"; +import { Logger } from "@paperbits/common/logging"; +import { RouteHelper } from "../../../../../routing/routeHelper"; +import { ProductService } from "../../../../../services/productService"; +import { UsersService } from "../../../../../services"; +import { ApplicationService } from "../../../../../services/applicationService"; +import { fuiTheme } from "../../../../../constants"; +import { ApplicationDetails } from "./ApplicationDetails"; + +interface ApplicationsDetailsProps { + detailsPageUrl: string; +} + +interface ApplicationDetailsState { + applicationName?: string | null; +} + +export class ApplicationsDetailsRuntime extends React.Component { + @Resolve("usersService") + public usersService: UsersService; + + @Resolve("applicationService") + public applicationService: ApplicationService; + + @Resolve("productService") + public productService: ProductService; + + @Resolve("routeHelper") + public routeHelper: RouteHelper; + + @Resolve("router") + public router: Router; + + @Resolve("logger") + public logger: Logger; + + constructor(props) { + super(props); + + this.state = { applicationName: undefined }; + } + + componentDidMount() { + this.setApplicationName(); + this.router.addRouteChangeListener(this.setApplicationName.bind(this)); + } + + componentWillUnmount() { + this.router.removeRouteChangeListener(this.setApplicationName.bind(this)); + } + + setApplicationName() { + this.setState({ applicationName: this.routeHelper.getApplicationName() }); + } + + getProductReferenceUrl(productName: string): string { + return this.routeHelper.getProductReferenceUrl(productName, this.props.detailsPageUrl); + } + + render() { + return ( + + this.getProductReferenceUrl(productName)} + /> + + ); + } +} diff --git a/src/components/applications/application-list/applicationList.design.module.ts b/src/components/applications/application-list/applicationList.design.module.ts new file mode 100644 index 000000000..11d06625c --- /dev/null +++ b/src/components/applications/application-list/applicationList.design.module.ts @@ -0,0 +1,55 @@ +import { IInjectorModule, IInjector } from "@paperbits/common/injection"; +import { IWidgetService } from "@paperbits/common/widgets"; +import { KnockoutComponentBinder } from "@paperbits/core/ko"; +import { ReactComponentBinder } from "@paperbits/react/bindings"; +import { ComponentFlow } from "@paperbits/common/components"; +import { Logger } from "@paperbits/common/logging"; +import { ISettingsProvider } from "@paperbits/common/configuration"; +import { ApplicationListHandlers } from "./applicationListHandlers"; +import { ApplicationListModel } from "./applicationListModel"; +import { ApplicationListModelBinder } from "./applicationListModelBinder"; +import { ApplicationListViewModel } from "./react/ApplicationListViewModel"; +import { ApplicationListViewModelBinder } from "./applicationListViewModelBinder"; +import { ApplicationListEditor } from "./ko/applicationListEditor"; +import { Utils } from "../../../utils"; +import { FEATURE_CLIENT_APPLICATIONS } from "../../../constants"; + +export class ApplicationListDesignModule implements IInjectorModule { + public register(injector: IInjector): void { + injector.bind("applicationListEditor", ApplicationListEditor); + injector.bindSingleton("applicationListModelBinder", ApplicationListModelBinder); + injector.bindSingleton("applicationListViewModelBinder", ApplicationListViewModelBinder) + injector.bindSingleton("applicationListHandlers", ApplicationListHandlers); + + const widgetService = injector.resolve("widgetService"); + const logger = injector.resolve("logger"); + const settingsProvider = injector.resolve("settingsProvider"); + + Utils.getFeatureValueOrNull(FEATURE_CLIENT_APPLICATIONS, settingsProvider, logger) + .then((isEnabled) => { + if (isEnabled) { + widgetService.registerWidget("application-list", { + modelDefinition: ApplicationListModel, + componentBinder: ReactComponentBinder, + componentDefinition: ApplicationListViewModel, + modelBinder: ApplicationListModelBinder, + viewModelBinder: ApplicationListViewModelBinder, + componentFlow: ComponentFlow.Block + }); + + widgetService.registerWidgetEditor("application-list", { + displayName: "Application: List", + category: "Applications", + iconClass: "widget-icon widget-icon-api-management", + componentBinder: KnockoutComponentBinder, + componentDefinition: ApplicationListEditor, + handlerComponent: ApplicationListHandlers + }); + } + }) + .catch((error) => { + logger.trackError(error, { message: "Failed to get feature value for client applications in ApplicationListDesignModule." }); + } + ); + } +} \ No newline at end of file diff --git a/src/components/applications/application-list/applicationList.publish.module.ts b/src/components/applications/application-list/applicationList.publish.module.ts new file mode 100644 index 000000000..6209844a8 --- /dev/null +++ b/src/components/applications/application-list/applicationList.publish.module.ts @@ -0,0 +1,41 @@ +import { IInjectorModule, IInjector } from "@paperbits/common/injection"; +import { IWidgetService } from "@paperbits/common/widgets"; +import { ReactComponentBinder } from "@paperbits/react/bindings"; +import { ComponentFlow } from "@paperbits/common/components"; +import { Logger } from "@paperbits/common/logging"; +import { ISettingsProvider } from "@paperbits/common/configuration"; +import { ApplicationListModelBinder } from "./applicationListModelBinder"; +import { ApplicationListViewModelBinder } from "./applicationListViewModelBinder"; +import { ApplicationListModel } from "./applicationListModel"; +import { ApplicationListViewModel } from "./react/ApplicationListViewModel"; +import { Utils } from "../../../utils"; +import { FEATURE_CLIENT_APPLICATIONS } from "../../../constants"; + +export class ApplicationListPublishModule implements IInjectorModule { + public register(injector: IInjector): void { + injector.bindToCollection("modelBinders", ApplicationListModelBinder); + injector.bindToCollection("viewModelBinders", ApplicationListViewModelBinder); + + const widgetService = injector.resolve("widgetService"); + const logger = injector.resolve("logger"); + const settingsProvider = injector.resolve("settingsProvider"); + + Utils.getFeatureValueOrNull(FEATURE_CLIENT_APPLICATIONS, settingsProvider, logger) + .then((isEnabled) => { + if (isEnabled) { + widgetService.registerWidget("application-list", { + modelDefinition: ApplicationListModel, + componentBinder: ReactComponentBinder, + componentDefinition: ApplicationListViewModel, + modelBinder: ApplicationListModelBinder, + viewModelBinder: ApplicationListViewModelBinder, + componentFlow: ComponentFlow.Block + }); + } + }) + .catch((error) => { + logger.trackError(error, { message: "Failed to get feature value for client applications in ApplicationListPublishModule." }); + } + ); + } +} \ No newline at end of file diff --git a/src/components/applications/application-list/applicationList.runtime.module.ts b/src/components/applications/application-list/applicationList.runtime.module.ts new file mode 100644 index 000000000..d562fc034 --- /dev/null +++ b/src/components/applications/application-list/applicationList.runtime.module.ts @@ -0,0 +1,10 @@ +import { IInjector, IInjectorModule } from "@paperbits/common/injection"; +import { registerCustomElement } from "@paperbits/react/customElements"; +import { ApplicationsListRuntime } from "./react/runtime/ApplicationsListRuntime"; + +export class ApplicationListRuntimeModule implements IInjectorModule { + public register(injector: IInjector): void { + injector.bind("applicationsListRuntime", ApplicationsListRuntime); + registerCustomElement(ApplicationsListRuntime, "fui-application-list", injector); + } +} \ No newline at end of file diff --git a/src/components/applications/application-list/applicationListContract.ts b/src/components/applications/application-list/applicationListContract.ts new file mode 100644 index 000000000..e0fa65cf5 --- /dev/null +++ b/src/components/applications/application-list/applicationListContract.ts @@ -0,0 +1,28 @@ +import { Contract } from "@paperbits/common"; +import { HyperlinkContract } from "@paperbits/common/editing"; +import { LocalStyles } from "@paperbits/common/styles"; + +/** + * Application list widget configuration. + */ +export interface ApplicationListContract extends Contract { + /** + * Application list layout, e.g. "list", "dropdown". + */ + itemStyleView?: string; + + /** + * Link to a page that contains application details. + */ + detailsPageHyperlink?: HyperlinkContract; + + /** + * Indicates that view switching is allowed. + */ + allowViewSwitching: boolean; + + /** + * Widget local styles. + */ + styles?: LocalStyles; +} diff --git a/src/components/applications/application-list/applicationListHandlers.ts b/src/components/applications/application-list/applicationListHandlers.ts new file mode 100644 index 000000000..3fa9513ca --- /dev/null +++ b/src/components/applications/application-list/applicationListHandlers.ts @@ -0,0 +1,8 @@ +import { IWidgetHandler } from "@paperbits/common/editing"; +import { ApplicationListModel } from "./applicationListModel"; + +export class ApplicationListHandlers implements IWidgetHandler { + public async getWidgetModel(): Promise { + return new ApplicationListModel(); + } +} \ No newline at end of file diff --git a/src/components/applications/application-list/applicationListModel.ts b/src/components/applications/application-list/applicationListModel.ts new file mode 100644 index 000000000..b1db4da6c --- /dev/null +++ b/src/components/applications/application-list/applicationListModel.ts @@ -0,0 +1,28 @@ +import { HyperlinkModel } from "@paperbits/common/permalinks"; +import { LocalStyles } from "@paperbits/common/styles"; + +export class ApplicationListModel { + /** + * Application list layout, e.g. "list", "tiles". + */ + public layout?: string; + + /** + * Link to a page that contains application details. + */ + public detailsPageHyperlink: HyperlinkModel; + + /** + * Indicates that view switching is allowed. + */ + public allowViewSwitching: boolean; + + /** + * Widget local styles. + */ + public styles: LocalStyles = {}; + + constructor(layout: string = "list") { + this.layout = layout; + } +} diff --git a/src/components/applications/application-list/applicationListModelBinder.ts b/src/components/applications/application-list/applicationListModelBinder.ts new file mode 100644 index 000000000..01eba069a --- /dev/null +++ b/src/components/applications/application-list/applicationListModelBinder.ts @@ -0,0 +1,40 @@ +import { Contract } from "@paperbits/common"; +import { IModelBinder } from "@paperbits/common/editing"; +import { IPermalinkResolver } from "@paperbits/common/permalinks"; +import { ApplicationListModel } from "./applicationListModel"; +import { ApplicationListContract } from "./applicationListContract"; + +export class ApplicationListModelBinder implements IModelBinder { + constructor(private readonly permalinkResolver: IPermalinkResolver) { } + + public async contractToModel(contract: ApplicationListContract): Promise { + const model = new ApplicationListModel(); + + model.layout = contract.itemStyleView || "list"; + model.allowViewSwitching = contract.allowViewSwitching ?? true; + model.styles = contract.styles ?? {}; + + if (contract.detailsPageHyperlink) { + model.detailsPageHyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.detailsPageHyperlink); + } + + return model; + } + + public modelToContract(model: ApplicationListModel): Contract { + const contract: ApplicationListContract = { + type: "application-list", + itemStyleView: model.layout, + allowViewSwitching: model.allowViewSwitching, + detailsPageHyperlink: model.detailsPageHyperlink + ? { + target: model.detailsPageHyperlink.target, + targetKey: model.detailsPageHyperlink.targetKey + } + : null, + styles: model.styles + }; + + return contract; + } +} diff --git a/src/components/applications/application-list/applicationListViewModelBinder.ts b/src/components/applications/application-list/applicationListViewModelBinder.ts new file mode 100644 index 000000000..31e0fdafd --- /dev/null +++ b/src/components/applications/application-list/applicationListViewModelBinder.ts @@ -0,0 +1,49 @@ +import { ViewModelBinder, WidgetState } from "@paperbits/common/widgets"; +import { StyleCompiler } from "@paperbits/common/styles"; +import { ISiteService } from "@paperbits/common/sites"; +import { Logger } from "@paperbits/common/logging"; +import { layoutsMap } from "../../utils/react/TableListInfo"; +import { ApplicationListViewModel } from "./react/ApplicationListViewModel"; +import { ApplicationListModel } from "./applicationListModel"; +import { isRedesignEnabledSetting } from "../../../constants"; + +export class ApplicationListViewModelBinder implements ViewModelBinder { + constructor( + private readonly styleCompiler: StyleCompiler, + private readonly siteService: ISiteService, + private readonly logger: Logger + ) { } + + public stateToInstance(state: WidgetState, componentInstance: ApplicationListViewModel): void { + componentInstance.setState(prevState => ({ + isRedesignEnabled: state.isRedesignEnabled, + styles: state.styles, + layout: state.layout, + layoutDefault: layoutsMap[state.layout], + allowViewSwitching: state.allowViewSwitching, + detailsPageUrl: state.detailsPageHyperlink + ? state.detailsPageHyperlink.href + : undefined + })); + } + + public async modelToState(model: ApplicationListModel, state: WidgetState): Promise { + state.allowViewSwitching = model.allowViewSwitching; + state.detailsPageHyperlink = model.detailsPageHyperlink; + state.layout = model.layout; + + if (model.styles) { + state.styles = await this.styleCompiler.getStyleModelAsync(model.styles); + } + + let isRedesignEnabled = false; + + try { + isRedesignEnabled = !!(await this.siteService.getSetting(isRedesignEnabledSetting)); + } catch (error) { + this.logger?.trackError(error, { message: `Failed to get setting: ${isRedesignEnabledSetting} - ApplicationListViewModelBinder` }); + } finally { + state.isRedesignEnabled = isRedesignEnabled; + } + } +} \ No newline at end of file diff --git a/src/components/applications/application-list/ko/applicationListEditor.html b/src/components/applications/application-list/ko/applicationListEditor.html new file mode 100644 index 000000000..0508a0f6c --- /dev/null +++ b/src/components/applications/application-list/ko/applicationListEditor.html @@ -0,0 +1,23 @@ +
+
+ +
+ +
+ +
+ + +
+
+
\ No newline at end of file diff --git a/src/components/applications/application-list/ko/applicationListEditor.ts b/src/components/applications/application-list/ko/applicationListEditor.ts new file mode 100644 index 000000000..f8527f049 --- /dev/null +++ b/src/components/applications/application-list/ko/applicationListEditor.ts @@ -0,0 +1,47 @@ +import * as ko from "knockout"; +import template from "./applicationListEditor.html"; +import { Component, OnMounted, Param, Event } from "@paperbits/common/ko/decorators"; +import { HyperlinkModel } from "@paperbits/common/permalinks"; +import { ApplicationListModel } from "../applicationListModel"; + + +@Component({ + selector: "application-list-editor", + template: template +}) +export class ApplicationListEditor { + public readonly allowViewSwitching: ko.Observable; + public readonly hyperlink: ko.Observable; + public readonly hyperlinkTitle: ko.Computed; + + constructor() { + this.allowViewSwitching = ko.observable(true); + this.hyperlink = ko.observable(); + this.hyperlinkTitle = ko.computed(() => this.hyperlink() ? this.hyperlink().title : "Add a link..."); + } + + @Param() + public model: ApplicationListModel; + + @Event() + public onChange: (model: ApplicationListModel) => void; + + @OnMounted() + public async initialize(): Promise { + this.allowViewSwitching(this.model.allowViewSwitching); + this.hyperlink(this.model.detailsPageHyperlink); + + this.allowViewSwitching.subscribe(this.applyChanges); + } + + private applyChanges(): void { + this.model.allowViewSwitching = this.allowViewSwitching(); + this.model.detailsPageHyperlink = this.hyperlink(); + this.onChange(this.model); + } + + public onHyperlinkChange(hyperlink: HyperlinkModel): void { + this.hyperlink(hyperlink); + this.applyChanges(); + } +} \ No newline at end of file diff --git a/src/components/applications/application-list/react/ApplicationListViewModel.tsx b/src/components/applications/application-list/react/ApplicationListViewModel.tsx new file mode 100644 index 000000000..71d345e9f --- /dev/null +++ b/src/components/applications/application-list/react/ApplicationListViewModel.tsx @@ -0,0 +1,22 @@ +import * as React from "react"; +import { StyleModel } from "@paperbits/common/styles"; + +export class ApplicationListViewModel extends React.Component { + public state: { + isRedesignEnabled: boolean; + styles: StyleModel + }; + + constructor(props) { + super(props); + + this.state = {...props}; + } + + public render(): JSX.Element { + const data = JSON.stringify(this.state); + + return this.state.isRedesignEnabled + && ; + } +} diff --git a/src/components/applications/application-list/react/runtime/ApplicationsCards.tsx b/src/components/applications/application-list/react/runtime/ApplicationsCards.tsx new file mode 100644 index 000000000..3d365642a --- /dev/null +++ b/src/components/applications/application-list/react/runtime/ApplicationsCards.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; +import { Stack } from "@fluentui/react"; +import { Application } from "../../../../../models/application"; +import { markdownMaxCharsMap } from "../../../../../constants"; +import { MarkdownProcessor } from "../../../../utils/react/MarkdownProcessor"; + +type Props = { + getReferenceUrl: (applicationName: string) => string; +}; + +const ApplicationCard = ({ application, getReferenceUrl }: Props & { application: Application }) => { + return ( +
+
+

{application.name}

+ + +
+ + + + Go to Application + + +
+ ); +}; + +export const ApplicationsCards = ({ applications, getReferenceUrl }: Props & { applications: Application[] }) => ( +
+ {applications?.map((application) => ( + + ))} +
+); diff --git a/src/components/applications/application-list/react/runtime/ApplicationsListRuntime.tsx b/src/components/applications/application-list/react/runtime/ApplicationsListRuntime.tsx new file mode 100644 index 000000000..67e729cba --- /dev/null +++ b/src/components/applications/application-list/react/runtime/ApplicationsListRuntime.tsx @@ -0,0 +1,94 @@ +import * as React from "react"; +import { FluentProvider } from "@fluentui/react-components"; +import { Resolve } from "@paperbits/react/decorators"; +import { Logger } from "@paperbits/common/logging"; +import { ApplicationService } from "../../../../../services/applicationService"; +import { UsersService } from "../../../../../services"; +import { Application } from "../../../../../models/application"; +import { fuiTheme } from "../../../../../constants"; +import { RouteHelper } from "../../../../../routing/routeHelper"; +import { TLayout } from "../../../../utils/react/TableListInfo"; +import { ApplicationsTableCards } from "./ApplicationsTableCards"; + +export interface ApplicationsListProps { + allowSelection?: boolean; + allowViewSwitching?: boolean; + layoutDefault: TLayout; + detailsPageUrl: string; +} + +interface ApplicationsListState { + working: boolean; + userId: string; + selectedApplication?: Application | null; +} + +export type TApplicationsListRuntimeFCProps = Omit & { + getReferenceUrl: (applicationName: string) => string; + userId: string; + applicationService: ApplicationService; + logger: Logger; + selectedApplication?: Application | null; +}; + +export class ApplicationsListRuntime extends React.Component { + @Resolve("applicationService") + public applicationService: ApplicationService; + + @Resolve("usersService") + public usersService: UsersService; + + @Resolve("routeHelper") + public routeHelper: RouteHelper; + + @Resolve("logger") + public logger: Logger; + + constructor(props) { + super(props); + + this.state = { + working: false, + userId: undefined, + selectedApplication: undefined, + }; + } + + public componentDidMount() { + this.loadSelectedApplication(); + } + + async loadSelectedApplication() { + const userId = await this.usersService.ensureSignedIn(); + const applicationName = this.routeHelper.getApplicationName(); + if (!applicationName) { + this.setState({ userId, selectedApplication: null }); + return; + } + + this.setState({ working: true, selectedApplication: undefined }); + + return this.applicationService + .getApplication(userId, applicationName) + .then((selectedApplication) => this.setState({ userId, selectedApplication })) + .finally(() => this.setState({ working: false })); + } + + getReferenceUrl(applicationName: string): string { + return this.routeHelper.getApplicationReferenceUrl(applicationName, this.props.detailsPageUrl); + } + + render() { + return ( + + this.getReferenceUrl(applicationName)} + /> + + ); + } +} diff --git a/src/components/applications/application-list/react/runtime/ApplicationsTable.tsx b/src/components/applications/application-list/react/runtime/ApplicationsTable.tsx new file mode 100644 index 000000000..5b7f132cb --- /dev/null +++ b/src/components/applications/application-list/react/runtime/ApplicationsTable.tsx @@ -0,0 +1,67 @@ +import * as React from "react"; +import { + Table, + TableBody, + TableCell, + TableHeader, + TableHeaderCell, + TableRow, +} from "@fluentui/react-components"; +import { Application } from "../../../../../models/application"; +import { MarkdownProcessor } from "../../../../utils/react/MarkdownProcessor"; +import { ScrollableTableContainer } from "../../../../utils/react/ScrollableTableContainer"; +import { NoRecordsRow } from "../../../../utils/react/NoRecordsRow"; +import { markdownMaxCharsMap } from "../../../../../constants"; + +type Props = { + applications: Application[]; + getReferenceUrl: (applicatioName: string) => string; +}; + +const TableBodyApplications = ({ applications, getReferenceUrl }: Props) => ( + <> + {applications?.length > 0 + ? applications.map((application) => ( + + + + {application.name} + + + {application.entraApplicationId} + + + + + )) + : + } + +); + +export const ApplicationsTable = ({ applications, getReferenceUrl }: Props) => ( + + + + + + Name + + + Entra ID + + + Description + + + + + + + +
+
+); diff --git a/src/components/applications/application-list/react/runtime/ApplicationsTableCards.tsx b/src/components/applications/application-list/react/runtime/ApplicationsTableCards.tsx new file mode 100644 index 000000000..3bbc7aca5 --- /dev/null +++ b/src/components/applications/application-list/react/runtime/ApplicationsTableCards.tsx @@ -0,0 +1,104 @@ +import * as React from "react"; +import { useEffect, useState } from "react"; +import { Stack } from "@fluentui/react"; +import { MessageBar, MessageBarBody, Spinner } from "@fluentui/react-components"; +import { Page } from "../../../../../models/page"; +import { Application } from "../../../../../models/application"; +import { TableListInfo, TLayout } from "../../../../utils/react/TableListInfo"; +import { Pagination } from "../../../../utils/react/Pagination"; +import { SearchQuery } from "../../../../../contracts/searchQuery"; +import { defaultPageSize } from "../../../../../constants"; +import { ApplicationsTable } from "./ApplicationsTable"; +import { ApplicationsCards } from "./ApplicationsCards"; +import { TApplicationsListRuntimeFCProps } from "./ApplicationsListRuntime"; + +type TApplicationTableCards = TApplicationsListRuntimeFCProps; + +export const ApplicationsTableCards = ({ + getReferenceUrl, + logger, + userId, + applicationService, + layoutDefault, + allowViewSwitching +}: TApplicationTableCards) => { + const [working, setWorking] = useState(false); + const [pageNumber, setPageNumber] = useState(1); + const [applications, setApplications] = useState>(); + const [layout, setLayout] = useState(layoutDefault ?? TLayout.table); + const [pattern, setPattern] = useState(); + const [error, setError] = useState(null); + + useEffect(() => { + const query: SearchQuery = { + pattern, + skip: (pageNumber - 1) * defaultPageSize, + take: defaultPageSize, + }; + + setWorking(true); + setError(null); + loadApplications(query) + .then((loadedApplications) => { + loadedApplications instanceof Page ? setApplications(loadedApplications) : setError(loadedApplications); + }).finally(() => setWorking(false)); + }, [applicationService, pageNumber, pattern, userId]); + + const loadApplications = async (query: SearchQuery) => { + let applications: Page | string; + + try { + applications = await applicationService.getClientApplications(userId, query); + } catch (error) { + setError("Unable to load applications."); + logger.trackError(error, { message: "Unable to load applications." }); + } + + return applications; + } + + return ( + + {error ? ( + + {error} + + ) : ( + <> + + + {working || !applications ? ( +
+ +
+ ) : ( + <> +
+ +
+ +
+ {layout === TLayout.table ? ( + + ) : ( + + )} +
+ +
+ +
+ + )} + + )} +
+ ); +}; diff --git a/src/components/products/product-details/ko/runtime/product-details.ts b/src/components/products/product-details/ko/runtime/product-details.ts index aad9910f0..d7bfdf589 100644 --- a/src/components/products/product-details/ko/runtime/product-details.ts +++ b/src/components/products/product-details/ko/runtime/product-details.ts @@ -50,7 +50,7 @@ export class ProductDetails { this.product(null); try { - const product = await this.productService.getProduct("/products/" + productName); + const product = await this.productService.getProduct(productName); if (product) { this.product(product); diff --git a/src/components/products/product-details/react/runtime/ProductDetailsRuntime.tsx b/src/components/products/product-details/react/runtime/ProductDetailsRuntime.tsx index 451ea2c0e..5fcd125e9 100644 --- a/src/components/products/product-details/react/runtime/ProductDetailsRuntime.tsx +++ b/src/components/products/product-details/react/runtime/ProductDetailsRuntime.tsx @@ -32,7 +32,7 @@ const productStateToLabel = (state: ProductState) => { } const loadProduct = async (productService: ProductService, productName: string) => { - return productService.getProduct("/products/" + productName); + return productService.getProduct(productName); }; const ProductDetailsRuntimeFC = ({ usersService, productService, productName }: ProductDetailsRuntimeFCProps) => { diff --git a/src/components/products/product-list/productListModel.ts b/src/components/products/product-list/productListModel.ts index a9b1dadfd..0e28bfaf3 100644 --- a/src/components/products/product-list/productListModel.ts +++ b/src/components/products/product-list/productListModel.ts @@ -16,14 +16,14 @@ export class ProductListModel { public allowSelection: boolean; /** - * Link to a page that contains operation details. + * Link to a page that contains product details. */ public detailsPageHyperlink: HyperlinkModel; /** * Indicates that view switching is allowed. */ - allowViewSwitching: boolean; + public allowViewSwitching: boolean; /** * Widget local styles. diff --git a/src/components/products/product-subscribe/ko/runtime/product-subscribe.ts b/src/components/products/product-subscribe/ko/runtime/product-subscribe.ts index 1554a2caf..fd77abc34 100644 --- a/src/components/products/product-subscribe/ko/runtime/product-subscribe.ts +++ b/src/components/products/product-subscribe/ko/runtime/product-subscribe.ts @@ -81,7 +81,7 @@ export class ProductSubscribe { return; } - const product = await this.productService.getProduct(`products/${productName}`); + const product = await this.productService.getProduct(productName); if (!product) { return; diff --git a/src/components/products/product-subscribe/react/runtime/ProductSubscribeRuntime.tsx b/src/components/products/product-subscribe/react/runtime/ProductSubscribeRuntime.tsx index 1d4d12691..b4568dd7c 100644 --- a/src/components/products/product-subscribe/react/runtime/ProductSubscribeRuntime.tsx +++ b/src/components/products/product-subscribe/react/runtime/ProductSubscribeRuntime.tsx @@ -27,7 +27,7 @@ type ProductSubscribeRuntimeFCProps = ProductSubscribeRuntimeProps & { const loadProduct = async (usersService: UsersService, delegationService: IDelegationService, productService: ProductService, productName: string) => { const promises = [ await delegationService.isSubscriptionDelegationEnabled(), - await productService.getProduct(`products/${productName}`), + await productService.getProduct(productName), await usersService.getCurrentUserId(), ] as const; const [isDelegationEnabled, product, userId] = await Promise.all(promises); diff --git a/src/components/react.components.d.ts b/src/components/react.components.d.ts index 580c0fbec..4eb236c21 100644 --- a/src/components/react.components.d.ts +++ b/src/components/react.components.d.ts @@ -54,5 +54,7 @@ declare namespace JSX { "placeholder-content": any; "fui-reports-runtime": any; "reports-runtime": any; + "fui-application-list": any; + "fui-application-details": any; } } \ No newline at end of file diff --git a/src/constants.ts b/src/constants.ts index bea5812ce..16275fdd9 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -437,4 +437,5 @@ export const USER_ACTION = "data-action"; export const FEATURE_FLAGS = "featureFlags"; export const FEATURE_CLIENT_TELEMETRY = "clientTelemetry"; export const FEATURE_OLD_THEME = "oldDefaultTheme"; +export const FEATURE_CLIENT_APPLICATIONS = "clientApplications"; export const USE_COMPRESSED_ASSETS = "useCompressedAssets"; \ No newline at end of file diff --git a/src/contracts/application.ts b/src/contracts/application.ts new file mode 100644 index 000000000..26593785f --- /dev/null +++ b/src/contracts/application.ts @@ -0,0 +1,34 @@ +export interface ApplicationContract { + /** + * Unique identifier. + */ + id: string; + + /** + * Application name. + */ + name: string; + + /** + * Application identifier in Entra platform. + */ + entraApplicationId: string; + + /** + * Tenant identifier in Entra platform. + */ + entraTenantId?: string; + + /** + * Application state. + * Possible values: pending, active, rejected, approved. + */ + state?: ApplicationState; + + /** + * Description of the application. + */ + description?: string; +} + +export type ApplicationState = "pending" | "active" | "rejected" | "approved"; \ No newline at end of file diff --git a/src/contracts/entraSecret.ts b/src/contracts/entraSecret.ts new file mode 100644 index 000000000..e20c8673f --- /dev/null +++ b/src/contracts/entraSecret.ts @@ -0,0 +1,19 @@ +export interface EntraSecretContract { + /** + * Entra secret object. + */ + entra: EntraSecretObject; +} + +export interface EntraSecretObject { + /** + * Application Entra secret. + */ + clientSecret: string; + + /** + * Secret expiration date in ISO 8601 format. + * Example: 2023-10-01T00:00:00Z + */ + expiresAt: string; +} \ No newline at end of file diff --git a/src/contracts/product.ts b/src/contracts/product.ts index 2ba036247..04edbcb3d 100644 --- a/src/contracts/product.ts +++ b/src/contracts/product.ts @@ -17,8 +17,8 @@ export interface ProductContract { /** * Specifies whether subscription approval is required. - * If false, new subscriptions will be approved automatically enabling developers to call the product’s APIs immediately after subscribing. - * If true, administrators must manually approve the subscription before the developer can call any of the product’s APIs. + * If false, new subscriptions will be approved automatically enabling developers to call the product�s APIs immediately after subscribing. + * If true, administrators must manually approve the subscription before the developer can call any of the product�s APIs. * Can be present only if subscriptionRequired property is present and has a value of true. */ approvalRequired: boolean; @@ -42,6 +42,30 @@ export interface ProductContract { * Product terms and conditions. Developer will have to accept these terms before he's allowed to call product API. */ terms: string; + + /** + * Specifies the product's application settings. + */ + applicationSettings?: ProductApplicationSettings; } -export type ProductState = "published" | "notPublished"; \ No newline at end of file +export type ProductState = "published" | "notPublished"; + +export interface ProductApplicationSettings { + /** + * Specifies the product's entra settings. + */ + entra?: ProductEntraSettings; +} + +export interface ProductEntraSettings { + /** + * Specifies the product's entra application id. + */ + applicationId: string; + + /** + * Specifies the product's audience. + */ + audience: string; +} \ No newline at end of file diff --git a/src/models/application.ts b/src/models/application.ts new file mode 100644 index 000000000..e4c0b485f --- /dev/null +++ b/src/models/application.ts @@ -0,0 +1,50 @@ +import { ApplicationContract, ApplicationState } from "../contracts/application"; + +/** + * Application model. + */ +export class Application { + /** + * Unique identifier. + */ + public readonly id: string; + + /** + * Application name. + */ + public name: string; + + /** + * Application identifier in Entra platform. + */ + public entraApplicationId: string; + + /** + * Tenant identifier in Entra platform. + */ + public entraTenantId?: string; + + /** + * Application state. + * Possible values: pending, active, rejected, approved. + */ + public readonly state?: ApplicationState + + /** + * Description of the application. + */ + public description?: string; + + constructor(contract?: ApplicationContract) { + if (!contract) { + return; + } + + this.id = contract.id; + this.name = contract.id; + this.entraApplicationId = contract.entraApplicationId; + this.entraTenantId = contract.entraTenantId; + this.state = contract.state || "approved"; + this.description = contract.description; + } +} \ No newline at end of file diff --git a/src/models/entraSecret.ts b/src/models/entraSecret.ts new file mode 100644 index 000000000..34947f32f --- /dev/null +++ b/src/models/entraSecret.ts @@ -0,0 +1,19 @@ +import { EntraSecretContract, EntraSecretObject } from "../contracts/entraSecret"; + +/** + * Entra secret model. + */ +export class EntraSecret { + /** + * Entra secret object. + */ + public entra: EntraSecretObject; + + constructor(contract?: EntraSecretContract) { + if (!contract) { + return; + } + + this.entra = contract.entra; + } +} \ No newline at end of file diff --git a/src/models/product.ts b/src/models/product.ts index 5d9934b3e..569a49724 100644 --- a/src/models/product.ts +++ b/src/models/product.ts @@ -10,6 +10,12 @@ export class Product { public readonly subscriptionRequired: boolean; public readonly subscriptionsLimit?: number; public readonly terms: string; + public readonly applicationSettings?: { + entra?: { + applicationId: string; + audience: string; + }; + }; constructor(contract?: ProductContract) { if (!contract) { @@ -24,5 +30,6 @@ export class Product { this.subscriptionRequired = contract.subscriptionRequired; this.subscriptionsLimit = contract.subscriptionsLimit; this.terms = contract.terms; + this.applicationSettings = contract.applicationSettings; } } \ No newline at end of file diff --git a/src/routing/routeHelper.ts b/src/routing/routeHelper.ts index b2a999266..103554a77 100644 --- a/src/routing/routeHelper.ts +++ b/src/routing/routeHelper.ts @@ -53,6 +53,13 @@ export class RouteHelper { return this.getHashParameter("product"); } + /** + * Returns ARM resource name of the application specified in hash parameter of the current route, e.g. "application". + */ + public getApplicationName(): string { + return this.getHashParameter("application"); + } + /** * Returns ARM resource name of the graph type specified in hash parameter of the current route for graphQL APIs, e.g. "query". */ @@ -256,6 +263,26 @@ export class RouteHelper { return `${path}#product=${productName}`; } + /** + * Returns URL of application details page depending on current route. + * @param applicationName ARM resource name of the application. + * @param detailsPageUrl Relative URL of application details page. + */ + public getApplicationReferenceUrl(applicationName: string, detailsPageUrl: string = ""): string { + if (!applicationName) { + throw new Error(`Parameter "applicationName" not specified.`); + } + + let path = ""; + const currentPath = this.router.getPath(); + + if (currentPath !== detailsPageUrl) { + path = detailsPageUrl; + } + + return `${path}#application=${applicationName}`; + } + /** * Returns ID token reference URL. * @param provider ID token provider, e.g. "AadB2C". diff --git a/src/services/applicationService.ts b/src/services/applicationService.ts new file mode 100644 index 000000000..f8b3f2b73 --- /dev/null +++ b/src/services/applicationService.ts @@ -0,0 +1,118 @@ +import * as Constants from "../constants"; +import { IApiClient } from "../clients"; +import { Page } from "../models/page"; +import { SearchQuery } from "../contracts/searchQuery"; +import { Utils } from "../utils"; +import { ApplicationContract } from "../contracts/application"; +import { Application } from "../models/application"; +import { ProductContract } from "../contracts/product"; +import { Product } from "../models/product"; +import { EntraSecretContract } from "../contracts/entraSecret"; +import { EntraSecret } from "../models/entraSecret"; + +export class ApplicationService { + constructor(private readonly apiClient: IApiClient) { } + + public async getClientApplications(userId: string, searchQuery?: SearchQuery): Promise | string> { + if (!userId) { + return "Parameter \"userId\" not specified."; + } + + const skip = searchQuery && searchQuery.skip || 0; + const take = searchQuery && searchQuery.take || Constants.defaultPageSize; + const odataFilterEntries = []; + + const pageOfApplications = new Page(); + let query = `clientApplications?$top=${take}&$skip=${skip}`; + + if (searchQuery?.pattern) { + const pattern = Utils.encodeURICustomized(searchQuery.pattern, Constants.reservedCharTuplesForOData); + odataFilterEntries.push(`(contains(name,'${pattern}'))`); + } + + if (odataFilterEntries.length > 0) { + query = Utils.addQueryParameter(query, `$filter=` + odataFilterEntries.join(" and ")); + } + + try { + const pageContract = await this.apiClient.get>(`users/${userId}/${query}`); + + pageOfApplications.value = pageContract.value.map((item) => new Application(item)); + pageOfApplications.nextLink = pageContract.nextLink; + + return pageOfApplications; + } + catch (error) { + return pageOfApplications; + } + } + + public async getApplication(userId: string, applicationId: string): Promise { + if (!userId) { + throw new Error(`Parameter "userId" not specified.`); + } + + if (!applicationId) { + throw new Error(`Parameter "applicationId" not specified.`); + } + + try { + const contract = await this.apiClient.get(`users/${userId}/clientApplications/${applicationId}`); + + if (contract) { + return new Application(contract); + } + } catch (error) { + throw new Error(`Unable to retrieve application with ID "${applicationId}". Error: ${error.message}`); + } + + return undefined; + } + + public async getApplicationProducts(userId: string, applicationId: string): Promise> { + if (!userId) { + throw new Error(`Parameter "userId" not specified.`); + } + + if (!applicationId) { + throw new Error(`Parameter "applicationId" not specified.`); + } + + const pageOfProducts = new Page(); + + try { + const pageContract = await this.apiClient.get>(`users/${userId}/clientApplications/${applicationId}/products`); + + pageOfProducts.value = pageContract.value.map((item) => new Product(item)); + pageOfProducts.nextLink = pageContract.nextLink; + + return pageOfProducts; + } catch (error) { + throw new Error(`Unable to retrieve products for the application with ID "${applicationId}". Error: ${error.message}`); + } + + return pageOfProducts; + } + + public async createNewSecret(userId: string, applicationId: string): Promise { + if (!userId) { + throw new Error(`Parameter "userId" not specified.`); + } + + if (!applicationId) { + throw new Error(`Parameter "applicationId" not specified.`); + } + + try { + const contract = await this.apiClient.post(`users/${userId}/clientApplications/${applicationId}/listSecrets`); + + if (contract) { + return new EntraSecret(contract); + } + } catch (error) { + throw new Error(`Unable to create a secret for the application with ID "${applicationId}". Error: ${error.message}`); + } + + return undefined; + } +} \ No newline at end of file diff --git a/src/services/productService.ts b/src/services/productService.ts index 5daf96f20..658e23742 100644 --- a/src/services/productService.ts +++ b/src/services/productService.ts @@ -307,7 +307,7 @@ export class ProductService { throw new Error(`Parameter "productId" not specified.`); } - const contract = await this.apiClient.get(productId, [await this.apiClient.getPortalHeader("getProduct"), Utils.getIsUserResourceHeader()]); + const contract = await this.apiClient.get(`/products/${productId}`, [await this.apiClient.getPortalHeader("getProduct"), Utils.getIsUserResourceHeader()]); if (contract) { return new Product(contract); diff --git a/src/services/productsService.spec.ts b/src/services/productsService.spec.ts index a6a771eb1..7276af800 100644 --- a/src/services/productsService.spec.ts +++ b/src/services/productsService.spec.ts @@ -101,7 +101,7 @@ describe("Product service", async () => { const delegationService = new DelegationService(apiClient, settingsProvider); const productService = new ProductService(apiClient, delegationService); - const product = await productService.getProduct("/products/starter"); + const product = await productService.getProduct("starter"); expect(starterProduct.name).to.equal(product.displayName); }); diff --git a/src/startup.runtime.ts b/src/startup.runtime.ts index cdb3b71d3..84aaa9845 100644 --- a/src/startup.runtime.ts +++ b/src/startup.runtime.ts @@ -9,7 +9,7 @@ import { Logger } from "@paperbits/common/logging"; import { TelemetryConfigurator } from "./telemetry/telemetryConfigurator"; import { Utils } from "./utils"; import { ISettingsProvider } from "@paperbits/common/configuration/ISettingsProvider"; -import { FEATURE_CLIENT_TELEMETRY, isRedesignEnabledSetting } from "./constants"; +import { FEATURE_CLIENT_APPLICATIONS, FEATURE_CLIENT_TELEMETRY, isRedesignEnabledSetting } from "./constants"; define({ "application/x-zip-compressed": ["zip"] }, true); @@ -60,6 +60,15 @@ function initFeatures() { telemetryConfigurator.cleanUp(); } }); + Utils.getFeatureValueOrNull(FEATURE_CLIENT_APPLICATIONS, settingsProvider, logger) + .then((isEnabled) => { + const featureFlagValue = isEnabled === null || isEnabled; + logger.trackEvent("FeatureFlag", { + feature: FEATURE_CLIENT_APPLICATIONS, + enabled: featureFlagValue.toString(), + message: `Feature flag '${FEATURE_CLIENT_APPLICATIONS}' - ${isEnabled ? 'enabled' : 'disabled'}` + }); + }); checkIsRedesignEnabled(settingsProvider, logger) .then((isEnabled) => { logger.trackEvent("FeatureFlag", { diff --git a/src/themes/website/styles/widgets/fui/applications.scss b/src/themes/website/styles/widgets/fui/applications.scss new file mode 100644 index 000000000..55dff4b7e --- /dev/null +++ b/src/themes/website/styles/widgets/fui/applications.scss @@ -0,0 +1,10 @@ +.application-product-options-container { + display: table-row; +} + +.application-product-options { + display: grid; + grid-template-columns: 300px 400px; + row-gap: 1rem; + padding: 1rem 3rem; +} \ No newline at end of file diff --git a/src/themes/website/styles/widgets/widgets.scss b/src/themes/website/styles/widgets/widgets.scss index 301ff28b5..8fb671ad4 100644 --- a/src/themes/website/styles/widgets/widgets.scss +++ b/src/themes/website/styles/widgets/widgets.scss @@ -18,3 +18,4 @@ @import "fui/operation-details.scss"; @import "fui/apis-products-lists.scss"; @import "fui/reports.scss"; +@import "fui/applications.scss"; diff --git a/templates/default.json b/templates/default.json index 260408c09..3a0ae659b 100644 --- a/templates/default.json +++ b/templates/default.json @@ -1 +1 @@ -{"/contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0145411a-2c82-325a-4390-76cff184530b","properties":{"en_us":{"title":"Sign up","description":"","keywords":"","documentId":"contentTypes/document/contentItems/0145411a-2c82-325a-4390-76cff184530b","permalink":"/signup"}}},"/contentTypes/page/contentItems/085eb170-7cd7-476f-da11-85b04e265b84":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"085eb170-7cd7-476f-da11-85b04e265b84","properties":{"en_us":{"title":"Products: Details","description":"","keywords":"","documentId":"contentTypes/document/contentItems/085eb170-7cd7-476f-da11-85b04e265b84","permalink":"/product"}}},"/contentTypes/page/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0fa17e1c-6497-f6a9-cf19-02b02b59bbf0","properties":{"en_us":{"title":"Reset password","description":"","keywords":"","documentId":"contentTypes/document/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0","permalink":"/reset-password"}}},"/contentTypes/page/contentItems/23cfb598-29dd-fd28-7b05-c8ffe801980c":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"23cfb598-29dd-fd28-7b05-c8ffe801980c","properties":{"en_us":{"title":"Sign up with OAuth","description":"","keywords":"","documentId":"contentTypes/document/contentItems/23cfb598-29dd-fd28-7b05-c8ffe801980c","permalink":"/signup-oauth"}}},"/contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"38b4a583-e611-dbf8-b945-a2d591c61614","properties":{"en_us":{"title":"APIs: List","description":"","keywords":"","documentId":"contentTypes/document/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614","permalink":"/apis"}}},"/contentTypes/page/contentItems/3bc2e097-114e-cd8d-dc51-4139bcbdb8c0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"3bc2e097-114e-cd8d-dc51-4139bcbdb8c0","properties":{"en_us":{"title":"Errors: 500 Internal error","description":"","keywords":"","documentId":"contentTypes/document/contentItems/3bc2e097-114e-cd8d-dc51-4139bcbdb8c0","permalink":"/500"}}},"/contentTypes/page/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8","properties":{"en_us":{"title":"User: Profile","description":"","keywords":"","documentId":"contentTypes/document/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8","permalink":"/profile"}}},"/contentTypes/page/contentItems/5aafc9ee-a4a8-a062-9949-937c0e2b3734":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"5aafc9ee-a4a8-a062-9949-937c0e2b3734","properties":{"en_us":{"title":"Change password","description":"","keywords":"","documentId":"contentTypes/document/contentItems/5aafc9ee-a4a8-a062-9949-937c0e2b3734","permalink":"/change-password"}}},"/contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"81b0cd55-fb1a-12ee-e41a-d2d6b851ac60","properties":{"en_us":{"title":"Sign in","description":"","keywords":"","documentId":"contentTypes/document/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60","permalink":"/signin"}}},"/contentTypes/page/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"89bb02ae-194e-828f-d595-df5675f5e6d1","properties":{"en_us":{"title":"User: Reports","description":"","keywords":"","documentId":"contentTypes/document/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1","permalink":"/reports"}}},"/contentTypes/page/contentItems/933ce351-2259-d7b7-3f4f-5c33f3ad328a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"933ce351-2259-d7b7-3f4f-5c33f3ad328a","properties":{"en_us":{"title":"APIs: Changelog","description":"","keywords":"","documentId":"contentTypes/document/contentItems/933ce351-2259-d7b7-3f4f-5c33f3ad328a","permalink":"/api-changelog"}}},"/contentTypes/page/contentItems/9862f795-6e36-217e-6dc7-cf7226591267":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"9862f795-6e36-217e-6dc7-cf7226591267","properties":{"en_us":{"title":"Products: List","description":"","keywords":"","documentId":"contentTypes/document/contentItems/9862f795-6e36-217e-6dc7-cf7226591267","permalink":"/products"}}},"/contentTypes/page/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"b3788a8f-cf32-af4a-5e21-733c0e982091","properties":{"en_us":{"title":"API details","description":"","keywords":"","permalink":"/api-details","documentId":"contentTypes/document/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091"}}},"/contentTypes/page/contentItems/bc0b16ea-592d-c4c2-e5b6-ccef526cf42a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"bc0b16ea-592d-c4c2-e5b6-ccef526cf42a","properties":{"en_us":{"title":"Confirm password","description":"","keywords":"","documentId":"contentTypes/document/contentItems/bc0b16ea-592d-c4c2-e5b6-ccef526cf42a","permalink":"/confirm-password"}}},"/contentTypes/page/contentItems/e0987ca1-f458-b546-7697-7be594b35583":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e0987ca1-f458-b546-7697-7be594b35583","properties":{"en_us":{"title":"Home","description":"","keywords":"","permalink":"/","documentId":"contentTypes/document/contentItems/e0987ca1-f458-b546-7697-7be594b35583"}}},"/contentTypes/page/contentItems/f95c292b-b40b-e2cd-b5dc-71fffc97083d":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f95c292b-b40b-e2cd-b5dc-71fffc97083d","properties":{"en_us":{"title":"Errors: 404 Page not found","description":"","keywords":"","documentId":"contentTypes/document/contentItems/f95c292b-b40b-e2cd-b5dc-71fffc97083d","permalink":"/404"}}},"/contentTypes/document/contentItems/0145411a-2c82-325a-4390-76cff184530b":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0145411a-2c82-325a-4390-76cff184530b","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none","lg":"none","md":"none"},"id":"ttlyclwoyh","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"3dEFc","nodes":[{"type":"text","text":"Sign up"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Already a member? "},{"type":"text","text":"Sign in","marks":[{"type":"hyperlink","attrs":{"target":"_self","targetId":"contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60"}}]},{"type":"text","text":"."}]}]},{"type":"validationSummary"},{"type":"signup","requireHipCaptcha":false}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"}}},"id":"grviqmbjhh","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"nutidoheja","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/085eb170-7cd7-476f-da11-85b04e265b84":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"085eb170-7cd7-476f-da11-85b04e265b84","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"wztocvpgmf"}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"product-list","itemStyleView":"dropdown","detailsPageHyperlink":null}],"role":"search","styles":{"instance":{"grid-cell":{"md":{"position":{"col":2,"row":1},"span":{"cols":1,"rows":1}},"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1}}},"id":"tlftizzdqc","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}},{"type":"grid-cell","nodes":[{"type":"product-details"}],"role":"article","styles":{"instance":{"grid-cell":{"md":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1}},"xs":{"position":{"col":1,"row":2},"span":{"cols":1,"rows":1}}},"id":"pgqxhhesxp","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"md":{"rows":["auto"],"cols":["8fr","4fr"]},"xs":{"rows":["auto","auto"],"cols":["1fr"]}},"id":"nngnrduaaf","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":"","left":"auto","right":"auto"}}}}}]},{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"eizhvfdzva"}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading3","attrs":{"id":"wsSd1"},"nodes":[{"type":"text","text":"Your subscriptions"}]}]},{"type":"product-subscriptions"},{"type":"product-subscribe"},{"type":"text-block","nodes":[{"type":"heading3","attrs":{"id":"j0tdc"},"nodes":[{"type":"text","text":"APIs in the product"}]}]},{"type":"product-apis","detailsPageHyperlink":{"target":"_self","targetId":"contentTypes/page/contentItems/1b2a9e4c-d53b-99d1-e363-348630d982b5"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"buvghqglzd","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"sbszauaitv","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":"0","bottom":"0","left":"auto","right":"auto"}}}}}]}]}},"/contentTypes/document/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0fa17e1c-6497-f6a9-cf19-02b02b59bbf0","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"jhkclahdnl","stickTo":{"xl":"none","lg":"none","md":"none"},"size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"lcnA4","nodes":[{"type":"text","text":"Request password reset"}]}]},{"type":"validationSummary"},{"type":"reset-password","requireHipCaptcha":true}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/23cfb598-29dd-fd28-7b05-c8ffe801980c":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"23cfb598-29dd-fd28-7b05-c8ffe801980c","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"ALVCQ"},"nodes":[{"type":"text","text":"Complete sign up"}]}]},{"type":"validationSummary"},{"type":"signup-social"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"vertical":"center","horizontal":"start"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"38b4a583-e611-dbf8-b945-a2d591c61614","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"rghrmndifi","stickTo":{"xl":"none"}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","styles":null,"identifier":"1fo45","nodes":[{"type":"text","text":"APIs"}]}]},{"type":"listOfApis","itemStyleView":"list","allowViewSwitching":true,"filtersPosition":"popup","showApiType":true,"defaultGroupByTagToEnabled":false,"detailsPageHyperlink":{"targetId":"contentTypes/page/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"cbtmarloqy","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"eehtgpxfrf","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":"1400px"}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/3bc2e097-114e-cd8d-dc51-4139bcbdb8c0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"3bc2e097-114e-cd8d-dc51-4139bcbdb8c0","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"UKXkJ"},"nodes":[{"type":"text","text":"Oops, something went wrong"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Try reloading the page. If the problem persists, contact the support."}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"X1E8o","nodes":[{"type":"text","text":"User profile"}]}]},{"type":"validationSummary"},{"type":"text-block","nodes":[{"type":"heading2","identifier":"D9TPk","nodes":[{"type":"text","text":"Account details"}]}]},{"type":"profile"},{"type":"text-block","nodes":[{"type":"heading2","identifier":"g3m20","nodes":[{"type":"text","text":"Subscriptions"}]}]},{"type":"subscriptions"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"horizontal":"start"}}},"id":"ffqigekcow","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"tbebtkzfma","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/5aafc9ee-a4a8-a062-9949-937c0e2b3734":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"5aafc9ee-a4a8-a062-9949-937c0e2b3734","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none","lg":"none","md":"none"},"id":"gtvgnbbwbg","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"HKOgm","nodes":[{"type":"text","text":"Change password"}]}]},{"type":"validationSummary"},{"type":"change-password","requireHipCaptcha":null}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"81b0cd55-fb1a-12ee-e41a-d2d6b851ac60","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"lg":"none","md":"none","xl":"none"},"id":"rqwrzyqjia","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"69nwi","nodes":[{"type":"text","text":"Sign in"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Not a member yet? "},{"type":"text","text":"Sign up","marks":[{"type":"hyperlink","attrs":{"target":"_self","targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}}]},{"type":"text","text":"."}]}]},{"type":"validationSummary"},{"type":"signin"},{"type":"text-block","nodes":[{"type":"paragraph","nodes":[{"type":"text","text":"Forgot your password?","marks":[{"type":"hyperlink","attrs":{"target":"_self","targetId":"contentTypes/page/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0"}}]}]}]},{"type":"signin-social","aadLabel":"Azure Active Directory","aadB2CLabel":"Azure Active Directory B2C","styles":{"appearance":"components/button/default"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"horizontal":"start"}}},"id":"hxelfpwkug","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"faxlwhyokx","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"89bb02ae-194e-828f-d595-df5675f5e6d1","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"URg47"},"nodes":[{"type":"text","text":"Reports"}]}]},{"type":"reports"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/933ce351-2259-d7b7-3f4f-5c33f3ad328a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"933ce351-2259-d7b7-3f4f-5c33f3ad328a","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"GvmaU"},"nodes":[{"type":"text","text":"API changelog"}]}]},{"type":"historyOfApi","detailsPageHyperlink":{"target":"_self","targetId":"contentTypes/page/contentItems/1b2a9e4c-d53b-99d1-e363-348630d982b5"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/9862f795-6e36-217e-6dc7-cf7226591267":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"9862f795-6e36-217e-6dc7-cf7226591267","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"xmenhvdsgj","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"2bMT9","nodes":[{"type":"text","text":"Products"}]}]},{"type":"product-list","itemStyleView":"list","allowViewSwitching":true,"detailsPageHyperlink":{"targetId":"contentTypes/page/contentItems/085eb170-7cd7-476f-da11-85b04e265b84"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":"1400px"}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}},"padding":null}}}]}]}},"/contentTypes/document/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"b3788a8f-cf32-af4a-5e21-733c0e982091","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"lg":"none","xl":"none","xs":"none","md":"none"},"id":"xfyprtsiem","size":{"xs":{"stretch":true}}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"listOfApis","itemStyleView":"dropdown","allowViewSwitching":true,"filtersPosition":"popup","showApiType":true,"defaultGroupByTagToEnabled":false,"detailsPageHyperlink":null},{"type":"operationList","allowSelection":true,"defaultGroupByTagToEnabled":false,"defaultAllGroupTagsExpanded":false,"detailsPageHyperlink":null}],"role":"aside","styles":{"instance":{"grid-cell":{"xs":{"alignment":{"vertical":"start","horizontal":"start"}},"lg":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"vertical":"scroll","horizontal":"scroll"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"horizontal":"scroll"}},"md":{"alignment":{"vertical":"start","horizontal":"start"}}},"id":"lyyjjqivns","border":{"top":{"width":"","style":"solid","colorId":"colors/semi-trsp-lt-bg"},"right":{"width":1,"style":"solid","colorId":"colors/semi-trsp-lt-bg"},"bottom":{"width":"","style":"solid","colorId":null}},"background":{"colorId":"colors/lJzU8"},"padding":{"xl":{"top":20,"left":20,"right":20,"bottom":20},"xs":{"top":20,"left":20,"right":20,"bottom":20}},"borderRadius":null}}},{"type":"grid-cell","nodes":[{"type":"detailsOfApi","changeLogPageHyperlink":null},{"type":"operationDetails","enableConsole":true,"enableScrollTo":false,"defaultSchemaView":"table","showExamples":false}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"alignment":{"vertical":"start","horizontal":"start"}},"lg":{"position":{"col":2,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"vertical":"scroll","horizontal":"scroll"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"horizontal":"scroll"}}},"id":"gvqomvoztq","padding":{"xs":{"top":20,"left":20,"right":20,"bottom":20},"xl":null},"border":{"top":{"width":"","style":"solid","colorId":null},"bottom":{"width":"","style":"solid","colorId":null}},"borderRadius":null}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"}},"grid":{"lg":{"rows":["auto"],"cols":["400px","1fr"]},"xs":{"rows":["auto","auto"],"cols":["1fr"]}},"id":"dovidzrpad","size":{"maxWidth":"1440px"}}}}]}]}},"/contentTypes/document/contentItems/bc0b16ea-592d-c4c2-e5b6-ccef526cf42a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"bc0b16ea-592d-c4c2-e5b6-ccef526cf42a","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none","lg":"none","md":"none"},"id":"eytsxyslkz","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"S6i3i","nodes":[{"type":"text","text":"Reset password"}]}]},{"type":"validationSummary"},{"type":"confirmPassword"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/configuration":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"configuration","properties":{"nodes":[{"site":{"title":"Microsoft Azure API Management - developer portal","description":"Discover APIs, learn how to use them, try them out interactively, and sign up to acquire keys.","keywords":"Azure, API Management, API, developer","author":"Microsoft Azure API Management"},"isRedesignEnabled":true,"theme":"apim-v2"}]}},"/contentTypes/document/contentItems/e0987ca1-f458-b546-7697-7be594b35583":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e0987ca1-f458-b546-7697-7be594b35583","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"aerdouvoot","stickTo":{"lg":"none","xl":"none","md":"none","xs":"none"},"size":null,"background":{"images":[{"sourceId":"contentTypes/blob/contentItems/54635f91-230a-28fd-a532-c246f2356f0f","position":"center center","size":"cover","repeat":"no-repeat","attachment":null,"blend":null}]}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"paragraph","styles":{"appearance":"globals/body/ji4hv","alignment":{"xs":"utils/text/alignCenter","md":"utils/text/alignLeft"}},"identifier":null,"nodes":[{"type":"text","text":"Transform ideas into reality with our APIs"}]},{"type":"paragraph","styles":{"appearance":"globals/body/tkf9e","alignment":{"xs":"utils/text/alignCenter","md":"utils/text/alignLeft"}},"identifier":null,"nodes":[{"type":"text","text":"Our API Developer Portal offers the tools you need to explore, test, and integrate APIs with ease. Start building today."}]}]},{"type":"button","label":"Explore APIs","styles":{"appearance":"components/button/primary","instance":{"id":"zhqnlhmoql","padding":{"top":10,"left":20,"right":20,"bottom":10}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614"}},{"type":"button","label":"Sign up","styles":{"appearance":"components/button/default","instance":{"id":"sleofjegbz","margin":{"left":10},"padding":{"top":9,"left":20,"right":20,"bottom":9}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}}],"role":"aside","styles":{"instance":{"grid-cell":{"md":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"horizontal":"start","vertical":"center"},"overflow":null},"xs":{"position":{"col":1,"row":2},"span":{"cols":1,"rows":1}},"xl":{"alignment":{"horizontal":"start"},"overflow":null}},"id":"omeapvnfdi","padding":{"xs":{"left":20,"right":20,"bottom":50}},"border":null,"borderRadius":null}}},{"type":"grid-cell","nodes":[{"type":"picture","styles":{"appearance":"components/picture/default","instance":{"margin":null,"id":"sjjxoovbbn"}},"sourceId":"contentTypes/blob/contentItems/f1183eca-b12a-24b7-23e8-345854d74aa6"}],"role":"article","styles":{"instance":{"grid-cell":{"md":{"position":{"col":2,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1}},"xl":{"alignment":{"vertical":"center","horizontal":"center"},"overflow":null}},"id":"jrrobypadz","padding":{"xs":{"top":40,"bottom":40,"right":10}},"border":null,"borderRadius":null}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"},"lg":null,"xl":null,"md":null},"padding":{"xs":{"top":0,"bottom":5,"left":0,"right":0},"lg":null,"xl":null,"md":null},"size":{"minHeight":"700px","maxWidth":"1400px"},"grid":{"md":{"rows":["auto"],"cols":["5fr","7fr"]},"xs":{"rows":["auto","auto"],"cols":["1fr"]}},"id":"abzfkynpvf"}}}]},{"type":"layout-section","styles":{"instance":{"id":"gpgvbrfcfq","stickTo":{"lg":"none","sm":"none","md":"none","xl":"none"},"background":{"images":[{"sourceId":"contentTypes/blob/contentItems/54635f91-230a-28fd-a532-c246f2356f0f","position":"center center","size":"cover","repeat":"no-repeat"}]}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","styles":{"alignment":{"xl":"utils/text/alignCenter","lg":"utils/text/alignCenter","xs":"utils/text/alignCenter","md":"utils/text/alignCenter"}},"identifier":"b9kvz","nodes":[{"type":"text","text":"Resources"}]}]},{"type":"card","styles":{"appearance":"components/card/default","instance":{"padding":{"top":0,"left":0,"right":0,"bottom":0},"margin":{"top":20,"left":20,"right":20,"bottom":20},"size":{"width":"350px"},"id":"xrsrqictj1","background":{"colorId":"colors/defaultBg"},"container":{"xl":{"alignment":{"horizontal":"start"}}}}},"nodes":[{"type":"picture","caption":"Feature 1","width":"245px","height":200,"styles":{"appearance":"components/picture/default","instance":{"margin":{"left":"auto","right":"auto"},"id":"kvsnazahzr"}},"sourceId":"contentTypes/blob/contentItems/fda973f5-65b8-5b64-cd56-4df32ec32ffd"},{"type":"text-block","nodes":[{"type":"heading4","identifier":"wbd0t","nodes":[{"type":"text","text":"Get started"}]},{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignLeft"}},"nodes":[{"type":"text","text":"Learn how to get started with our APIs and explore our catalog to find the perfect API for your needs."}]}],"styles":{"instance":{"padding":{"top":10,"left":15,"right":15,"bottom":10},"id":"bwhlogsyed"}}},{"type":"button","label":"Start here","styles":{"appearance":"components/button/default","instance":{"id":"mbvvfcorft","margin":{"left":15,"bottom":15}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614"}}]},{"type":"card","styles":{"appearance":"components/card/default","instance":{"padding":{"top":0,"left":0,"right":0,"bottom":0},"margin":{"top":20,"left":20,"right":20,"bottom":20},"size":{"width":"350px"},"id":"xrsrqictj2","background":{"colorId":"colors/defaultBg"},"container":{"xl":{"alignment":{"horizontal":"start"}}}}},"nodes":[{"type":"picture","caption":"Feature 2","width":"245px","height":200,"styles":{"appearance":"components/picture/default","instance":{"margin":{"left":"auto","right":"auto"},"id":"gkagnfnpev"}},"sourceId":"contentTypes/blob/contentItems/c927adba-5309-1b4c-80e7-9e13f2d663c1"},{"type":"text-block","nodes":[{"type":"heading4","identifier":"d40e7","nodes":[{"type":"text","text":"Subscribe"}]},{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignLeft"}},"nodes":[{"type":"text","text":"Products in the developer portal encompass one or more APIs. Subscribe to a product to get access to utilize the APIs."}]}],"styles":{"instance":{"padding":{"top":10,"left":15,"right":15,"bottom":10},"id":"bwhlogsyed"}}},{"type":"button","label":"Learn more","styles":{"appearance":"components/button/default","instance":{"id":"yxetigiwcq","margin":{"left":15,"bottom":15}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/9862f795-6e36-217e-6dc7-cf7226591267"}}]},{"type":"card","styles":{"appearance":"components/card/default","instance":{"padding":{"top":0,"left":0,"right":0,"bottom":0},"margin":{"top":20,"left":20,"right":20,"bottom":20},"size":{"width":"350px"},"id":"xrsrqictj3","container":{"xl":{"alignment":{"horizontal":"start"}}},"background":{"colorId":"colors/defaultBg"}}},"nodes":[{"type":"picture","caption":"Feature 3","width":"245px","height":200,"styles":{"appearance":"components/picture/default","instance":{"margin":{"left":"auto","right":"auto"},"id":"ymaqmwwrhj"}},"sourceId":"contentTypes/blob/contentItems/a8912683-6777-1252-2583-2fe2f5ecd80a"},{"type":"text-block","nodes":[{"type":"heading4","identifier":"cve4c","nodes":[{"type":"text","text":"Get support"}]},{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignLeft"}},"nodes":[{"type":"text","text":"Need help? Our API admin team is here for you. Reach out to us for any questions or assistance with our APIs."}]}],"styles":{"instance":{"padding":{"top":10,"left":15,"right":15,"bottom":10},"id":"bwhlogsyed"}}},{"type":"button","label":"Contact us","styles":{"appearance":"components/button/default","instance":{"id":"kdduoynoxq","margin":{"left":15,"bottom":15}}},"hyperlink":{"target":"_blank","targetId":"contentTypes/url/contentItems/feefd660-d398-3891-c834-24f816633a01"}}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"top","horizontal":"center"}},"xl":{"alignment":{"vertical":"top","horizontal":"center"}}},"id":"omovqpozlr","padding":{"xs":{"bottom":20}}}}}],"styles":{"instance":{"margin":{"xs":{"top":10,"bottom":10,"left":"auto","right":"auto"},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":150}},"padding":{"xs":{"top":5,"bottom":5,"left":5,"right":5},"md":{"top":15,"bottom":15,"left":15,"right":15}},"size":{"maxWidth":"1400px"},"id":"eidwzurrsq","grid":{"xs":{"rows":["auto"],"cols":["1fr"]}}}}}]}]}},"/contentTypes/document/contentItems/f95c292b-b40b-e2cd-b5dc-71fffc97083d":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f95c292b-b40b-e2cd-b5dc-71fffc97083d","properties":{"nodes":[{"type":"layout-section","styles":null,"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"nGEr2"},"nodes":[{"type":"text","text":"Page you're looking for doesn't exist"}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/home-page-layout":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"home-page-layout","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"pdboylzuei","stickTo":{"md":"none","lg":"none","xs":"none"},"border":{"bottom":{"width":1,"style":"solid","colorId":"colors/ei6n0"}}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"picture","caption":"Logo","height":"30px","styles":{"appearance":"components/picture/default","instance":{"margin":{"right":"auto"},"id":"depobiyafx"}},"sourceId":"contentTypes/blob/contentItems/2dd99fb4-4c42-86b1-ab2a-ae5d99df2767"},{"type":"menu","navigationItemId":"main","layout":"horizontal","styles":{"appearance":"components/menu/g0f2p","instance":{"id":"ghmsnvgjnz","display":{"md":"inline-block","xs":"none"}}}},{"type":"menu","navigationItemId":"ed7c0fc2-6fa3-2efd-4ec9-0d8feb484a12","layout":"horizontal","styles":{"appearance":"components/menu/g0f2p","instance":{"id":"fsdfdgxxrd"}},"security":{"type":"group","allow":["developers"]}},{"type":"button","label":"Sign in","styles":{"appearance":"components/button/p66vu","instance":{"id":"jixcqqzbxy","display":{"md":"inline-block","xs":"none"}}},"security":{"type":"group","allow":["guests"]},"hyperlink":{"targetId":"contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60"}},{"type":"button","label":"Sign out","styles":{"appearance":"components/button/p66vu","instance":{"id":"qtjbywayln","display":{"md":"inline-block","xs":"none"}}},"security":{"type":"group","allow":["developers"]},"hyperlink":{"target":"_self","targetId":"contentTypes/url/contentItems/1bec2534-46c4-7555-f8ec-ffcd9645fc2e"}},{"type":"button","label":"☰","styles":{"appearance":"components/button/no-border","instance":{"display":{"xs":"inline-block","md":"none"}}},"hyperlink":{"target":"_popup","targetId":"contentTypes/popup/contentItems/main-menu-popup"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"between"}},"xl":{"alignment":{"vertical":"center","horizontal":"between"}},"md":{"alignment":{"vertical":"center","horizontal":"between"}},"lg":{"alignment":{"vertical":"center","horizontal":"between"}}},"padding":{"xs":{"top":0,"left":20,"right":20,"bottom":0}},"id":"zokhwnoctz","border":{"bottom":{"width":"","style":"solid"}}}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"}},"size":{"md":{"maxWidth":"1400px"}},"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"vynmgbdwzd"}}}]},{"type":"layout-section","styles":{"instance":{"id":"kjdslhuhdu","stickTo":{"xl":"none","xs":"none","sm":"none","md":"none","lg":"none"},"size":{"xl":{"stretch":true},"xs":{"stretch":true},"sm":{"stretch":true},"md":{"stretch":true},"lg":{"stretch":true}},"border":{"bottom":{"width":"","style":"solid","colorId":"colors/ei6n0"}}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"page"}],"role":"main","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"oueowolkew"}}}],"styles":{"instance":{"margin":{"xs":{"top":0,"bottom":0,"left":"auto","right":"auto"}},"padding":{"xs":{"top":0,"bottom":0,"left":0,"right":0}},"id":"kdskjsijw","grid":{"xs":{"rows":["auto"],"cols":["1fr"]}}}}}]},{"type":"layout-section","styles":{"instance":{"id":"qrjgiseunh","stickTo":{"xs":"none"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"}},"borderRadius":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignCenter","xs":"utils/text/alignCenter"},"appearance":"globals/body/u2qqf"},"identifier":null,"nodes":[{"type":"text","text":"Powered by "},{"type":"text","text":"Azure API Management","marks":[{"type":"hyperlink","attrs":{"target":"_blank","targetId":"contentTypes/url/contentItems/e4a52924-c46c-8797-b4d2-025e1f41896a"}}]},{"type":"text","text":" © Microsoft 2025"}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"padding":{"xs":{"bottom":0}},"id":"zlppdhyary"}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"}},"padding":{"xs":{"top":20,"bottom":0,"left":20,"right":20}},"size":{"lg":{"maxWidth":1140}},"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"xebsquaqqn"}}}]}]}},"/contentTypes/document/contentItems/main-menu-popup":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"main-menu-popup","properties":{"backdrop":true,"styles":{"instance":{"components":{"popupContainer":{"default":{"position":{"position":"fixed","top":"50%","right":0},"background":{"colorId":"colors/defaultBg"},"transform":{"translate":{"x":"0px","y":"calc(-50%)"}},"size":{"height":"100%","minWidth":"200px","maxWidth":"400px"},"padding":{"top":20,"left":30,"right":30,"bottom":30},"container":{"alignment":{"horizontal":"start"},"overflow":{"vertical":"scroll","horizontal":"scroll"}},"border":{"bottom":{"colorId":"colors/15o9C","style":"solid","width":"1"},"left":{"colorId":"colors/15o9C","style":"solid","width":"1"},"right":{"colorId":"colors/15o9C","style":"solid","width":"1"},"top":{"colorId":"colors/15o9C","style":"solid","width":"1"}}}},"popupBackdrop":{"default":{"background":{"colorId":"colors/dsGWq"}}}},"id":"paypjjihrc"}},"nodes":[{"type":"menu","minHeading":null,"maxHeading":null,"navigationItemId":"main","layout":"vertical","styles":{"appearance":"components/menu/default","instance":{"size":{"width":"300px"},"id":"ficwenaevm","margin":null,"padding":null}}},{"type":"menu","minHeading":null,"maxHeading":null,"navigationItemId":"74ed66aa-1cc0-f91a-60c6-6e1b2aa239ea","layout":"vertical","styles":{"appearance":"components/menu/default","instance":{"size":{"width":"300px"},"id":"rmmwxirmch","margin":null,"padding":null}},"security":{"roles":["anonymous"]}},{"type":"menu","minHeading":null,"maxHeading":null,"navigationItemId":"ed7c0fc2-6fa3-2efd-4ec9-0d8feb484a12","layout":"vertical","styles":{"appearance":"components/menu/default","instance":{"size":{"width":"100%"},"id":"ebhloafmvf","margin":null,"padding":null}},"security":{"roles":["authenticated"]}},{"type":"dismiss-button","label":"✕","styles":{"appearance":"components/button/no-border","instance":{"id":"main-menu-dismiss","position":{"position":"absolute","top":0,"right":0}}}}]}},"/contentTypes/document/contentItems/navigation":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"navigation","properties":{"nodes":[{"id":"main","label":"Main menu","navigationItems":[{"id":"0901ccd9-9c01-8a2b-5d86-7edd429f3a9a","label":"Home","targetId":"contentTypes/page/contentItems/e0987ca1-f458-b546-7697-7be594b35583"},{"id":"32fea618-15ed-f8ab-e3fa-ec71a144632f","label":"APIs","targetId":"contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614"},{"id":"775bc451-92f1-8463-f06c-0251fc529bd9","label":"Products","targetId":"contentTypes/page/contentItems/9862f795-6e36-217e-6dc7-cf7226591267"}]},{"id":"ed7c0fc2-6fa3-2efd-4ec9-0d8feb484a12","label":"Authenticated user menu","navigationItems":[{"id":"bb3147e0-0123-0471-2754-79bd90622f46","label":"Reports","targetId":"contentTypes/page/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1"},{"id":"c4bc59d2-e97d-d5d3-bfa0-d3f667310f35","label":"Profile","targetId":"contentTypes/page/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8"}]},{"id":"74ed66aa-1cc0-f91a-60c6-6e1b2aa239ea","label":"Anonymous user menu","navigationItems":[{"id":"754349ff-01fd-2e38-c883-145f47fa8f34","label":"Sign in","targetId":"contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60"},{"id":"d1f8a15c-2946-b504-cee1-4f29d5300082","label":"Sign up","targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}]},{"id":"e4c00a1d-13ee-c080-8583-bfd496298f33","label":"Home page - sign up","navigationItems":[{"id":"d973fd56-14ae-61d5-6d34-bdd4344890f6","label":"Sign up","targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}]},{"id":"9cc122c6-48df-a817-9e78-ad176f7b02b5","label":"Footer menu","navigationItems":[{"id":"96b02fb1-1d53-6e04-cdd1-73fcadb4b893","label":"Terms of Use"},{"id":"61669623-13e5-916a-48c6-e8ef5751658a","label":"Developer portal resources","navigationItems":null},{"id":"d340d326-2714-d2e6-ad25-c809fa7eea8b","label":"FAQs","navigationItems":null}]}]}},"/contentTypes/document/contentItems/new-page-template":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"new-page-template","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","nodes":[{"type":"text","text":"Heading 1"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/stylesheet":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"stylesheet","properties":{"nodes":[{"animations":{"shake":{"displayName":"Shake","duration":1000,"iterationCount":"infinite","id":"animations/shake","name":"shake","timingFunction":"linear"}},"colors":{"Bqr2r":{"displayName":"Featured","id":"colors/Bqr2r","value":"rgba(254, 212.99999999999994, 60.00000000000001, 1)"},"default":{"displayName":"Text - black","id":"colors/default","value":"#000"},"Gpcrr":{"displayName":"Transparent","id":"colors/Gpcrr","value":"rgba(167, 51, 51, 0.0)"},"defaultBg":{"displayName":"Background - white","id":"colors/defaultBg","value":"rgba(255, 255, 255, 1.0)"},"primaryText":{"displayName":"Text - white","id":"colors/primaryText","value":"#fff"},"s7KlY":{"id":"colors/s7KlY","displayName":"Primary","value":"rgba(0,115,201,1)"},"vsU56":{"id":"colors/vsU56","displayName":"Primary (hover)","value":"rgba(1, 85, 150, 1)"},"O6nZg":{"id":"colors/O6nZg","displayName":"Primary (active)","value":"rgba(0, 50, 86, 1.0)"},"VBrll":{"id":"colors/VBrll","displayName":"Background - black","value":"rgba(4, 2, 2, 1.0)"},"links":{"displayName":"Links","id":"colors/links","value":"#0078d4"},"R5a87":{"displayName":"Links hover","id":"colors/R5a87","value":"#0078d4"},"H6I5d":{"displayName":"Text - transparent","id":"colors/H6I5d","value":"rgba(0, 0, 0, 0.3764705882352941)"},"formattedBg":{"displayName":"Formatted text Bg","id":"colors/formattedBg","value":"#f7f7f7"},"FI3dz":{"displayName":"Featured (hover)","id":"colors/FI3dz","value":"rgba(255, 237, 168, 1)"},"Gzlyb":{"displayName":"Featured (active)","id":"colors/Gzlyb","value":"rgba(227.46944732666017, 191.37360001860827, 56.67446250319523, 1)"},"HUebs":{"displayName":"Control border (disabled)","id":"colors/HUebs","value":"rgba(203.6694473266602, 203.6694473266602, 203.6694473266602, 1)"},"QIdF6":{"displayName":"Control border","id":"colors/QIdF6","value":"rgba(84.66944732666016, 84.66944732666016, 84.66944732666016, 1)"},"semi-trsp-lt-bg":{"displayName":"Border","id":"colors/semi-trsp-lt-bg","value":"#87878726"},"dsGWq":{"displayName":"Popup backdrop","id":"colors/dsGWq","value":"rgba(0, 0, 0, 0.53)"},"pq00n":{"displayName":"Button - base","id":"colors/pq00n","value":"rgba(15, 108, 189, 1)"},"t94k0":{"displayName":"Button - hover","id":"colors/t94k0","value":"rgba(15, 108, 189, 1)"},"0tmtc":{"displayName":"Border - bottom","id":"colors/0tmtc","value":"rgba(97, 97, 97, 1)"},"ei6n0":{"displayName":"Border - primary","id":"colors/ei6n0","value":"rgba(209, 209, 209, 1)"},"h40s7":{"displayName":"Menu: Selected item indicator","id":"colors/h40s7","value":"rgba(0, 0, 0, 1)"},"672oc":{"displayName":"Footer background","id":"colors/672oc","value":"rgba(230, 230, 230, 1)"},"wgkng":{"displayName":"Footer text color","id":"colors/wgkng","value":"rgba(112, 112, 112, 1)"},"9shan":{"displayName":"Default button","id":"colors/9shan","value":"rgba(255, 255, 255, 1)"},"ffp5f":{"displayName":"Default button (hover)","id":"colors/ffp5f","value":"rgba(238, 233, 233, 1)"}},"components":{"button":{"default":{"id":"components/button/default","displayName":"Normal button","allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/9shan"},"border":{"top":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"left":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"right":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":"1","style":"solid","colorId":"colors/ei6n0"}},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"category":"appearance","margin":{"top":15},"padding":{"top":6,"left":18,"right":18,"bottom":6},"shadow":{"shadowId":"shadows/none"},"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","colorId":"colors/default","shadowId":"shadows/none"},"states":{"hover":{"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","colorId":"colors/default","shadowId":"shadows/none","textDecoration":"none"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"left":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"right":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":1,"style":"solid","colorId":"colors/ei6n0"}},"transition":{"timingFunction":"ease-in-out","delay":"0","duration":"0.3"},"id":"caovfumhjb","background":{"colorId":"colors/ffp5f","gradientId":null}},"active":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}},"disabled":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}}}},"primary":{"category":"appearance","displayName":"Featured button","id":"components/button/primary","allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/s7KlY"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"margin":{"left":0,"right":10},"padding":{"bottom":6},"shadow":null,"typography":{"fontId":"fonts/h4ilD","fontSize":"14px","fontWeight":"600","colorId":"colors/defaultBg","shadowId":"shadows/none"},"states":{"hover":{"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","colorId":"colors/primaryText","shadowId":"shadows/none"},"background":{"colorId":"colors/vsU56"},"transition":{"timingFunction":"ease-in-out","delay":"0","duration":"0.3","property":"all"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}},"id":"lefvowpnck"},"active":{"background":{"colorId":"colors/pq00n"},"transition":{"duration":"0","property":"all"},"border":{"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}},"id":"byzbjcdnhv"},"disabled":{"background":{"colorId":"colors/HUebs"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}}},"focus":{"border":{"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}}}},"border":{"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}}},"no-border":{"allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/defaultBg"},"border":{"top":{"width":0},"left":{"width":0},"right":{"width":0},"bottom":{"width":0}},"borderRadius":{"topLeftRadius":5,"topRightRadius":5,"bottomLeftRadius":5,"bottomRightRadius":5},"category":"appearance","displayName":"Border-less button","id":"components/button/no-border","margin":{"top":10,"left":10,"right":10,"bottom":10},"padding":{"top":10,"left":15,"right":15,"bottom":10},"shadow":{"shadowId":"shadows/none"},"states":{"hover":{"background":{"colorId":"colors/semi-trsp-lt-bg"},"typography":{"colorId":"colors/default"},"border":{"top":{"width":0},"left":{"width":0},"right":{"width":0},"bottom":{"width":0}}},"border":{"top":{"width":0},"left":{"width":0},"right":{"width":0},"bottom":{"width":0}}},"typography":{"fontStyle":"normal","colorId":"colors/default","textDecoration":"none"}},"p66vu":{"id":"components/button/p66vu","displayName":"Account button","allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/s7KlY"},"border":{"top":{"width":"1","style":"solid","colorId":"colors/QIdF6"},"left":{"width":"1","style":"solid","colorId":"colors/QIdF6"},"right":{"width":"1","style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":"1","style":"solid","colorId":"colors/QIdF6"}},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"category":"appearance","margin":{"top":0,"left":25,"right":5,"bottom":0},"padding":{"top":6,"left":18,"right":18,"bottom":6},"shadow":{"shadowId":"shadows/none"},"typography":{"fontId":"fonts/h4ilD","fontSize":"14px","fontWeight":"600","colorId":"colors/primaryText"},"states":{"hover":{"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","fontStyle":"normal","colorId":"colors/primaryText","textDecoration":"none"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/s7KlY"},"right":{"width":1,"style":"solid","colorId":"colors/s7KlY"},"bottom":{"width":1,"style":"solid","colorId":"colors/s7KlY"},"top":{"width":1,"style":"solid","colorId":"colors/s7KlY"}},"transition":{"timingFunction":"ease-in-out","delay":"0","duration":"0.3"},"id":"caovfumhjb","background":{"colorId":"colors/vsU56","gradientId":null}},"active":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}},"disabled":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}}}}},"card":{"default":{"border":{"top":{"color":"orange","style":"solid"},"left":{"color":"orange","style":"solid"},"right":{"color":"orange","style":"solid"},"bottom":{"color":"orange","style":"solid"}},"category":"appearance","displayName":"Default","id":"components/card/default","allowedStates":["hover"],"padding":{"top":50,"left":30,"right":30,"bottom":50},"shadow":{"shadowId":"shadows/x5lnn"},"margin":{"top":30,"left":30,"right":30,"bottom":30},"typography":{"textAlign":"left"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4}},"sf67m":{"id":"components/card/sf67m","displayName":"No border","category":"appearance","allowedStates":["hover"],"padding":{"top":0,"left":0,"right":0,"bottom":20},"shadow":{"shadowId":"shadows/none"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4}},"e0ndu":{"border":{"top":{"color":"orange","style":"solid"},"left":{"color":"orange","style":"solid"},"right":{"color":"orange","style":"solid"},"bottom":{"color":"orange","style":"solid"}},"category":"appearance","displayName":"Home page fold","id":"components/card/e0ndu","allowedStates":["hover"],"padding":{"top":50,"left":30,"right":30,"bottom":50},"shadow":{"shadowId":"shadows/none"},"margin":{"top":30,"left":30,"right":30,"bottom":30},"typography":{"textAlign":"left"},"size":{"maxWidth":"550px"}}},"navbar":{"default":{"components":{"navItem":{"default":{"displayName":"Navigation link","category":"appearance","id":"components/navbar/default/components/navItem/default","allowedStates":["hover","focus","active"],"typography":{"fontWeight":"normal","fontStyle":"normal","colorId":"colors/s7KlY","textTransform":"uppercase"},"states":{"hover":{"typography":{"fontWeight":"normal","fontStyle":"normal","textTransform":"uppercase","colorId":"colors/primaryText"},"background":{"colorId":"colors/links"}}},"padding":{"top":5,"left":30,"right":30,"bottom":5}},"active":{"allowedStates":["hover","focus","active"],"displayName":"Navigation link (active)","id":"components/navbar/default/components/navItem/active"}}},"displayName":"Navigation bar","id":"components/navbar/default","category":"appearance","typography":{"fontWeight":"normal","fontStyle":"normal"}}},"picture":{"default":{"displayName":"Normal picture","category":"appearance","id":"components/picture/default"}},"videoPlayer":{"default":{"displayName":"Normal video player","category":"appearance","id":"components/videoPlayer/default"}},"menu":{"default":{"category":"appearance","components":{"dropdown":{"default":{"background":{"colorId":"colors/defaultBg"},"category":"appearance","displayName":"Menu dropdown","id":"components/menu/default/components/dropdown/default","shadow":{"shadowId":"shadows/shadow2"},"components":{"navLink":{"active":{"id":"components/menu/default/components/dropdown/default/components/navLink/active","allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","typography":{"colorId":"colors/default"},"border":{"bottom":{"width":"","style":"solid","colorId":null}}}}}}},"navLink":{"active":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/default/components/navLink/active","border":{"bottom":{"width":"","style":"solid","colorId":"colors/h40s7"}},"padding":{"top":12,"bottom":12}},"default":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/default/components/navLink/default","margin":{"left":20,"right":15},"padding":{"top":12,"bottom":12},"typography":{"colorId":"colors/default"}}}},"displayName":"Normal menu","id":"components/menu/default","border":{"right":{"width":1,"style":"solid","colorId":null}},"margin":{"right":0},"padding":{"top":5}},"yhdk9":null,"wlu0u":null,"g0f2p":{"category":"appearance","components":{"dropdown":{"default":{"background":{"colorId":"colors/defaultBg"},"category":"appearance","displayName":"Menu dropdown","id":"components/menu/g0f2p/components/dropdown/default","shadow":{"shadowId":"shadows/shadow2"},"components":{"navLink":{"active":{"id":"components/menu/g0f2p/components/dropdown/default/components/navLink/active","allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","typography":{"colorId":"colors/default"},"border":{"bottom":{"width":1,"style":"solid","colorId":null}}}}}}},"navLink":{"active":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/g0f2p/components/navLink/active","border":{"bottom":{"width":"4","style":"solid","colorId":"colors/h40s7"}},"padding":{"top":12,"bottom":12}},"default":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/g0f2p/components/navLink/default","margin":{"left":20,"right":15},"padding":{"top":12,"bottom":12},"typography":{"colorId":"colors/default"}}}},"displayName":"Heading menu","id":"components/menu/g0f2p","border":{"right":{"width":1,"style":"solid","colorId":"colors/ei6n0"}},"margin":{"right":0},"padding":{"top":5}},"hq0xs":{"category":"appearance","components":{"dropdown":{"default":{"background":{"colorId":"colors/defaultBg"},"category":"appearance","displayName":"Menu dropdown","id":"components/menu/hq0xs/components/dropdown/default","shadow":{"shadowId":"shadows/shadow2"}}},"navLink":{"active":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/hq0xs/components/navLink/active","border":{"bottom":{"width":"4","style":"solid","colorId":null}},"padding":{"top":12,"bottom":12}},"default":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/hq0xs/components/navLink/default","margin":{"left":5,"right":5},"padding":{"top":12,"bottom":12},"typography":{"colorId":"colors/default"}}}},"displayName":"Footer menu","id":"components/menu/hq0xs","border":{"right":{"width":1,"style":"solid","colorId":null}},"margin":{"right":0},"padding":{"top":5}}},"formGroup":{"default":{"id":"components/formGroup/default","category":"appearance","displayName":"Normal form control","components":{"formControl":{"default":{"displayName":"Text box","category":"appearance","id":"components/formGroup/default/components/formControl/default","allowedStates":["hover","focus","active","disabled","valid","invalid"],"border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"left":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"right":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":1,"style":"solid","colorId":"colors/0tmtc"}},"padding":{"top":7,"left":10,"right":10,"bottom":5},"shadow":{"shadowId":"shadows/none"},"typography":{"fontWeight":"normal","fontStyle":"normal"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"margin":{"bottom":20},"states":{"focus":{"margin":{"bottom":20},"id":"kqorcxgbpi","border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"left":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"right":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":"2","style":"solid","colorId":"colors/pq00n"}}}}}},"formLabel":{"default":{"id":"components/formGroup/default/components/formLabel/default","displayName":"Label"}},"invalidFeedback":{"default":{"id":"components/formGroup/default/components/invalidFeedback/default","displayName":"Invalid feedback"}}},"margin":{"top":0},"padding":{"left":0},"borderRadius":{"bottomLeftRadius":4},"border":{"bottom":{"width":"","style":"solid","colorId":"colors/0tmtc"}}}}},"fonts":{"default":{"displayName":"Quicksand","family":"Quicksand","id":"fonts/default","variants":[{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKodSZaM9iE8KbpRA_pgHYoSA.ttf","style":"normal","weight":"300"},{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKtdSZaM9iE8KbpRA_RLA.ttf","style":"regular","weight":400},{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKodSZaM9iE8KbpRA_p2HcoSA.ttf","style":"normal","weight":"500"},{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKodSZaM9iE8KbpRA_pkHEoSA.ttf","style":"normal","weight":"700"}]},"JGLby":{"id":"fonts/JGLby","family":"Roboto","displayName":"Roboto","category":"sans-serif","version":"v18","lastModified":"2017-10-16","variants":[{"weight":"100","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1MmgWxP.ttf"},{"weight":"100","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOiCnqEu92Fr1Mu51QrIzc.ttf"},{"weight":"300","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5vAw.ttf"},{"weight":"300","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TjARc9.ttf"},{"weight":400,"style":"regular","file":"https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Me5Q.ttf"},{"weight":400,"style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1Mu52xP.ttf"},{"weight":"500","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9vAw.ttf"},{"weight":"500","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51S7ABc9.ttf"},{"weight":"700","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmWUlvAw.ttf"},{"weight":"700","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TzBhc9.ttf"},{"weight":"900","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmYUtvAw.ttf"},{"weight":"900","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TLBBc9.ttf"}]},"h4ilD":{"id":"fonts/h4ilD","family":"Open Sans","displayName":"Open Sans","category":"sans-serif","version":"v16","lastModified":"2019-05-01","variants":[{"weight":"300","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UN_r8-VeJoCqeDjg.ttf"},{"weight":"300","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKWyV-hsKKKTjrPW.ttf"},{"weight":400,"style":"regular","file":"https://fonts.gstatic.com/s/opensans/v16/mem8YaGs126MiZpBA-U1UpcaXcl0Aw.ttf"},{"weight":400,"style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/mem6YaGs126MiZpBA-UFUJ0ef8xkA76a.ttf"},{"weight":"600","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UNirk-VeJoCqeDjg.ttf"},{"weight":"600","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKXGUehsKKKTjrPW.ttf"},{"weight":"700","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UN7rg-VeJoCqeDjg.ttf"},{"weight":"700","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKWiUOhsKKKTjrPW.ttf"},{"weight":"800","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UN8rs-VeJoCqeDjg.ttf"},{"weight":"800","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKW-U-hsKKKTjrPW.ttf"}]},"s4ze2":{"id":"fonts/s4ze2","family":"Lato","displayName":"Lato","category":"sans-serif","version":"v24","lastModified":"2024-09-04","variants":[{"weight":100,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u8w4BMUTPHh30wWyWrFCbw7A.ttf"},{"weight":100,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u-w4BMUTPHjxsIPy-vNiPg7MU0.ttf"},{"weight":300,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh7USew-FGC_p9dw.ttf"},{"weight":300,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u_w4BMUTPHjxsI9w2PHA3s5dwt7w.ttf"},{"weight":400,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6uyw4BMUTPHvxk6XweuBCY.ttf"},{"weight":400,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u8w4BMUTPHjxswWyWrFCbw7A.ttf"},{"weight":700,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh6UVew-FGC_p9dw.ttf"},{"weight":700,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u_w4BMUTPHjxsI5wqPHA3s5dwt7w.ttf"},{"weight":900,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh50Xew-FGC_p9dw.ttf"},{"weight":900,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u_w4BMUTPHjxsI3wiPHA3s5dwt7w.ttf"}]}},"globals":{"a":{"default":{"displayName":"Link","id":"globals/a/default","allowedStates":["hover","focus","active"],"typography":{"colorId":"colors/links"},"states":{"hover":{"typography":{"colorId":"colors/R5a87","textDecoration":"underline"}}}}},"blockquote":{"default":{"displayName":"Quote","id":"globals/blockquote/default","typography":{"fontWeight":"normal","textAlign":"left","fontId":"fonts/default"}}},"body":{"default":{"displayName":"Regular","id":"globals/body/default","typography":{"fontId":"fonts/h4ilD","fontSize":"14px"}},"nq5w8":null,"u2qqf":{"id":"globals/body/u2qqf","displayName":"Footer text","typography":{"fontId":"fonts/h4ilD","fontSize":"14px","fontWeight":"600","colorId":"colors/wgkng"}},"ji4hv":{"id":"globals/body/ji4hv","displayName":"Title","typography":{"fontId":"fonts/s4ze2","fontSize":"70px","fontWeight":"700","lineHeight":"1.3em"}},"tkf9e":{"id":"globals/body/tkf9e","displayName":"Subtitle","typography":{"fontId":"fonts/h4ilD","fontSize":"25px"}}},"h1":{"default":{"displayName":"Heading Level 1","id":"globals/h1/default","typography":{"fontId":"fonts/h4ilD","fontSize":"32px","fontWeight":"600","fontStyle":"normal"},"margin":{"bottom":30,"top":5}}},"h2":{"default":{"displayName":"Heading Level 2","id":"globals/h2/default","typography":{"fontId":"fonts/h4ilD","fontSize":"27px","fontWeight":"600"},"border":{"top":{"style":"solid","color":"orange"},"left":{"style":"solid","color":"orange"},"right":{"style":"solid","color":"orange"},"bottom":{"style":"solid","color":"orange"}},"margin":{"top":20,"bottom":10}}},"h3":{"default":{"displayName":"Heading Level 3","id":"globals/h3/default","typography":{"fontId":"fonts/h4ilD","fontSize":"24px","fontWeight":"600"},"margin":{"top":40,"bottom":10}}},"h4":{"default":{"displayName":"Heading Level 4","id":"globals/h4/default","typography":{"fontId":"fonts/h4ilD","fontSize":20,"fontWeight":"600"},"margin":{"top":0,"bottom":12}}},"h5":{"default":{"displayName":"Heading Level 5","id":"globals/h5/default","typography":{"fontId":"fonts/h4ilD","fontSize":"16px","fontWeight":"600"},"margin":{"top":0,"left":0,"right":0,"bottom":0}}},"h6":{"default":{"displayName":"Heading Level 6","id":"globals/h6/default","typography":{"fontId":"fonts/h4ilD","fontSize":"12px"}}},"p":{"default":{"displayName":"Paragraph","id":"globals/p/default","typography":{"fontId":null,"colorId":"colors/default"},"padding":{"left":0}}},"ul":{"default":{"components":{"li":{"default":{"displayName":"List item","id":"globals/ul/default/components/li/default"}}},"displayName":"Bulleted list","id":"globals/ul/default"}},"ol":{"default":{"components":{"li":{"default":{"displayName":"List item","id":"globals/ol/default/components/li/default"}}},"displayName":"Numbered list","id":"globals/ol/default"}},"pre":{"default":{"background":{"colorId":"colors/formattedBg"},"borderRadius":{"bottomLeftRadius":5,"bottomRightRadius":5,"topLeftRadius":5,"topRightRadius":5},"displayName":"Formatted","id":"globals/pre/default","padding":{"bottom":15,"left":25,"right":25,"top":15},"typography":{"fontSize":14}}}},"gradients":{"gradient1":{"id":"gradients/gradient1","displayName":"Gradient 1","direction":"45deg","colorStops":[{"color":"rgba(234, 205, 163, 1)","length":"0"},{"color":"rgba(214, 174, 123, 1)","length":0}]}},"shadows":{"none":{"displayName":"No shadow","id":"shadows/none"},"shadow1":{"blur":5,"color":"rgba(0, 0, 0, 0.12549019607843137)","displayName":"Light shadow","id":"shadows/shadow1","offsetX":2,"offsetY":2,"spread":1},"shadow2":{"blur":10,"color":"rgba(0, 0, 0, 0.5)","displayName":"Medium shadow","id":"shadows/shadow2","offsetX":2,"offsetY":2},"shadow3":{"blur":2,"color":"rgba(0, 0, 0, 0.1)","displayName":"Inset shadow","inset":true,"id":"shadows/shadow3","offsetX":1,"offsetY":1},"x5lnn":{"blur":2,"spread":2,"color":"rgba(0, 0, 0, 0.18)","inset":false,"offsetX":0,"offsetY":0,"id":"shadows/x5lnn","displayName":"Card shadow"}},"utils":{"block":{"stretch":{"class":{"xs":"stretch"}},"snapToTop":{"class":{"xs":"sticky-top"}},"snapToBottom":{"class":{"xs":"sticky-bottom"}}},"content":{"alignHorizontallyAround":{"class":{"lg":"align-items-lg-around","md":"align-items-md-around","sm":"align-items-sm-around","xl":"align-items-xl-around","xs":"align-items-around"},"displayName":"Align around"},"alignHorizontallyBetween":{"class":{"lg":"align-items-lg-between","md":"align-items-md-between","sm":"align-items-sm-between","xl":"align-items-xl-between","xs":"align-items-between"},"displayName":"Align between"},"alignHorizontallyCenter":{"class":{"lg":"align-items-lg-center","md":"align-items-md-center","sm":"align-items-sm-center","xl":"align-items-xl-center","xs":"align-items-center"},"displayName":"Align center"},"alignHorizontallyEnd":{"class":{"lg":"align-items-lg-end","md":"align-items-md-end","sm":"align-items-sm-end","xl":"align-items-xl-end","xs":"align-items-end"},"displayName":"Align right"},"alignHorizontallyStart":{"class":{"lg":"align-items-lg-start","md":"align-items-md-start","sm":"align-items-sm-start","xl":"align-items-xl-start","xs":"align-items-start"},"displayName":"Align left"},"alignVerticallyAround":{"class":{"lg":"justify-content-lg-around","md":"justify-content-md-around","sm":"justify-content-sm-around","xl":"justify-content-xl-around","xs":"justify-content-around"},"displayName":"Align around"},"alignVerticallyBetween":{"class":{"lg":"justify-content-lg-between","md":"justify-content-md-between","sm":"justify-content-sm-between","xl":"justify-content-xl-between","xs":"justify-content-between"},"displayName":"Align between"},"alignVerticallyCenter":{"class":{"lg":"justify-content-lg-center","md":"justify-content-md-center","sm":"justify-content-sm-center","xl":"justify-content-xl-center","xs":"justify-content-center"},"displayName":"Align center"},"alignVerticallyEnd":{"class":{"lg":"justify-content-lg-end","md":"justify-content-md-end","sm":"justify-content-sm-end","xl":"justify-content-xl-end","xs":"justify-content-end"},"displayName":"Align bottom"},"alignVerticallyStart":{"class":{"lg":"justify-content-lg-start","md":"justify-content-md-start","sm":"justify-content-sm-start","xl":"justify-content-xl-start","xs":"justify-content-start"},"displayName":"Align top"},"id":"utils/content"},"text":{"alignCenter":{"typography":{"lg":{"textAlign":"center"},"md":{"textAlign":"center"},"sm":{"textAlign":"center"},"xl":{"textAlign":"center"},"xs":{"textAlign":"center"}}},"alignLeft":{"displayName":"Align left","typography":{"lg":{"textAlign":"left"},"md":{"textAlign":"left"},"sm":{"textAlign":"left"},"xl":{"textAlign":"left"},"xs":{"textAlign":"left"}}},"alignRight":{"typography":{"lg":{"textAlign":"right"},"md":{"textAlign":"right"},"sm":{"textAlign":"right"},"xl":{"textAlign":"right"},"xs":{"textAlign":"right"}}},"justify":{"typography":{"lg":{"textAlign":"justify"},"md":{"textAlign":"justify"},"sm":{"textAlign":"justify"},"xl":{"textAlign":"justify"},"xs":{"textAlign":"justify"}}},"id":"utils/text"}},"schemaVersion":1}]}},"/contentTypes/layout/contentItems/default":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"default","properties":{"en_us":{"title":"Default","description":"Layout for the home page","permalinkTemplate":"/","documentId":"contentTypes/document/contentItems/home-page-layout"}}},"/contentTypes/blob/contentItems/2dd99fb4-4c42-86b1-ab2a-ae5d99df2767":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"2dd99fb4-4c42-86b1-ab2a-ae5d99df2767","properties":{"fileName":"Default logo.png","blobId":"","description":"","keywords":"","permalink":"/content/Default logo.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/2dd99fb4-4c42-86b1-ab2a-ae5d99df2767.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/54635f91-230a-28fd-a532-c246f2356f0f":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"54635f91-230a-28fd-a532-c246f2356f0f","properties":{"fileName":"new-hero-blue-cropped.png","blobId":"","description":"","keywords":"","permalink":"/content/new-hero-blue-cropped.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/54635f91-230a-28fd-a532-c246f2356f0f.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/a8912683-6777-1252-2583-2fe2f5ecd80a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"a8912683-6777-1252-2583-2fe2f5ecd80a","properties":{"fileName":"card3.png","blobId":"","description":"","keywords":"","permalink":"/content/card3.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/a8912683-6777-1252-2583-2fe2f5ecd80a.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/c927adba-5309-1b4c-80e7-9e13f2d663c1":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"c927adba-5309-1b4c-80e7-9e13f2d663c1","properties":{"fileName":"card2.png","blobId":"","description":"","keywords":"","permalink":"/content/card2.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/c927adba-5309-1b4c-80e7-9e13f2d663c1.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/f1183eca-b12a-24b7-23e8-345854d74aa6":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f1183eca-b12a-24b7-23e8-345854d74aa6","properties":{"fileName":"home-page-illustration.png","blobId":"","description":"","keywords":"","permalink":"/content/home-page-illustration.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/f1183eca-b12a-24b7-23e8-345854d74aa6.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/fda973f5-65b8-5b64-cd56-4df32ec32ffd":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"fda973f5-65b8-5b64-cd56-4df32ec32ffd","properties":{"fileName":"card1.png","blobId":"","description":"","keywords":"","permalink":"/content/card1.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/fda973f5-65b8-5b64-cd56-4df32ec32ffd.png","mimeType":"image/png"}},"/contentTypes/url/contentItems/1bec2534-46c4-7555-f8ec-ffcd9645fc2e":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"1bec2534-46c4-7555-f8ec-ffcd9645fc2e","properties":{"title":"#signout","permalink":"#signout"}},"/contentTypes/url/contentItems/a213a574-5acb-8520-26b3-27af16d7f9bc":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"a213a574-5acb-8520-26b3-27af16d7f9bc","properties":{"title":"https://azure.microsoft.com/services/api-management/","description":"","permalink":"https://azure.microsoft.com/services/api-management/"}},"/contentTypes/url/contentItems/db6d0be2-ec1a-2850-6476-ff53b65b00b9":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"db6d0be2-ec1a-2850-6476-ff53b65b00b9","properties":{"title":"APIs","description":"","permalink":"/apis"}},"/contentTypes/url/contentItems/e4a52924-c46c-8797-b4d2-025e1f41896a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e4a52924-c46c-8797-b4d2-025e1f41896a","properties":{"title":"https://aka.ms/apimrocks","permalink":"https://aka.ms/apimrocks"}},"/contentTypes/url/contentItems/feefd660-d398-3891-c834-24f816633a01":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"feefd660-d398-3891-c834-24f816633a01","properties":{"title":"mailto:support@example.com","permalink":"mailto:support@example.com"}},"/contentTypes/block/contentItems/new-page-template":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"new-page-template","properties":{"en_us":{"title":"New page template","description":"","documentId":"/contentTypes/document/contentItems/new-page-template"}}},"/contentTypes/popup/contentItems/main-menu-popup":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"main-menu-popup","properties":{"en_us":{"title":"Main menu popup","documentId":"contentTypes/document/contentItems/main-menu-popup"}}}} \ No newline at end of file +{"/contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0145411a-2c82-325a-4390-76cff184530b","properties":{"en_us":{"title":"Sign up","description":"","keywords":"","documentId":"contentTypes/document/contentItems/0145411a-2c82-325a-4390-76cff184530b","permalink":"/signup"}}},"/contentTypes/page/contentItems/085eb170-7cd7-476f-da11-85b04e265b84":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"085eb170-7cd7-476f-da11-85b04e265b84","properties":{"en_us":{"title":"Products: Details","description":"","keywords":"","documentId":"contentTypes/document/contentItems/085eb170-7cd7-476f-da11-85b04e265b84","permalink":"/product"}}},"/contentTypes/page/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0fa17e1c-6497-f6a9-cf19-02b02b59bbf0","properties":{"en_us":{"title":"Reset password","description":"","keywords":"","documentId":"contentTypes/document/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0","permalink":"/reset-password"}}},"/contentTypes/page/contentItems/23cfb598-29dd-fd28-7b05-c8ffe801980c":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"23cfb598-29dd-fd28-7b05-c8ffe801980c","properties":{"en_us":{"title":"Sign up with OAuth","description":"","keywords":"","documentId":"contentTypes/document/contentItems/23cfb598-29dd-fd28-7b05-c8ffe801980c","permalink":"/signup-oauth"}}},"/contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"38b4a583-e611-dbf8-b945-a2d591c61614","properties":{"en_us":{"title":"APIs: List","description":"","keywords":"","documentId":"contentTypes/document/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614","permalink":"/apis"}}},"/contentTypes/page/contentItems/3bc2e097-114e-cd8d-dc51-4139bcbdb8c0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"3bc2e097-114e-cd8d-dc51-4139bcbdb8c0","properties":{"en_us":{"title":"Errors: 500 Internal error","description":"","keywords":"","documentId":"contentTypes/document/contentItems/3bc2e097-114e-cd8d-dc51-4139bcbdb8c0","permalink":"/500"}}},"/contentTypes/page/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8","properties":{"en_us":{"title":"User: Profile","description":"","keywords":"","documentId":"contentTypes/document/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8","permalink":"/profile"}}},"/contentTypes/page/contentItems/5aafc9ee-a4a8-a062-9949-937c0e2b3734":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"5aafc9ee-a4a8-a062-9949-937c0e2b3734","properties":{"en_us":{"title":"Change password","description":"","keywords":"","documentId":"contentTypes/document/contentItems/5aafc9ee-a4a8-a062-9949-937c0e2b3734","permalink":"/change-password"}}},"/contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"81b0cd55-fb1a-12ee-e41a-d2d6b851ac60","properties":{"en_us":{"title":"Sign in","description":"","keywords":"","documentId":"contentTypes/document/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60","permalink":"/signin"}}},"/contentTypes/page/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"89bb02ae-194e-828f-d595-df5675f5e6d1","properties":{"en_us":{"title":"User: Reports","description":"","keywords":"","documentId":"contentTypes/document/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1","permalink":"/reports"}}},"/contentTypes/page/contentItems/933ce351-2259-d7b7-3f4f-5c33f3ad328a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"933ce351-2259-d7b7-3f4f-5c33f3ad328a","properties":{"en_us":{"title":"APIs: Changelog","description":"","keywords":"","documentId":"contentTypes/document/contentItems/933ce351-2259-d7b7-3f4f-5c33f3ad328a","permalink":"/api-changelog"}}},"/contentTypes/page/contentItems/9862f795-6e36-217e-6dc7-cf7226591267":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"9862f795-6e36-217e-6dc7-cf7226591267","properties":{"en_us":{"title":"Products: List","description":"","keywords":"","documentId":"contentTypes/document/contentItems/9862f795-6e36-217e-6dc7-cf7226591267","permalink":"/products"}}},"/contentTypes/page/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"b3788a8f-cf32-af4a-5e21-733c0e982091","properties":{"en_us":{"title":"API details","description":"","keywords":"","permalink":"/api-details","documentId":"contentTypes/document/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091"}}},"/contentTypes/page/contentItems/bc0b16ea-592d-c4c2-e5b6-ccef526cf42a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"bc0b16ea-592d-c4c2-e5b6-ccef526cf42a","properties":{"en_us":{"title":"Confirm password","description":"","keywords":"","documentId":"contentTypes/document/contentItems/bc0b16ea-592d-c4c2-e5b6-ccef526cf42a","permalink":"/confirm-password"}}},"/contentTypes/page/contentItems/e0987ca1-f458-b546-7697-7be594b35583":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e0987ca1-f458-b546-7697-7be594b35583","properties":{"en_us":{"title":"Home","description":"","keywords":"","permalink":"/","documentId":"contentTypes/document/contentItems/e0987ca1-f458-b546-7697-7be594b35583"}}},"/contentTypes/page/contentItems/e5b8027e-58d8-072f-434c-b1e7cda24baf":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e5b8027e-58d8-072f-434c-b1e7cda24baf","properties":{"en_us":{"title":"Applications: List","description":"","keywords":"","permalink":"/applications","documentId":"contentTypes/document/contentItems/e5b8027e-58d8-072f-434c-b1e7cda24baf"}}},"/contentTypes/page/contentItems/f2e9f447-9cb8-079e-4d56-e14aa1f24115":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f2e9f447-9cb8-079e-4d56-e14aa1f24115","properties":{"en_us":{"title":"Applications: Details","description":"","keywords":"","permalink":"/application","documentId":"contentTypes/document/contentItems/f2e9f447-9cb8-079e-4d56-e14aa1f24115"}}},"/contentTypes/page/contentItems/f95c292b-b40b-e2cd-b5dc-71fffc97083d":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f95c292b-b40b-e2cd-b5dc-71fffc97083d","properties":{"en_us":{"title":"Errors: 404 Page not found","description":"","keywords":"","documentId":"contentTypes/document/contentItems/f95c292b-b40b-e2cd-b5dc-71fffc97083d","permalink":"/404"}}},"/contentTypes/document/contentItems/0145411a-2c82-325a-4390-76cff184530b":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0145411a-2c82-325a-4390-76cff184530b","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none","lg":"none","md":"none"},"id":"ttlyclwoyh","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"3dEFc","nodes":[{"type":"text","text":"Sign up"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Already a member? "},{"type":"text","text":"Sign in","marks":[{"type":"hyperlink","attrs":{"target":"_self","targetId":"contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60"}}]},{"type":"text","text":"."}]}]},{"type":"validationSummary"},{"type":"signup","requireHipCaptcha":false}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"}}},"id":"grviqmbjhh","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"nutidoheja","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/085eb170-7cd7-476f-da11-85b04e265b84":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"085eb170-7cd7-476f-da11-85b04e265b84","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"wztocvpgmf"}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"product-list","itemStyleView":"dropdown","detailsPageHyperlink":null}],"role":"search","styles":{"instance":{"grid-cell":{"md":{"position":{"col":2,"row":1},"span":{"cols":1,"rows":1}},"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1}}},"id":"tlftizzdqc","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}},{"type":"grid-cell","nodes":[{"type":"product-details"}],"role":"article","styles":{"instance":{"grid-cell":{"md":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1}},"xs":{"position":{"col":1,"row":2},"span":{"cols":1,"rows":1}}},"id":"pgqxhhesxp","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"md":{"rows":["auto"],"cols":["8fr","4fr"]},"xs":{"rows":["auto","auto"],"cols":["1fr"]}},"id":"nngnrduaaf","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":"","left":"auto","right":"auto"}}}}}]},{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"eizhvfdzva"}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading3","attrs":{"id":"wsSd1"},"nodes":[{"type":"text","text":"Your subscriptions"}]}]},{"type":"product-subscriptions"},{"type":"product-subscribe"},{"type":"text-block","nodes":[{"type":"heading3","attrs":{"id":"j0tdc"},"nodes":[{"type":"text","text":"APIs in the product"}]}]},{"type":"product-apis","detailsPageHyperlink":{"target":"_self","targetId":"contentTypes/page/contentItems/1b2a9e4c-d53b-99d1-e363-348630d982b5"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"buvghqglzd","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"sbszauaitv","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":"0","bottom":"0","left":"auto","right":"auto"}}}}}]}]}},"/contentTypes/document/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"0fa17e1c-6497-f6a9-cf19-02b02b59bbf0","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"jhkclahdnl","stickTo":{"xl":"none","lg":"none","md":"none"},"size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"lcnA4","nodes":[{"type":"text","text":"Request password reset"}]}]},{"type":"validationSummary"},{"type":"reset-password","requireHipCaptcha":true}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/23cfb598-29dd-fd28-7b05-c8ffe801980c":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"23cfb598-29dd-fd28-7b05-c8ffe801980c","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"ALVCQ"},"nodes":[{"type":"text","text":"Complete sign up"}]}]},{"type":"validationSummary"},{"type":"signup-social"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"vertical":"center","horizontal":"start"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"38b4a583-e611-dbf8-b945-a2d591c61614","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"rghrmndifi","stickTo":{"xl":"none"}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","styles":null,"identifier":"1fo45","nodes":[{"type":"text","text":"APIs"}]}]},{"type":"listOfApis","itemStyleView":"list","allowViewSwitching":true,"filtersPosition":"popup","showApiType":true,"defaultGroupByTagToEnabled":false,"detailsPageHyperlink":{"targetId":"contentTypes/page/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"cbtmarloqy","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"eehtgpxfrf","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":"1400px"}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/3bc2e097-114e-cd8d-dc51-4139bcbdb8c0":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"3bc2e097-114e-cd8d-dc51-4139bcbdb8c0","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"UKXkJ"},"nodes":[{"type":"text","text":"Oops, something went wrong"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Try reloading the page. If the problem persists, contact the support."}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"X1E8o","nodes":[{"type":"text","text":"User profile"}]}]},{"type":"validationSummary"},{"type":"text-block","nodes":[{"type":"heading2","identifier":"D9TPk","nodes":[{"type":"text","text":"Account details"}]}]},{"type":"profile"},{"type":"text-block","nodes":[{"type":"heading2","identifier":"g3m20","nodes":[{"type":"text","text":"Subscriptions"}]}]},{"type":"subscriptions"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"horizontal":"start"}}},"id":"ffqigekcow","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"tbebtkzfma","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/5aafc9ee-a4a8-a062-9949-937c0e2b3734":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"5aafc9ee-a4a8-a062-9949-937c0e2b3734","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none","lg":"none","md":"none"},"id":"gtvgnbbwbg","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"HKOgm","nodes":[{"type":"text","text":"Change password"}]}]},{"type":"validationSummary"},{"type":"change-password","requireHipCaptcha":null}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"81b0cd55-fb1a-12ee-e41a-d2d6b851ac60","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"lg":"none","md":"none","xl":"none"},"id":"rqwrzyqjia","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"69nwi","nodes":[{"type":"text","text":"Sign in"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Not a member yet? "},{"type":"text","text":"Sign up","marks":[{"type":"hyperlink","attrs":{"target":"_self","targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}}]},{"type":"text","text":"."}]}]},{"type":"validationSummary"},{"type":"signin"},{"type":"text-block","nodes":[{"type":"paragraph","nodes":[{"type":"text","text":"Forgot your password?","marks":[{"type":"hyperlink","attrs":{"target":"_self","targetId":"contentTypes/page/contentItems/0fa17e1c-6497-f6a9-cf19-02b02b59bbf0"}}]}]}]},{"type":"signin-social","aadLabel":"Azure Active Directory","aadB2CLabel":"Azure Active Directory B2C","styles":{"appearance":"components/button/default"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"horizontal":"start"}}},"id":"hxelfpwkug","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"faxlwhyokx","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"89bb02ae-194e-828f-d595-df5675f5e6d1","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"URg47"},"nodes":[{"type":"text","text":"Reports"}]}]},{"type":"reports"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/933ce351-2259-d7b7-3f4f-5c33f3ad328a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"933ce351-2259-d7b7-3f4f-5c33f3ad328a","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"GvmaU"},"nodes":[{"type":"text","text":"API changelog"}]}]},{"type":"historyOfApi","detailsPageHyperlink":{"target":"_self","targetId":"contentTypes/page/contentItems/1b2a9e4c-d53b-99d1-e363-348630d982b5"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/9862f795-6e36-217e-6dc7-cf7226591267":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"9862f795-6e36-217e-6dc7-cf7226591267","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"xmenhvdsgj","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"2bMT9","nodes":[{"type":"text","text":"Products"}]}]},{"type":"product-list","itemStyleView":"list","allowViewSwitching":true,"detailsPageHyperlink":{"targetId":"contentTypes/page/contentItems/085eb170-7cd7-476f-da11-85b04e265b84"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":"1400px"}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}},"padding":null}}}]}]}},"/contentTypes/document/contentItems/b3788a8f-cf32-af4a-5e21-733c0e982091":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"b3788a8f-cf32-af4a-5e21-733c0e982091","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"lg":"none","xl":"none","xs":"none","md":"none"},"id":"xfyprtsiem","size":{"xs":{"stretch":true}}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"listOfApis","itemStyleView":"dropdown","allowViewSwitching":true,"filtersPosition":"popup","showApiType":true,"defaultGroupByTagToEnabled":false,"detailsPageHyperlink":null},{"type":"operationList","allowSelection":true,"defaultGroupByTagToEnabled":false,"defaultAllGroupTagsExpanded":false,"detailsPageHyperlink":null}],"role":"aside","styles":{"instance":{"grid-cell":{"xs":{"alignment":{"vertical":"start","horizontal":"start"}},"lg":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"vertical":"scroll","horizontal":"scroll"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"horizontal":"scroll"}},"md":{"alignment":{"vertical":"start","horizontal":"start"}}},"id":"lyyjjqivns","border":{"top":{"width":"","style":"solid","colorId":"colors/semi-trsp-lt-bg"},"right":{"width":1,"style":"solid","colorId":"colors/semi-trsp-lt-bg"},"bottom":{"width":"","style":"solid","colorId":null}},"background":{"colorId":"colors/lJzU8"},"padding":{"xl":{"top":20,"left":20,"right":20,"bottom":20},"xs":{"top":20,"left":20,"right":20,"bottom":20}},"borderRadius":null}}},{"type":"grid-cell","nodes":[{"type":"detailsOfApi","changeLogPageHyperlink":null},{"type":"operationDetails","enableConsole":true,"enableScrollTo":false,"defaultSchemaView":"table","showExamples":false}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"alignment":{"vertical":"start","horizontal":"start"}},"lg":{"position":{"col":2,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"vertical":"scroll","horizontal":"scroll"}},"xl":{"alignment":{"vertical":"start","horizontal":"start"},"overflow":{"horizontal":"scroll"}}},"id":"gvqomvoztq","padding":{"xs":{"top":20,"left":20,"right":20,"bottom":20},"xl":null},"border":{"top":{"width":"","style":"solid","colorId":null},"bottom":{"width":"","style":"solid","colorId":null}},"borderRadius":null}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"}},"grid":{"lg":{"rows":["auto"],"cols":["400px","1fr"]},"xs":{"rows":["auto","auto"],"cols":["1fr"]}},"id":"dovidzrpad","size":{"maxWidth":"1440px"}}}}]}]}},"/contentTypes/document/contentItems/bc0b16ea-592d-c4c2-e5b6-ccef526cf42a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"bc0b16ea-592d-c4c2-e5b6-ccef526cf42a","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none","lg":"none","md":"none"},"id":"eytsxyslkz","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","identifier":"S6i3i","nodes":[{"type":"text","text":"Reset password"}]}]},{"type":"validationSummary"},{"type":"confirmPassword"}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":null,"lg":null,"xl":null},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25},"lg":null},"padding":null}}}]}]}},"/contentTypes/document/contentItems/configuration":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"configuration","properties":{"nodes":[{"site":{"title":"Microsoft Azure API Management - developer portal","description":"Discover APIs, learn how to use them, try them out interactively, and sign up to acquire keys.","keywords":"Azure, API Management, API, developer","author":"Microsoft Azure API Management"},"isRedesignEnabled":true,"theme":"apim-v2"}]}},"/contentTypes/document/contentItems/e0987ca1-f458-b546-7697-7be594b35583":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e0987ca1-f458-b546-7697-7be594b35583","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"aerdouvoot","stickTo":{"lg":"none","xl":"none","md":"none","xs":"none"},"size":null,"background":{"images":[{"sourceId":"contentTypes/blob/contentItems/54635f91-230a-28fd-a532-c246f2356f0f","position":"center center","size":"cover","repeat":"no-repeat","attachment":null,"blend":null}]}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"paragraph","styles":{"appearance":"globals/body/ji4hv","alignment":{"xs":"utils/text/alignCenter","md":"utils/text/alignLeft"}},"identifier":null,"nodes":[{"type":"text","text":"Transform ideas into reality with our APIs"}]},{"type":"paragraph","styles":{"appearance":"globals/body/tkf9e","alignment":{"xs":"utils/text/alignCenter","md":"utils/text/alignLeft"}},"identifier":null,"nodes":[{"type":"text","text":"Our API Developer Portal offers the tools you need to explore, test, and integrate APIs with ease. Start building today."}]}]},{"type":"button","label":"Explore APIs","styles":{"appearance":"components/button/primary","instance":{"id":"zhqnlhmoql","padding":{"top":10,"left":20,"right":20,"bottom":10}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614"}},{"type":"button","label":"Sign up","styles":{"appearance":"components/button/default","instance":{"id":"sleofjegbz","margin":{"left":10},"padding":{"top":9,"left":20,"right":20,"bottom":9}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}}],"role":"aside","styles":{"instance":{"grid-cell":{"md":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"horizontal":"start","vertical":"center"},"overflow":null},"xs":{"position":{"col":1,"row":2},"span":{"cols":1,"rows":1}},"xl":{"alignment":{"horizontal":"start"},"overflow":null}},"id":"omeapvnfdi","padding":{"xs":{"left":20,"right":20,"bottom":50}},"border":null,"borderRadius":null}}},{"type":"grid-cell","nodes":[{"type":"picture","styles":{"appearance":"components/picture/default","instance":{"margin":null,"id":"sjjxoovbbn"}},"sourceId":"contentTypes/blob/contentItems/f1183eca-b12a-24b7-23e8-345854d74aa6"}],"role":"article","styles":{"instance":{"grid-cell":{"md":{"position":{"col":2,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}},"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1}},"xl":{"alignment":{"vertical":"center","horizontal":"center"},"overflow":null}},"id":"jrrobypadz","padding":{"xs":{"top":40,"bottom":40,"right":10}},"border":null,"borderRadius":null}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"},"lg":null,"xl":null,"md":null},"padding":{"xs":{"top":0,"bottom":5,"left":0,"right":0},"lg":null,"xl":null,"md":null},"size":{"minHeight":"700px","maxWidth":"1400px"},"grid":{"md":{"rows":["auto"],"cols":["5fr","7fr"]},"xs":{"rows":["auto","auto"],"cols":["1fr"]}},"id":"abzfkynpvf"}}}]},{"type":"layout-section","styles":{"instance":{"id":"gpgvbrfcfq","stickTo":{"lg":"none","sm":"none","md":"none","xl":"none"},"background":{"images":[{"sourceId":"contentTypes/blob/contentItems/54635f91-230a-28fd-a532-c246f2356f0f","position":"center center","size":"cover","repeat":"no-repeat"}]}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","styles":{"alignment":{"xl":"utils/text/alignCenter","lg":"utils/text/alignCenter","xs":"utils/text/alignCenter","md":"utils/text/alignCenter"}},"identifier":"b9kvz","nodes":[{"type":"text","text":"Resources"}]}]},{"type":"card","styles":{"appearance":"components/card/default","instance":{"padding":{"top":0,"left":0,"right":0,"bottom":0},"margin":{"top":20,"left":20,"right":20,"bottom":20},"size":{"width":"350px"},"id":"xrsrqictj1","background":{"colorId":"colors/defaultBg"},"container":{"xl":{"alignment":{"horizontal":"start"}}}}},"nodes":[{"type":"picture","caption":"Feature 1","width":"245px","height":200,"styles":{"appearance":"components/picture/default","instance":{"margin":{"left":"auto","right":"auto"},"id":"kvsnazahzr"}},"sourceId":"contentTypes/blob/contentItems/fda973f5-65b8-5b64-cd56-4df32ec32ffd"},{"type":"text-block","nodes":[{"type":"heading4","identifier":"wbd0t","nodes":[{"type":"text","text":"Get started"}]},{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignLeft"}},"nodes":[{"type":"text","text":"Learn how to get started with our APIs and explore our catalog to find the perfect API for your needs."}]}],"styles":{"instance":{"padding":{"top":10,"left":15,"right":15,"bottom":10},"id":"bwhlogsyed"}}},{"type":"button","label":"Start here","styles":{"appearance":"components/button/default","instance":{"id":"mbvvfcorft","margin":{"left":15,"bottom":15}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614"}}]},{"type":"card","styles":{"appearance":"components/card/default","instance":{"padding":{"top":0,"left":0,"right":0,"bottom":0},"margin":{"top":20,"left":20,"right":20,"bottom":20},"size":{"width":"350px"},"id":"xrsrqictj2","background":{"colorId":"colors/defaultBg"},"container":{"xl":{"alignment":{"horizontal":"start"}}}}},"nodes":[{"type":"picture","caption":"Feature 2","width":"245px","height":200,"styles":{"appearance":"components/picture/default","instance":{"margin":{"left":"auto","right":"auto"},"id":"gkagnfnpev"}},"sourceId":"contentTypes/blob/contentItems/c927adba-5309-1b4c-80e7-9e13f2d663c1"},{"type":"text-block","nodes":[{"type":"heading4","identifier":"d40e7","nodes":[{"type":"text","text":"Subscribe"}]},{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignLeft"}},"nodes":[{"type":"text","text":"Products in the developer portal encompass one or more APIs. Subscribe to a product to get access to utilize the APIs."}]}],"styles":{"instance":{"padding":{"top":10,"left":15,"right":15,"bottom":10},"id":"bwhlogsyed"}}},{"type":"button","label":"Learn more","styles":{"appearance":"components/button/default","instance":{"id":"yxetigiwcq","margin":{"left":15,"bottom":15}}},"hyperlink":{"targetId":"contentTypes/page/contentItems/9862f795-6e36-217e-6dc7-cf7226591267"}}]},{"type":"card","styles":{"appearance":"components/card/default","instance":{"padding":{"top":0,"left":0,"right":0,"bottom":0},"margin":{"top":20,"left":20,"right":20,"bottom":20},"size":{"width":"350px"},"id":"xrsrqictj3","container":{"xl":{"alignment":{"horizontal":"start"}}},"background":{"colorId":"colors/defaultBg"}}},"nodes":[{"type":"picture","caption":"Feature 3","width":"245px","height":200,"styles":{"appearance":"components/picture/default","instance":{"margin":{"left":"auto","right":"auto"},"id":"ymaqmwwrhj"}},"sourceId":"contentTypes/blob/contentItems/a8912683-6777-1252-2583-2fe2f5ecd80a"},{"type":"text-block","nodes":[{"type":"heading4","identifier":"cve4c","nodes":[{"type":"text","text":"Get support"}]},{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignLeft"}},"nodes":[{"type":"text","text":"Need help? Our API admin team is here for you. Reach out to us for any questions or assistance with our APIs."}]}],"styles":{"instance":{"padding":{"top":10,"left":15,"right":15,"bottom":10},"id":"bwhlogsyed"}}},{"type":"button","label":"Contact us","styles":{"appearance":"components/button/default","instance":{"id":"kdduoynoxq","margin":{"left":15,"bottom":15}}},"hyperlink":{"target":"_blank","targetId":"contentTypes/url/contentItems/feefd660-d398-3891-c834-24f816633a01"}}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"top","horizontal":"center"}},"xl":{"alignment":{"vertical":"top","horizontal":"center"}}},"id":"omovqpozlr","padding":{"xs":{"bottom":20}}}}}],"styles":{"instance":{"margin":{"xs":{"top":10,"bottom":10,"left":"auto","right":"auto"},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":150}},"padding":{"xs":{"top":5,"bottom":5,"left":5,"right":5},"md":{"top":15,"bottom":15,"left":15,"right":15}},"size":{"maxWidth":"1400px"},"id":"eidwzurrsq","grid":{"xs":{"rows":["auto"],"cols":["1fr"]}}}}}]}]}},"/contentTypes/document/contentItems/e5b8027e-58d8-072f-434c-b1e7cda24baf":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e5b8027e-58d8-072f-434c-b1e7cda24baf","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"mgmylqcodk","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"application-list","itemStyleView":"list","detailsPageHyperlink":null}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":"1400px"}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}},"padding":null}}}]}]}},"/contentTypes/document/contentItems/f2e9f447-9cb8-079e-4d56-e14aa1f24115":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f2e9f447-9cb8-079e-4d56-e14aa1f24115","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"stickTo":{"xl":"none"},"id":"lplmswupxo","size":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"application-details","detailsPageHyperlink":null}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":"1400px"}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}},"padding":null}}}]}]}},"/contentTypes/document/contentItems/f95c292b-b40b-e2cd-b5dc-71fffc97083d":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f95c292b-b40b-e2cd-b5dc-71fffc97083d","properties":{"nodes":[{"type":"layout-section","styles":null,"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","attrs":{"id":"nGEr2"},"nodes":[{"type":"text","text":"Page you're looking for doesn't exist"}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/home-page-layout":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"home-page-layout","properties":{"nodes":[{"type":"layout-section","styles":{"instance":{"id":"pdboylzuei","stickTo":{"md":"none","lg":"none","xs":"none"},"border":{"bottom":{"width":1,"style":"solid","colorId":"colors/ei6n0"}}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"picture","caption":"Logo","height":"30px","styles":{"appearance":"components/picture/default","instance":{"margin":{"right":"auto"},"id":"depobiyafx"}},"sourceId":"contentTypes/blob/contentItems/2dd99fb4-4c42-86b1-ab2a-ae5d99df2767"},{"type":"menu","navigationItemId":"main","layout":"horizontal","styles":{"appearance":"components/menu/g0f2p","instance":{"id":"ghmsnvgjnz","display":{"md":"inline-block","xs":"none"}}}},{"type":"menu","navigationItemId":"ed7c0fc2-6fa3-2efd-4ec9-0d8feb484a12","layout":"horizontal","styles":{"appearance":"components/menu/g0f2p","instance":{"id":"fsdfdgxxrd"}},"security":{"type":"group","allow":["developers"]}},{"type":"button","label":"Sign in","styles":{"appearance":"components/button/p66vu","instance":{"id":"jixcqqzbxy","display":{"md":"inline-block","xs":"none"}}},"security":{"type":"group","allow":["guests"]},"hyperlink":{"targetId":"contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60"}},{"type":"button","label":"Sign out","styles":{"appearance":"components/button/p66vu","instance":{"id":"qtjbywayln","display":{"md":"inline-block","xs":"none"}}},"security":{"type":"group","allow":["developers"]},"hyperlink":{"target":"_self","targetId":"contentTypes/url/contentItems/1bec2534-46c4-7555-f8ec-ffcd9645fc2e"}},{"type":"button","label":"☰","styles":{"appearance":"components/button/no-border","instance":{"display":{"xs":"inline-block","md":"none"}}},"hyperlink":{"target":"_popup","targetId":"contentTypes/popup/contentItems/main-menu-popup"}}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"between"}},"xl":{"alignment":{"vertical":"center","horizontal":"between"}},"md":{"alignment":{"vertical":"center","horizontal":"between"}},"lg":{"alignment":{"vertical":"center","horizontal":"between"}}},"padding":{"xs":{"top":0,"left":20,"right":20,"bottom":0}},"id":"zokhwnoctz","border":{"bottom":{"width":"","style":"solid"}}}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"}},"size":{"md":{"maxWidth":"1400px"}},"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"vynmgbdwzd"}}}]},{"type":"layout-section","styles":{"instance":{"id":"kjdslhuhdu","stickTo":{"xl":"none","xs":"none","sm":"none","md":"none","lg":"none"},"size":{"xl":{"stretch":true},"xs":{"stretch":true},"sm":{"stretch":true},"md":{"stretch":true},"lg":{"stretch":true}},"border":{"bottom":{"width":"","style":"solid","colorId":"colors/ei6n0"}}}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"page"}],"role":"main","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"oueowolkew"}}}],"styles":{"instance":{"margin":{"xs":{"top":0,"bottom":0,"left":"auto","right":"auto"}},"padding":{"xs":{"top":0,"bottom":0,"left":0,"right":0}},"id":"kdskjsijw","grid":{"xs":{"rows":["auto"],"cols":["1fr"]}}}}}]},{"type":"layout-section","styles":{"instance":{"id":"qrjgiseunh","stickTo":{"xs":"none"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"}},"borderRadius":null}},"nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"paragraph","styles":{"alignment":{"xl":"utils/text/alignCenter","xs":"utils/text/alignCenter"},"appearance":"globals/body/u2qqf"},"identifier":null,"nodes":[{"type":"text","text":"Powered by "},{"type":"text","text":"Azure API Management","marks":[{"type":"hyperlink","attrs":{"target":"_blank","targetId":"contentTypes/url/contentItems/e4a52924-c46c-8797-b4d2-025e1f41896a"}}]},{"type":"text","text":" © Microsoft 2025"}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"padding":{"xs":{"bottom":0}},"id":"zlppdhyary"}}}],"styles":{"instance":{"margin":{"xs":{"left":"auto","right":"auto"}},"padding":{"xs":{"top":20,"bottom":0,"left":20,"right":20}},"size":{"lg":{"maxWidth":1140}},"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"xebsquaqqn"}}}]}]}},"/contentTypes/document/contentItems/main-menu-popup":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"main-menu-popup","properties":{"backdrop":true,"styles":{"instance":{"components":{"popupContainer":{"default":{"position":{"position":"fixed","top":"50%","right":0},"background":{"colorId":"colors/defaultBg"},"transform":{"translate":{"x":"0px","y":"calc(-50%)"}},"size":{"height":"100%","minWidth":"200px","maxWidth":"400px"},"padding":{"top":20,"left":30,"right":30,"bottom":30},"container":{"alignment":{"horizontal":"start"},"overflow":{"vertical":"scroll","horizontal":"scroll"}},"border":{"bottom":{"colorId":"colors/15o9C","style":"solid","width":"1"},"left":{"colorId":"colors/15o9C","style":"solid","width":"1"},"right":{"colorId":"colors/15o9C","style":"solid","width":"1"},"top":{"colorId":"colors/15o9C","style":"solid","width":"1"}}}},"popupBackdrop":{"default":{"background":{"colorId":"colors/dsGWq"}}}},"id":"paypjjihrc"}},"nodes":[{"type":"menu","minHeading":null,"maxHeading":null,"navigationItemId":"main","layout":"vertical","styles":{"appearance":"components/menu/default","instance":{"size":{"width":"300px"},"id":"ficwenaevm","margin":null,"padding":null}}},{"type":"menu","minHeading":null,"maxHeading":null,"navigationItemId":"74ed66aa-1cc0-f91a-60c6-6e1b2aa239ea","layout":"vertical","styles":{"appearance":"components/menu/default","instance":{"size":{"width":"300px"},"id":"rmmwxirmch","margin":null,"padding":null}},"security":{"roles":["anonymous"]}},{"type":"menu","minHeading":null,"maxHeading":null,"navigationItemId":"ed7c0fc2-6fa3-2efd-4ec9-0d8feb484a12","layout":"vertical","styles":{"appearance":"components/menu/default","instance":{"size":{"width":"100%"},"id":"ebhloafmvf","margin":null,"padding":null}},"security":{"roles":["authenticated"]}},{"type":"dismiss-button","label":"✕","styles":{"appearance":"components/button/no-border","instance":{"id":"main-menu-dismiss","position":{"position":"absolute","top":0,"right":0}}}}]}},"/contentTypes/document/contentItems/navigation":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"navigation","properties":{"nodes":[{"id":"main","label":"Main menu","navigationItems":[{"id":"0901ccd9-9c01-8a2b-5d86-7edd429f3a9a","label":"Home","targetId":"contentTypes/page/contentItems/e0987ca1-f458-b546-7697-7be594b35583"},{"id":"32fea618-15ed-f8ab-e3fa-ec71a144632f","label":"APIs","targetId":"contentTypes/page/contentItems/38b4a583-e611-dbf8-b945-a2d591c61614"},{"id":"775bc451-92f1-8463-f06c-0251fc529bd9","label":"Products","targetId":"contentTypes/page/contentItems/9862f795-6e36-217e-6dc7-cf7226591267"},{"id":"364867c6-8107-a87f-e93d-40bf9516a8ee","label":"Applications","navigationItems":null,"targetId":"contentTypes/page/contentItems/e5b8027e-58d8-072f-434c-b1e7cda24baf","targetWindow":"_self"}]},{"id":"ed7c0fc2-6fa3-2efd-4ec9-0d8feb484a12","label":"Authenticated user menu","navigationItems":[{"id":"bb3147e0-0123-0471-2754-79bd90622f46","label":"Reports","targetId":"contentTypes/page/contentItems/89bb02ae-194e-828f-d595-df5675f5e6d1"},{"id":"c4bc59d2-e97d-d5d3-bfa0-d3f667310f35","label":"Profile","targetId":"contentTypes/page/contentItems/4e3cf6a5-574a-ba08-1f23-2e7a38faa6d8"}]},{"id":"74ed66aa-1cc0-f91a-60c6-6e1b2aa239ea","label":"Anonymous user menu","navigationItems":[{"id":"754349ff-01fd-2e38-c883-145f47fa8f34","label":"Sign in","targetId":"contentTypes/page/contentItems/81b0cd55-fb1a-12ee-e41a-d2d6b851ac60"},{"id":"d1f8a15c-2946-b504-cee1-4f29d5300082","label":"Sign up","targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}]},{"id":"e4c00a1d-13ee-c080-8583-bfd496298f33","label":"Home page - sign up","navigationItems":[{"id":"d973fd56-14ae-61d5-6d34-bdd4344890f6","label":"Sign up","targetId":"contentTypes/page/contentItems/0145411a-2c82-325a-4390-76cff184530b"}]},{"id":"9cc122c6-48df-a817-9e78-ad176f7b02b5","label":"Footer menu","navigationItems":[{"id":"96b02fb1-1d53-6e04-cdd1-73fcadb4b893","label":"Terms of Use"},{"id":"61669623-13e5-916a-48c6-e8ef5751658a","label":"Developer portal resources","navigationItems":null},{"id":"d340d326-2714-d2e6-ad25-c809fa7eea8b","label":"FAQs","navigationItems":null}]}]}},"/contentTypes/document/contentItems/new-page-template":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"new-page-template","properties":{"nodes":[{"type":"layout-section","nodes":[{"type":"grid","nodes":[{"type":"grid-cell","nodes":[{"type":"text-block","nodes":[{"type":"heading1","nodes":[{"type":"text","text":"Heading 1"}]},{"type":"paragraph","nodes":[{"type":"text","text":"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."}]}]}],"role":"article","styles":{"instance":{"grid-cell":{"xs":{"position":{"col":1,"row":1},"span":{"cols":1,"rows":1},"alignment":{"vertical":"center","horizontal":"center"}}},"id":"myaxhjsvdw","padding":{"xs":{"top":5,"left":5,"right":5,"bottom":5},"md":{"top":15,"left":15,"right":15,"bottom":15}}}}}],"styles":{"instance":{"grid":{"xs":{"rows":["auto"],"cols":["1fr"]}},"id":"cmwjhkfdnp","size":{"sm":{"maxWidth":540},"md":{"maxWidth":720},"lg":{"maxWidth":960},"xl":{"maxWidth":1140}},"margin":{"xs":{"top":10,"left":"auto","right":"auto","bottom":10},"md":{"top":15,"bottom":15},"xl":{"top":25,"bottom":25}}}}}]}]}},"/contentTypes/document/contentItems/stylesheet":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"stylesheet","properties":{"nodes":[{"animations":{"shake":{"displayName":"Shake","duration":1000,"iterationCount":"infinite","id":"animations/shake","name":"shake","timingFunction":"linear"}},"colors":{"Bqr2r":{"displayName":"Featured","id":"colors/Bqr2r","value":"rgba(254, 212.99999999999994, 60.00000000000001, 1)"},"default":{"displayName":"Text - black","id":"colors/default","value":"#000"},"Gpcrr":{"displayName":"Transparent","id":"colors/Gpcrr","value":"rgba(167, 51, 51, 0.0)"},"defaultBg":{"displayName":"Background - white","id":"colors/defaultBg","value":"rgba(255, 255, 255, 1.0)"},"primaryText":{"displayName":"Text - white","id":"colors/primaryText","value":"#fff"},"s7KlY":{"id":"colors/s7KlY","displayName":"Primary","value":"rgba(0,115,201,1)"},"vsU56":{"id":"colors/vsU56","displayName":"Primary (hover)","value":"rgba(1, 85, 150, 1)"},"O6nZg":{"id":"colors/O6nZg","displayName":"Primary (active)","value":"rgba(0, 50, 86, 1.0)"},"VBrll":{"id":"colors/VBrll","displayName":"Background - black","value":"rgba(4, 2, 2, 1.0)"},"links":{"displayName":"Links","id":"colors/links","value":"#0078d4"},"R5a87":{"displayName":"Links hover","id":"colors/R5a87","value":"#0078d4"},"H6I5d":{"displayName":"Text - transparent","id":"colors/H6I5d","value":"rgba(0, 0, 0, 0.3764705882352941)"},"formattedBg":{"displayName":"Formatted text Bg","id":"colors/formattedBg","value":"#f7f7f7"},"FI3dz":{"displayName":"Featured (hover)","id":"colors/FI3dz","value":"rgba(255, 237, 168, 1)"},"Gzlyb":{"displayName":"Featured (active)","id":"colors/Gzlyb","value":"rgba(227.46944732666017, 191.37360001860827, 56.67446250319523, 1)"},"HUebs":{"displayName":"Control border (disabled)","id":"colors/HUebs","value":"rgba(203.6694473266602, 203.6694473266602, 203.6694473266602, 1)"},"QIdF6":{"displayName":"Control border","id":"colors/QIdF6","value":"rgba(84.66944732666016, 84.66944732666016, 84.66944732666016, 1)"},"semi-trsp-lt-bg":{"displayName":"Border","id":"colors/semi-trsp-lt-bg","value":"#87878726"},"dsGWq":{"displayName":"Popup backdrop","id":"colors/dsGWq","value":"rgba(0, 0, 0, 0.53)"},"pq00n":{"displayName":"Button - base","id":"colors/pq00n","value":"rgba(15, 108, 189, 1)"},"t94k0":{"displayName":"Button - hover","id":"colors/t94k0","value":"rgba(15, 108, 189, 1)"},"0tmtc":{"displayName":"Border - bottom","id":"colors/0tmtc","value":"rgba(97, 97, 97, 1)"},"ei6n0":{"displayName":"Border - primary","id":"colors/ei6n0","value":"rgba(209, 209, 209, 1)"},"h40s7":{"displayName":"Menu: Selected item indicator","id":"colors/h40s7","value":"rgba(0, 0, 0, 1)"},"672oc":{"displayName":"Footer background","id":"colors/672oc","value":"rgba(230, 230, 230, 1)"},"wgkng":{"displayName":"Footer text color","id":"colors/wgkng","value":"rgba(112, 112, 112, 1)"},"9shan":{"displayName":"Default button","id":"colors/9shan","value":"rgba(255, 255, 255, 1)"},"ffp5f":{"displayName":"Default button (hover)","id":"colors/ffp5f","value":"rgba(238, 233, 233, 1)"}},"components":{"button":{"default":{"id":"components/button/default","displayName":"Normal button","allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/9shan"},"border":{"top":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"left":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"right":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":"1","style":"solid","colorId":"colors/ei6n0"}},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"category":"appearance","margin":{"top":15},"padding":{"top":6,"left":18,"right":18,"bottom":6},"shadow":{"shadowId":"shadows/none"},"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","colorId":"colors/default","shadowId":"shadows/none"},"states":{"hover":{"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","colorId":"colors/default","shadowId":"shadows/none","textDecoration":"none"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"left":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"right":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":1,"style":"solid","colorId":"colors/ei6n0"}},"transition":{"timingFunction":"ease-in-out","delay":"0","duration":"0.3"},"id":"caovfumhjb","background":{"colorId":"colors/ffp5f","gradientId":null}},"active":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}},"disabled":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}}}},"primary":{"category":"appearance","displayName":"Featured button","id":"components/button/primary","allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/s7KlY"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"margin":{"left":0,"right":10},"padding":{"bottom":6},"shadow":null,"typography":{"fontId":"fonts/h4ilD","fontSize":"14px","fontWeight":"600","colorId":"colors/defaultBg","shadowId":"shadows/none"},"states":{"hover":{"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","colorId":"colors/primaryText","shadowId":"shadows/none"},"background":{"colorId":"colors/vsU56"},"transition":{"timingFunction":"ease-in-out","delay":"0","duration":"0.3","property":"all"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}},"id":"lefvowpnck"},"active":{"background":{"colorId":"colors/pq00n"},"transition":{"duration":"0","property":"all"},"border":{"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}},"id":"byzbjcdnhv"},"disabled":{"background":{"colorId":"colors/HUebs"},"border":{"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}}},"focus":{"border":{"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}}}},"border":{"top":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"left":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"right":{"width":1,"style":"solid","colorId":"colors/Gpcrr"},"bottom":{"width":1,"style":"solid","colorId":"colors/Gpcrr"}}},"no-border":{"allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/defaultBg"},"border":{"top":{"width":0},"left":{"width":0},"right":{"width":0},"bottom":{"width":0}},"borderRadius":{"topLeftRadius":5,"topRightRadius":5,"bottomLeftRadius":5,"bottomRightRadius":5},"category":"appearance","displayName":"Border-less button","id":"components/button/no-border","margin":{"top":10,"left":10,"right":10,"bottom":10},"padding":{"top":10,"left":15,"right":15,"bottom":10},"shadow":{"shadowId":"shadows/none"},"states":{"hover":{"background":{"colorId":"colors/semi-trsp-lt-bg"},"typography":{"colorId":"colors/default"},"border":{"top":{"width":0},"left":{"width":0},"right":{"width":0},"bottom":{"width":0}}},"border":{"top":{"width":0},"left":{"width":0},"right":{"width":0},"bottom":{"width":0}}},"typography":{"fontStyle":"normal","colorId":"colors/default","textDecoration":"none"}},"p66vu":{"id":"components/button/p66vu","displayName":"Account button","allowedStates":["hover","focus","active","disabled"],"background":{"colorId":"colors/s7KlY"},"border":{"top":{"width":"1","style":"solid","colorId":"colors/QIdF6"},"left":{"width":"1","style":"solid","colorId":"colors/QIdF6"},"right":{"width":"1","style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":"1","style":"solid","colorId":"colors/QIdF6"}},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"category":"appearance","margin":{"top":0,"left":25,"right":5,"bottom":0},"padding":{"top":6,"left":18,"right":18,"bottom":6},"shadow":{"shadowId":"shadows/none"},"typography":{"fontId":"fonts/h4ilD","fontSize":"14px","fontWeight":"600","colorId":"colors/primaryText"},"states":{"hover":{"typography":{"fontId":"fonts/h4ilD","fontWeight":"600","fontStyle":"normal","colorId":"colors/primaryText","textDecoration":"none"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/s7KlY"},"right":{"width":1,"style":"solid","colorId":"colors/s7KlY"},"bottom":{"width":1,"style":"solid","colorId":"colors/s7KlY"},"top":{"width":1,"style":"solid","colorId":"colors/s7KlY"}},"transition":{"timingFunction":"ease-in-out","delay":"0","duration":"0.3"},"id":"caovfumhjb","background":{"colorId":"colors/vsU56","gradientId":null}},"active":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}},"disabled":{"background":{"colorId":"colors/HUebs"},"border":{"left":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"bottom":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"right":{"width":1,"style":"solid","colorId":"colors/QIdF6"},"top":{"width":1,"style":"solid","colorId":"colors/QIdF6"}}}}}},"card":{"default":{"border":{"top":{"color":"orange","style":"solid"},"left":{"color":"orange","style":"solid"},"right":{"color":"orange","style":"solid"},"bottom":{"color":"orange","style":"solid"}},"category":"appearance","displayName":"Default","id":"components/card/default","allowedStates":["hover"],"padding":{"top":50,"left":30,"right":30,"bottom":50},"shadow":{"shadowId":"shadows/x5lnn"},"margin":{"top":30,"left":30,"right":30,"bottom":30},"typography":{"textAlign":"left"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4}},"sf67m":{"id":"components/card/sf67m","displayName":"No border","category":"appearance","allowedStates":["hover"],"padding":{"top":0,"left":0,"right":0,"bottom":20},"shadow":{"shadowId":"shadows/none"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4}},"e0ndu":{"border":{"top":{"color":"orange","style":"solid"},"left":{"color":"orange","style":"solid"},"right":{"color":"orange","style":"solid"},"bottom":{"color":"orange","style":"solid"}},"category":"appearance","displayName":"Home page fold","id":"components/card/e0ndu","allowedStates":["hover"],"padding":{"top":50,"left":30,"right":30,"bottom":50},"shadow":{"shadowId":"shadows/none"},"margin":{"top":30,"left":30,"right":30,"bottom":30},"typography":{"textAlign":"left"},"size":{"maxWidth":"550px"}}},"navbar":{"default":{"components":{"navItem":{"default":{"displayName":"Navigation link","category":"appearance","id":"components/navbar/default/components/navItem/default","allowedStates":["hover","focus","active"],"typography":{"fontWeight":"normal","fontStyle":"normal","colorId":"colors/s7KlY","textTransform":"uppercase"},"states":{"hover":{"typography":{"fontWeight":"normal","fontStyle":"normal","textTransform":"uppercase","colorId":"colors/primaryText"},"background":{"colorId":"colors/links"}}},"padding":{"top":5,"left":30,"right":30,"bottom":5}},"active":{"allowedStates":["hover","focus","active"],"displayName":"Navigation link (active)","id":"components/navbar/default/components/navItem/active"}}},"displayName":"Navigation bar","id":"components/navbar/default","category":"appearance","typography":{"fontWeight":"normal","fontStyle":"normal"}}},"picture":{"default":{"displayName":"Normal picture","category":"appearance","id":"components/picture/default"}},"videoPlayer":{"default":{"displayName":"Normal video player","category":"appearance","id":"components/videoPlayer/default"}},"menu":{"default":{"category":"appearance","components":{"dropdown":{"default":{"background":{"colorId":"colors/defaultBg"},"category":"appearance","displayName":"Menu dropdown","id":"components/menu/default/components/dropdown/default","shadow":{"shadowId":"shadows/shadow2"},"components":{"navLink":{"active":{"id":"components/menu/default/components/dropdown/default/components/navLink/active","allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","typography":{"colorId":"colors/default"},"border":{"bottom":{"width":"","style":"solid","colorId":null}}}}}}},"navLink":{"active":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/default/components/navLink/active","border":{"bottom":{"width":"","style":"solid","colorId":"colors/h40s7"}},"padding":{"top":12,"bottom":12}},"default":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/default/components/navLink/default","margin":{"left":20,"right":15},"padding":{"top":12,"bottom":12},"typography":{"colorId":"colors/default"}}}},"displayName":"Normal menu","id":"components/menu/default","border":{"right":{"width":1,"style":"solid","colorId":null}},"margin":{"right":0},"padding":{"top":5}},"yhdk9":null,"wlu0u":null,"g0f2p":{"category":"appearance","components":{"dropdown":{"default":{"background":{"colorId":"colors/defaultBg"},"category":"appearance","displayName":"Menu dropdown","id":"components/menu/g0f2p/components/dropdown/default","shadow":{"shadowId":"shadows/shadow2"},"components":{"navLink":{"active":{"id":"components/menu/g0f2p/components/dropdown/default/components/navLink/active","allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","typography":{"colorId":"colors/default"},"border":{"bottom":{"width":1,"style":"solid","colorId":null}}}}}}},"navLink":{"active":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/g0f2p/components/navLink/active","border":{"bottom":{"width":"4","style":"solid","colorId":"colors/h40s7"}},"padding":{"top":12,"bottom":12}},"default":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/g0f2p/components/navLink/default","margin":{"left":20,"right":15},"padding":{"top":12,"bottom":12},"typography":{"colorId":"colors/default"}}}},"displayName":"Heading menu","id":"components/menu/g0f2p","border":{"right":{"width":1,"style":"solid","colorId":"colors/ei6n0"}},"margin":{"right":0},"padding":{"top":5}},"hq0xs":{"category":"appearance","components":{"dropdown":{"default":{"background":{"colorId":"colors/defaultBg"},"category":"appearance","displayName":"Menu dropdown","id":"components/menu/hq0xs/components/dropdown/default","shadow":{"shadowId":"shadows/shadow2"}}},"navLink":{"active":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/hq0xs/components/navLink/active","border":{"bottom":{"width":"4","style":"solid","colorId":null}},"padding":{"top":12,"bottom":12}},"default":{"allowedStates":["hover","focus","active","disabled"],"displayName":"Navigation link","id":"components/menu/hq0xs/components/navLink/default","margin":{"left":5,"right":5},"padding":{"top":12,"bottom":12},"typography":{"colorId":"colors/default"}}}},"displayName":"Footer menu","id":"components/menu/hq0xs","border":{"right":{"width":1,"style":"solid","colorId":null}},"margin":{"right":0},"padding":{"top":5}}},"formGroup":{"default":{"id":"components/formGroup/default","category":"appearance","displayName":"Normal form control","components":{"formControl":{"default":{"displayName":"Text box","category":"appearance","id":"components/formGroup/default/components/formControl/default","allowedStates":["hover","focus","active","disabled","valid","invalid"],"border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"left":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"right":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":1,"style":"solid","colorId":"colors/0tmtc"}},"padding":{"top":7,"left":10,"right":10,"bottom":5},"shadow":{"shadowId":"shadows/none"},"typography":{"fontWeight":"normal","fontStyle":"normal"},"borderRadius":{"topLeftRadius":4,"topRightRadius":4,"bottomLeftRadius":4,"bottomRightRadius":4},"margin":{"bottom":20},"states":{"focus":{"margin":{"bottom":20},"id":"kqorcxgbpi","border":{"top":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"left":{"width":1,"style":"solid","colorId":"colors/ei6n0"},"right":{"width":"1","style":"solid","colorId":"colors/ei6n0"},"bottom":{"width":"2","style":"solid","colorId":"colors/pq00n"}}}}}},"formLabel":{"default":{"id":"components/formGroup/default/components/formLabel/default","displayName":"Label"}},"invalidFeedback":{"default":{"id":"components/formGroup/default/components/invalidFeedback/default","displayName":"Invalid feedback"}}},"margin":{"top":0},"padding":{"left":0},"borderRadius":{"bottomLeftRadius":4},"border":{"bottom":{"width":"","style":"solid","colorId":"colors/0tmtc"}}}}},"fonts":{"default":{"displayName":"Quicksand","family":"Quicksand","id":"fonts/default","variants":[{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKodSZaM9iE8KbpRA_pgHYoSA.ttf","style":"normal","weight":"300"},{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKtdSZaM9iE8KbpRA_RLA.ttf","style":"regular","weight":400},{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKodSZaM9iE8KbpRA_p2HcoSA.ttf","style":"normal","weight":"500"},{"file":"https://fonts.gstatic.com/s/quicksand/v8/6xKodSZaM9iE8KbpRA_pkHEoSA.ttf","style":"normal","weight":"700"}]},"JGLby":{"id":"fonts/JGLby","family":"Roboto","displayName":"Roboto","category":"sans-serif","version":"v18","lastModified":"2017-10-16","variants":[{"weight":"100","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1MmgWxP.ttf"},{"weight":"100","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOiCnqEu92Fr1Mu51QrIzc.ttf"},{"weight":"300","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5vAw.ttf"},{"weight":"300","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TjARc9.ttf"},{"weight":400,"style":"regular","file":"https://fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Me5Q.ttf"},{"weight":400,"style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1Mu52xP.ttf"},{"weight":"500","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9vAw.ttf"},{"weight":"500","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51S7ABc9.ttf"},{"weight":"700","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmWUlvAw.ttf"},{"weight":"700","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TzBhc9.ttf"},{"weight":"900","style":"normal","file":"https://fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmYUtvAw.ttf"},{"weight":"900","style":"italic","file":"https://fonts.gstatic.com/s/roboto/v18/KFOjCnqEu92Fr1Mu51TLBBc9.ttf"}]},"h4ilD":{"id":"fonts/h4ilD","family":"Open Sans","displayName":"Open Sans","category":"sans-serif","version":"v16","lastModified":"2019-05-01","variants":[{"weight":"300","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UN_r8-VeJoCqeDjg.ttf"},{"weight":"300","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKWyV-hsKKKTjrPW.ttf"},{"weight":400,"style":"regular","file":"https://fonts.gstatic.com/s/opensans/v16/mem8YaGs126MiZpBA-U1UpcaXcl0Aw.ttf"},{"weight":400,"style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/mem6YaGs126MiZpBA-UFUJ0ef8xkA76a.ttf"},{"weight":"600","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UNirk-VeJoCqeDjg.ttf"},{"weight":"600","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKXGUehsKKKTjrPW.ttf"},{"weight":"700","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UN7rg-VeJoCqeDjg.ttf"},{"weight":"700","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKWiUOhsKKKTjrPW.ttf"},{"weight":"800","style":"normal","file":"https://fonts.gstatic.com/s/opensans/v16/mem5YaGs126MiZpBA-UN8rs-VeJoCqeDjg.ttf"},{"weight":"800","style":"italic","file":"https://fonts.gstatic.com/s/opensans/v16/memnYaGs126MiZpBA-UFUKW-U-hsKKKTjrPW.ttf"}]},"s4ze2":{"id":"fonts/s4ze2","family":"Lato","displayName":"Lato","category":"sans-serif","version":"v24","lastModified":"2024-09-04","variants":[{"weight":100,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u8w4BMUTPHh30wWyWrFCbw7A.ttf"},{"weight":100,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u-w4BMUTPHjxsIPy-vNiPg7MU0.ttf"},{"weight":300,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh7USew-FGC_p9dw.ttf"},{"weight":300,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u_w4BMUTPHjxsI9w2PHA3s5dwt7w.ttf"},{"weight":400,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6uyw4BMUTPHvxk6XweuBCY.ttf"},{"weight":400,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u8w4BMUTPHjxswWyWrFCbw7A.ttf"},{"weight":700,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh6UVew-FGC_p9dw.ttf"},{"weight":700,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u_w4BMUTPHjxsI5wqPHA3s5dwt7w.ttf"},{"weight":900,"style":"normal","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u9w4BMUTPHh50Xew-FGC_p9dw.ttf"},{"weight":900,"style":"italic","permalink":"https://fonts.gstatic.com/s/lato/v24/S6u_w4BMUTPHjxsI3wiPHA3s5dwt7w.ttf"}]}},"globals":{"a":{"default":{"displayName":"Link","id":"globals/a/default","allowedStates":["hover","focus","active"],"typography":{"colorId":"colors/links"},"states":{"hover":{"typography":{"colorId":"colors/R5a87","textDecoration":"underline"}}}}},"blockquote":{"default":{"displayName":"Quote","id":"globals/blockquote/default","typography":{"fontWeight":"normal","textAlign":"left","fontId":"fonts/default"}}},"body":{"default":{"displayName":"Regular","id":"globals/body/default","typography":{"fontId":"fonts/h4ilD","fontSize":"14px"}},"nq5w8":null,"u2qqf":{"id":"globals/body/u2qqf","displayName":"Footer text","typography":{"fontId":"fonts/h4ilD","fontSize":"14px","fontWeight":"600","colorId":"colors/wgkng"}},"ji4hv":{"id":"globals/body/ji4hv","displayName":"Title","typography":{"fontId":"fonts/s4ze2","fontSize":"70px","fontWeight":"700","lineHeight":"1.3em"}},"tkf9e":{"id":"globals/body/tkf9e","displayName":"Subtitle","typography":{"fontId":"fonts/h4ilD","fontSize":"25px"}}},"h1":{"default":{"displayName":"Heading Level 1","id":"globals/h1/default","typography":{"fontId":"fonts/h4ilD","fontSize":"32px","fontWeight":"600","fontStyle":"normal"},"margin":{"bottom":30,"top":5}}},"h2":{"default":{"displayName":"Heading Level 2","id":"globals/h2/default","typography":{"fontId":"fonts/h4ilD","fontSize":"27px","fontWeight":"600"},"border":{"top":{"style":"solid","color":"orange"},"left":{"style":"solid","color":"orange"},"right":{"style":"solid","color":"orange"},"bottom":{"style":"solid","color":"orange"}},"margin":{"top":20,"bottom":10}}},"h3":{"default":{"displayName":"Heading Level 3","id":"globals/h3/default","typography":{"fontId":"fonts/h4ilD","fontSize":"24px","fontWeight":"600"},"margin":{"top":40,"bottom":10}}},"h4":{"default":{"displayName":"Heading Level 4","id":"globals/h4/default","typography":{"fontId":"fonts/h4ilD","fontSize":20,"fontWeight":"600"},"margin":{"top":0,"bottom":12}}},"h5":{"default":{"displayName":"Heading Level 5","id":"globals/h5/default","typography":{"fontId":"fonts/h4ilD","fontSize":"16px","fontWeight":"600"},"margin":{"top":0,"left":0,"right":0,"bottom":0}}},"h6":{"default":{"displayName":"Heading Level 6","id":"globals/h6/default","typography":{"fontId":"fonts/h4ilD","fontSize":"12px"}}},"p":{"default":{"displayName":"Paragraph","id":"globals/p/default","typography":{"fontId":null,"colorId":"colors/default"},"padding":{"left":0}}},"ul":{"default":{"components":{"li":{"default":{"displayName":"List item","id":"globals/ul/default/components/li/default"}}},"displayName":"Bulleted list","id":"globals/ul/default"}},"ol":{"default":{"components":{"li":{"default":{"displayName":"List item","id":"globals/ol/default/components/li/default"}}},"displayName":"Numbered list","id":"globals/ol/default"}},"pre":{"default":{"background":{"colorId":"colors/formattedBg"},"borderRadius":{"bottomLeftRadius":5,"bottomRightRadius":5,"topLeftRadius":5,"topRightRadius":5},"displayName":"Formatted","id":"globals/pre/default","padding":{"bottom":15,"left":25,"right":25,"top":15},"typography":{"fontSize":14}}}},"gradients":{"gradient1":{"id":"gradients/gradient1","displayName":"Gradient 1","direction":"45deg","colorStops":[{"color":"rgba(234, 205, 163, 1)","length":"0"},{"color":"rgba(214, 174, 123, 1)","length":0}]}},"shadows":{"none":{"displayName":"No shadow","id":"shadows/none"},"shadow1":{"blur":5,"color":"rgba(0, 0, 0, 0.12549019607843137)","displayName":"Light shadow","id":"shadows/shadow1","offsetX":2,"offsetY":2,"spread":1},"shadow2":{"blur":10,"color":"rgba(0, 0, 0, 0.5)","displayName":"Medium shadow","id":"shadows/shadow2","offsetX":2,"offsetY":2},"shadow3":{"blur":2,"color":"rgba(0, 0, 0, 0.1)","displayName":"Inset shadow","inset":true,"id":"shadows/shadow3","offsetX":1,"offsetY":1},"x5lnn":{"blur":2,"spread":2,"color":"rgba(0, 0, 0, 0.18)","inset":false,"offsetX":0,"offsetY":0,"id":"shadows/x5lnn","displayName":"Card shadow"}},"utils":{"block":{"stretch":{"class":{"xs":"stretch"}},"snapToTop":{"class":{"xs":"sticky-top"}},"snapToBottom":{"class":{"xs":"sticky-bottom"}}},"content":{"alignHorizontallyAround":{"class":{"lg":"align-items-lg-around","md":"align-items-md-around","sm":"align-items-sm-around","xl":"align-items-xl-around","xs":"align-items-around"},"displayName":"Align around"},"alignHorizontallyBetween":{"class":{"lg":"align-items-lg-between","md":"align-items-md-between","sm":"align-items-sm-between","xl":"align-items-xl-between","xs":"align-items-between"},"displayName":"Align between"},"alignHorizontallyCenter":{"class":{"lg":"align-items-lg-center","md":"align-items-md-center","sm":"align-items-sm-center","xl":"align-items-xl-center","xs":"align-items-center"},"displayName":"Align center"},"alignHorizontallyEnd":{"class":{"lg":"align-items-lg-end","md":"align-items-md-end","sm":"align-items-sm-end","xl":"align-items-xl-end","xs":"align-items-end"},"displayName":"Align right"},"alignHorizontallyStart":{"class":{"lg":"align-items-lg-start","md":"align-items-md-start","sm":"align-items-sm-start","xl":"align-items-xl-start","xs":"align-items-start"},"displayName":"Align left"},"alignVerticallyAround":{"class":{"lg":"justify-content-lg-around","md":"justify-content-md-around","sm":"justify-content-sm-around","xl":"justify-content-xl-around","xs":"justify-content-around"},"displayName":"Align around"},"alignVerticallyBetween":{"class":{"lg":"justify-content-lg-between","md":"justify-content-md-between","sm":"justify-content-sm-between","xl":"justify-content-xl-between","xs":"justify-content-between"},"displayName":"Align between"},"alignVerticallyCenter":{"class":{"lg":"justify-content-lg-center","md":"justify-content-md-center","sm":"justify-content-sm-center","xl":"justify-content-xl-center","xs":"justify-content-center"},"displayName":"Align center"},"alignVerticallyEnd":{"class":{"lg":"justify-content-lg-end","md":"justify-content-md-end","sm":"justify-content-sm-end","xl":"justify-content-xl-end","xs":"justify-content-end"},"displayName":"Align bottom"},"alignVerticallyStart":{"class":{"lg":"justify-content-lg-start","md":"justify-content-md-start","sm":"justify-content-sm-start","xl":"justify-content-xl-start","xs":"justify-content-start"},"displayName":"Align top"},"id":"utils/content"},"text":{"alignCenter":{"typography":{"lg":{"textAlign":"center"},"md":{"textAlign":"center"},"sm":{"textAlign":"center"},"xl":{"textAlign":"center"},"xs":{"textAlign":"center"}}},"alignLeft":{"displayName":"Align left","typography":{"lg":{"textAlign":"left"},"md":{"textAlign":"left"},"sm":{"textAlign":"left"},"xl":{"textAlign":"left"},"xs":{"textAlign":"left"}}},"alignRight":{"typography":{"lg":{"textAlign":"right"},"md":{"textAlign":"right"},"sm":{"textAlign":"right"},"xl":{"textAlign":"right"},"xs":{"textAlign":"right"}}},"justify":{"typography":{"lg":{"textAlign":"justify"},"md":{"textAlign":"justify"},"sm":{"textAlign":"justify"},"xl":{"textAlign":"justify"},"xs":{"textAlign":"justify"}}},"id":"utils/text"}},"schemaVersion":1}]}},"/contentTypes/layout/contentItems/default":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"default","properties":{"en_us":{"title":"Default","description":"Layout for the home page","permalinkTemplate":"/","documentId":"contentTypes/document/contentItems/home-page-layout"}}},"/contentTypes/blob/contentItems/2dd99fb4-4c42-86b1-ab2a-ae5d99df2767":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"2dd99fb4-4c42-86b1-ab2a-ae5d99df2767","properties":{"fileName":"Default logo.png","blobId":"","description":"","keywords":"","permalink":"/content/Default logo.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/2dd99fb4-4c42-86b1-ab2a-ae5d99df2767.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/54635f91-230a-28fd-a532-c246f2356f0f":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"54635f91-230a-28fd-a532-c246f2356f0f","properties":{"fileName":"new-hero-blue-cropped.png","blobId":"","description":"","keywords":"","permalink":"/content/new-hero-blue-cropped.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/54635f91-230a-28fd-a532-c246f2356f0f.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/a8912683-6777-1252-2583-2fe2f5ecd80a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"a8912683-6777-1252-2583-2fe2f5ecd80a","properties":{"fileName":"card3.png","blobId":"","description":"","keywords":"","permalink":"/content/card3.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/a8912683-6777-1252-2583-2fe2f5ecd80a.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/c927adba-5309-1b4c-80e7-9e13f2d663c1":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"c927adba-5309-1b4c-80e7-9e13f2d663c1","properties":{"fileName":"card2.png","blobId":"","description":"","keywords":"","permalink":"/content/card2.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/c927adba-5309-1b4c-80e7-9e13f2d663c1.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/f1183eca-b12a-24b7-23e8-345854d74aa6":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"f1183eca-b12a-24b7-23e8-345854d74aa6","properties":{"fileName":"home-page-illustration.png","blobId":"","description":"","keywords":"","permalink":"/content/home-page-illustration.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/f1183eca-b12a-24b7-23e8-345854d74aa6.png","mimeType":"image/png"}},"/contentTypes/blob/contentItems/fda973f5-65b8-5b64-cd56-4df32ec32ffd":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"fda973f5-65b8-5b64-cd56-4df32ec32ffd","properties":{"fileName":"card1.png","blobId":"","description":"","keywords":"","permalink":"/content/card1.png","downloadUrl":"https://apimdeveloperportal.z22.web.core.windows.net/fda973f5-65b8-5b64-cd56-4df32ec32ffd.png","mimeType":"image/png"}},"/contentTypes/url/contentItems/1bec2534-46c4-7555-f8ec-ffcd9645fc2e":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"1bec2534-46c4-7555-f8ec-ffcd9645fc2e","properties":{"title":"#signout","permalink":"#signout"}},"/contentTypes/url/contentItems/a213a574-5acb-8520-26b3-27af16d7f9bc":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"a213a574-5acb-8520-26b3-27af16d7f9bc","properties":{"title":"https://azure.microsoft.com/services/api-management/","description":"","permalink":"https://azure.microsoft.com/services/api-management/"}},"/contentTypes/url/contentItems/db6d0be2-ec1a-2850-6476-ff53b65b00b9":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"db6d0be2-ec1a-2850-6476-ff53b65b00b9","properties":{"title":"APIs","description":"","permalink":"/apis"}},"/contentTypes/url/contentItems/e4a52924-c46c-8797-b4d2-025e1f41896a":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"e4a52924-c46c-8797-b4d2-025e1f41896a","properties":{"title":"https://aka.ms/apimrocks","permalink":"https://aka.ms/apimrocks"}},"/contentTypes/url/contentItems/feefd660-d398-3891-c834-24f816633a01":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"feefd660-d398-3891-c834-24f816633a01","properties":{"title":"mailto:support@example.com","permalink":"mailto:support@example.com"}},"/contentTypes/block/contentItems/new-page-template":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"new-page-template","properties":{"en_us":{"title":"New page template","description":"","documentId":"/contentTypes/document/contentItems/new-page-template"}}},"/contentTypes/popup/contentItems/main-menu-popup":{"type":"Microsoft.ApiManagement/service/contentTypes/contentItems","name":"main-menu-popup","properties":{"en_us":{"title":"Main menu popup","documentId":"contentTypes/document/contentItems/main-menu-popup"}}}} \ No newline at end of file