deploy: d2725b5bf0
This commit is contained in:
parent
d5790b8abb
commit
7e9d4c18d3
232 changed files with 25544 additions and 58300 deletions
|
|
@ -2,7 +2,7 @@
|
|||
<head>
|
||||
<meta charset=utf-8>
|
||||
<meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no">
|
||||
<meta name=generator content="Hugo 0.92.2">
|
||||
<meta name=generator content="Hugo 0.93.0">
|
||||
<meta name=robots content="index, follow">
|
||||
<link rel="shortcut icon" href=/favicons/favicon.ico>
|
||||
<link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180>
|
||||
|
|
@ -14,8 +14,7 @@
|
|||
<link rel=icon type=image/png href=/favicons/android-96x96.png sizes=96x96>
|
||||
<link rel=icon type=image/png href=/favicons/android-144x144.png sizes=144x144>
|
||||
<link rel=icon type=image/png href=/favicons/android-192x192.png sizes=192x192>
|
||||
<title>API Page / Query | alguidelines.dev - Business Central Design Patterns</title>
|
||||
<meta name=description content="Created by Arend-Jan Kauffmann, Described by Arend-Jan Kauffmann
|
||||
<title>API Page / Query | alguidelines.dev - Business Central Design Patterns</title><meta name=description content="Created by Arend-Jan Kauffmann, Described by Arend-Jan Kauffmann
|
||||
Description
|
||||
API pages are different from UI pages. They require different properties …">
|
||||
<meta property="og:title" content="API Page / Query">
|
||||
|
|
@ -41,8 +40,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<link href=/scss/main.min.84a617ff0c0265eb62b5cd2929c572f4ed37dc4907d0cf068be4eb2974f6d60f.css rel=stylesheet integrity>
|
||||
<script src=https://code.jquery.com/jquery-3.6.0.min.js integrity=sha384-vtXRMe3mGCbOeY7l30aIg8H9p3GdeSe4IFlP6G8JMa7o7lXvnz3GFKzPxzJdPfGK crossorigin=anonymous></script>
|
||||
<script src=https://unpkg.com/lunr@2.3.9/lunr.min.js integrity=sha384-203J0SNzyqHby3iU6hzvzltrWi/M41wOP5Gu+BiJMz5nwKykbkUx8Kp7iti0Lpli crossorigin=anonymous></script>
|
||||
</head>
|
||||
<body class=td-page>
|
||||
</head><body class=td-page>
|
||||
<header>
|
||||
<nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar">
|
||||
<a class=navbar-brand href=/>
|
||||
|
|
@ -54,36 +52,24 @@ Description API pages are different from UI pages. They require different proper
|
|||
<ul class="navbar-nav mt-2 mt-lg-0">
|
||||
<li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
<a class=nav-link href=/docs/><i class="fas fa-book"></i><span>Docs</span></a>
|
||||
</li>
|
||||
<li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
</li><li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
<a class=nav-link href=https://github.com/microsoft/alguidelines/discussions/ target=_blank><i class="fas fa-comments"></i><span>Discussions</span></a>
|
||||
</li>
|
||||
<li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
</li><li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
<a class=nav-link href=https://github.com/microsoft/alguidelines target=_blank><i class="fab fa-github"></i><span>GitHub</span></a>
|
||||
</li>
|
||||
<li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
</li><li class="nav-item mr-4 mb-2 mb-lg-0">
|
||||
<a class=nav-link href=https://discord.gg/4wbfNv3 target=_blank><i class="fab fa-discord"></i><span>Discord</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="navbar-nav d-none d-lg-block"><input type=search class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.9ab69a84696ad11cb17318558d9706e3.json data-offline-search-base-href=/ data-offline-search-max-results=10>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="container-fluid td-outer">
|
||||
</li></ul></div><div class="navbar-nav d-none d-lg-block"><input type=search class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.c6558a635de208ea1007e79e444e323a.json data-offline-search-base-href=/ data-offline-search-max-results=10>
|
||||
</div></nav></header><div class="container-fluid td-outer">
|
||||
<div class=td-main>
|
||||
<div class="row flex-xl-nowrap">
|
||||
<aside class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none">
|
||||
<div id=td-sidebar-menu class=td-sidebar__inner>
|
||||
<div id=content-mobile>
|
||||
<form class="td-sidebar__search d-flex align-items-center">
|
||||
<input type=search class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.9ab69a84696ad11cb17318558d9706e3.json data-offline-search-base-href=/ data-offline-search-max-results=10>
|
||||
<input type=search class="form-control td-search-input" placeholder=" Search this site…" aria-label="Search this site…" autocomplete=off data-offline-search-index-json-src=/offline-search-index.c6558a635de208ea1007e79e444e323a.json data-offline-search-base-href=/ data-offline-search-max-results=10>
|
||||
<button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type=button data-toggle=collapse data-target=#td-section-nav aria-controls=td-docs-nav aria-expanded=false aria-label="Toggle section navigation">
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
<div id=content-desktop></div>
|
||||
<nav class="collapse td-sidebar-nav" id=td-section-nav>
|
||||
</form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav" id=td-section-nav>
|
||||
<ul class="td-sidebar-nav__section pr-md-3 ul-0">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-docs-li>
|
||||
<a href=/docs/ title="AL Guidelines" class="align-left pl-0 td-sidebar-link td-sidebar-link__section tree-root" id=m-docs><span>Docs</span></a>
|
||||
|
|
@ -101,9 +87,9 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/patterns/facade-pattern/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docspatternsfacade-pattern><span>Façade</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docspatternsgeneric-method-pattern-li>
|
||||
<a href=/docs/patterns/generic-method-pattern/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docspatternsgeneric-method-pattern><span>Generic Method</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-docsbestpractices-li>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docspatternsno-series-li>
|
||||
<a href=/docs/patterns/no-series/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docspatternsno-series><span>No. Series</span></a>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child active-path" id=m-docsbestpractices-li>
|
||||
<a href=/docs/bestpractices/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsbestpractices><span>Best Practices</span></a>
|
||||
<ul class="ul-2 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child active-path" id=m-docsbestpracticesapi-page-li>
|
||||
|
|
@ -150,9 +136,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/bestpractices/variable-naming/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsbestpracticesvariable-naming><span>Variable Naming</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-docsbestpracticesvariables-declarations-order-li>
|
||||
<a href=/docs/bestpractices/variables-declarations-order/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsbestpracticesvariables-declarations-order><span>Variables Declarations Order</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docsnavpatterns-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docsnavpatterns-li>
|
||||
<a href=/docs/navpatterns/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns><span>NAV Patterns Archive</span></a>
|
||||
<ul class="ul-2 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatternspatterns-li>
|
||||
|
|
@ -167,9 +151,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<ul class="ul-4 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsblocked-entitydata-driven-blocked-entity-li>
|
||||
<a href=/docs/navpatterns/patterns/blocked-entity/data-driven-blocked-entity/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsblocked-entitydata-driven-blocked-entity><span>Data Driven Blocked Entity</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternscached-web-service-calls-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternscached-web-service-calls-li>
|
||||
<a href=/docs/navpatterns/patterns/cached-web-service-calls/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternscached-web-service-calls><span>Cached Web Server Calls</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsconditional-cascading-update-li>
|
||||
<a href=/docs/navpatterns/patterns/conditional-cascading-update/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsconditional-cascading-update><span>Conditional Cascading Update</span></a>
|
||||
|
|
@ -224,9 +206,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<ul class="ul-4 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsnet-exception-handling-in-caltryfunction-net-exception-handling-in-cal-li>
|
||||
<a href=/docs/navpatterns/patterns/net-exception-handling-in-cal/tryfunction-net-exception-handling-in-cal/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsnet-exception-handling-in-caltryfunction-net-exception-handling-in-cal><span>TryFunction NET Exception Handling in CAL</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsno-series-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsno-series-li>
|
||||
<a href=/docs/navpatterns/patterns/no-series/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsno-series><span>No Series</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatternspatternsnotifications-li>
|
||||
<a href=/docs/navpatterns/patterns/notifications/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatternspatternsnotifications><span>Notifications</span></a>
|
||||
|
|
@ -235,9 +215,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/patterns/notifications/in-context-notifications/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsnotificationsin-context-notifications><span>In-context Notifications</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsnotificationsnotification-lifecycle-management-pattern-li>
|
||||
<a href=/docs/navpatterns/patterns/notifications/notification-lifecycle-management-pattern/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsnotificationsnotification-lifecycle-management-pattern><span>Notification Lifecycle Management Pattern</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsobserver-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsobserver-li>
|
||||
<a href=/docs/navpatterns/patterns/observer/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsobserver><span>Observer</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsposting-routine-select-behavior-li>
|
||||
<a href=/docs/navpatterns/patterns/posting-routine-select-behavior/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsposting-routine-select-behavior><span>Posting Routine - Select Behavior</span></a>
|
||||
|
|
@ -252,9 +230,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/patterns/queries/use-queries-to-detect-duplicate-records/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsqueriesuse-queries-to-detect-duplicate-records><span>Use Queries to Detect Duplicate Records</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsqueriesuse-queries-to-replace-nested-loops-li>
|
||||
<a href=/docs/navpatterns/patterns/queries/use-queries-to-replace-nested-loops/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsqueriesuse-queries-to-replace-nested-loops><span>Use Queries to Replace Nested Loops</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsread-once-initialization-and-validation-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsread-once-initialization-and-validation-li>
|
||||
<a href=/docs/navpatterns/patterns/read-once-initialization-and-validation/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsread-once-initialization-and-validation><span>Read-once Initialization and Validation</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsreleased-entity-li>
|
||||
<a href=/docs/navpatterns/patterns/released-entity/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsreleased-entity><span>Released Entity</span></a>
|
||||
|
|
@ -273,9 +249,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/patterns/security/4-masked-text/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternssecurity4-masked-text><span>Masked Text</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternssecurity5-ssl-in-nav-li>
|
||||
<a href=/docs/navpatterns/patterns/security/5-ssl-in-nav/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternssecurity5-ssl-in-nav><span>SSL in NAV</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternssetup-specificity-fallback-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternssetup-specificity-fallback-li>
|
||||
<a href=/docs/navpatterns/patterns/setup-specificity-fallback/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternssetup-specificity-fallback><span>Setup Specificity Fallback</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternssilent-file-upload-and-download-li>
|
||||
<a href=/docs/navpatterns/patterns/silent-file-upload-and-download/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternssilent-file-upload-and-download><span>Silent File Upload and Download</span></a>
|
||||
|
|
@ -291,11 +265,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/patterns/singleton/singleton-table/cue-table/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternssingletonsingleton-tablecue-table><span>Cue Table</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternssingletonsingleton-tablesetup-table-li>
|
||||
<a href=/docs/navpatterns/patterns/singleton/singleton-table/setup-table/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternssingletonsingleton-tablesetup-table><span>Setup Table</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsstandard-journal-li>
|
||||
</li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsstandard-journal-li>
|
||||
<a href=/docs/navpatterns/patterns/standard-journal/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsstandard-journal><span>Standard Journal</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternstemporary-dataset-report-li>
|
||||
<a href=/docs/navpatterns/patterns/temporary-dataset-report/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternstemporary-dataset-report><span>Temporary Dataset Report</span></a>
|
||||
|
|
@ -305,18 +275,14 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/patterns/transfer-custom-fields/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternstransfer-custom-fields><span>Transfer Custom Fields</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternspatternsvariant-facade-li>
|
||||
<a href=/docs/navpatterns/patterns/variant-facade/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternspatternsvariant-facade><span>Variant Facade</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns2-anti-patterns-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns2-anti-patterns-li>
|
||||
<a href=/docs/navpatterns/2-anti-patterns/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns2-anti-patterns><span>2. Anti-Patterns</span></a>
|
||||
<ul class="ul-3 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns2-anti-patternsnav-upgrade-li>
|
||||
<a href=/docs/navpatterns/2-anti-patterns/nav-upgrade/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns2-anti-patternsnav-upgrade><span>Nav Upgrade</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns2-anti-patternsreusable-bugs-li>
|
||||
<a href=/docs/navpatterns/2-anti-patterns/reusable-bugs/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns2-anti-patternsreusable-bugs><span>Reusable Bugs</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelines-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelines-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns3-cal-coding-guidelines><span>3. CAL Coding Guidelines</span></a>
|
||||
<ul class="ul-3 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesdesign-li>
|
||||
|
|
@ -350,18 +316,14 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/3-cal-coding-guidelines/design/variable-capacity-mismatch/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesdesignvariable-capacity-mismatch><span>Variable Capacity Mismatch</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesdesignwith-scope-name-collision-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/design/with-scope-name-collision/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesdesignwith-scope-name-collision><span>WITH Scope Name Collision</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesinternally-used-dot-net-types-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesinternally-used-dot-net-types-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/internally-used-dot-net-types/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesinternally-used-dot-net-types><span>Internally used DotNet Types</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesinternationalization-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/internationalization/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns3-cal-coding-guidelinesinternationalization><span>Internationalization</span></a>
|
||||
<ul class="ul-4 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesinternationalizationusing-calcdate-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/internationalization/using-calcdate/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesinternationalizationusing-calcdate><span>Using Calcdate</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelineslocalizability-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelineslocalizability-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/localizability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns3-cal-coding-guidelineslocalizability><span>Localizability</span></a>
|
||||
<ul class="ul-4 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelineslocalizabilitycaptionml-for-system-tables-li>
|
||||
|
|
@ -374,9 +336,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/3-cal-coding-guidelines/localizability/use-text-constants/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelineslocalizabilityuse-text-constants><span>Use Text Constants</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelineslocalizabilityusing-optioncaptionml-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/localizability/using-optioncaptionml/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelineslocalizabilityusing-optioncaptionml><span>Using OptionCaptionML</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesreadability-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesreadability-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/readability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns3-cal-coding-guidelinesreadability><span>Readability</span></a>
|
||||
<ul class="ul-4 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesreadabilitybegin-as-an-afterword-li>
|
||||
|
|
@ -443,9 +403,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/3-cal-coding-guidelines/readability/variable-naming/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesreadabilityvariable-naming><span>Variable Naming</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesreadabilityvariables-declarations-order-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/readability/variables-declarations-order/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesreadabilityvariables-declarations-order><span>Variables Declarations Order</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesux-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesux-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/ux/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns3-cal-coding-guidelinesux><span>UX</span></a>
|
||||
<ul class="ul-4 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesuxactions-images-li>
|
||||
|
|
@ -456,11 +414,7 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/3-cal-coding-guidelines/ux/fielderror/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesuxfielderror><span>FIELDERROR</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns3-cal-coding-guidelinesuxmessage-and-error-li>
|
||||
<a href=/docs/navpatterns/3-cal-coding-guidelines/ux/message-and-error/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns3-cal-coding-guidelinesuxmessage-and-error><span>MESSAGE and ERROR</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns4-get-involved-li>
|
||||
</li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docsnavpatterns4-get-involved-li>
|
||||
<a href=/docs/navpatterns/4-get-involved/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docsnavpatterns4-get-involved><span>(OLD) Get Involved</span></a>
|
||||
<ul class="ul-3 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns4-get-involvedcode-of-conduct-li>
|
||||
|
|
@ -469,13 +423,9 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/navpatterns/4-get-involved/patterns-authors/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns4-get-involvedpatterns-authors><span>Patterns Authors</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatterns4-get-involvedtemplate-for-writing-nav-design-patterns-li>
|
||||
<a href=/docs/navpatterns/4-get-involved/template-for-writing-nav-design-patterns/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatterns4-get-involvedtemplate-for-writing-nav-design-patterns><span>Template for writing Nav Design Patterns</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternsrelated-links-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docsnavpatternsrelated-links-li>
|
||||
<a href=/docs/navpatterns/related-links/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docsnavpatternsrelated-links><span>Related Links</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docscontributing-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-docscontributing-li>
|
||||
<a href=/docs/contributing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docscontributing><span>Contributing</span></a>
|
||||
<ul class="ul-2 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docscontributingformattingtips-li>
|
||||
|
|
@ -491,27 +441,14 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href=/docs/contributing/installhugo/manuallyonwindows11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docscontributinginstallhugomanuallyonwindows11><span>Manually on Windows 11</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docscontributinginstallhugousingpowershellonwindows11-li>
|
||||
<a href=/docs/contributing/installhugo/usingpowershellonwindows11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docscontributinginstallhugousingpowershellonwindows11><span>Powershell on Windows 11</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docscontributingtemplates-li>
|
||||
</li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child collapse" id=m-docscontributingtemplates-li>
|
||||
<a href=/docs/contributing/templates/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-docscontributingtemplates><span>Templates</span></a>
|
||||
<ul class="ul-3 foldable">
|
||||
<li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docscontributingtemplatespatterns-li>
|
||||
<a href=/docs/contributing/templates/patterns/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docscontributingtemplatespatterns><span>Pattern Name</span></a>
|
||||
</li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child collapse" id=m-docscontributingtemplatesbestpractice-li>
|
||||
<a href=/docs/contributing/templates/bestpractice/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-docscontributingtemplatesbestpractice><span>Title Here</span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</aside>
|
||||
<aside class="d-none d-xl-block col-xl-2 td-sidebar-toc d-print-none">
|
||||
</li></ul></li></ul></li></ul></li></ul></nav></div></aside><aside class="d-none d-xl-block col-xl-2 td-sidebar-toc d-print-none">
|
||||
<div class="td-page-meta ml-2 pb-1 pt-2 mb-0">
|
||||
<a href=https://github.com/microsoft/alguidelines/tree/main/content/docs/BestPractices/api-page/index.md class=td-page-meta--view target=_blank rel=noopener><i class="fa fa-file-alt fa-fw"></i> View page source</a>
|
||||
<a href=https://github.com/microsoft/alguidelines/edit/main/content/docs/BestPractices/api-page/index.md class=td-page-meta--edit target=_blank rel=noopener><i class="fa fa-edit fa-fw"></i> Edit this page</a>
|
||||
|
|
@ -519,213 +456,81 @@ Description API pages are different from UI pages. They require different proper
|
|||
<a href="https://github.com/microsoft/alguidelines/issues/new?title=API%20Page%20/%20Query" class=td-page-meta--issue target=_blank rel=noopener><i class="fab fa-github fa-fw"></i> Create Issue</a>
|
||||
<a href="https://github.com/microsoft/alguidelines/discussions?discussions_q=API%20Page%20/%20Query" class=td-page-meta--issue target=_blank rel=noopener><i class="fab fa-github fa-fw"></i> Discussions</a>
|
||||
<a href=https://github.com/microsoft/alguidelines/issues/new class=td-page-meta--project-issue target=_blank rel=noopener><i class="fas fa-tasks fa-fw"></i> Create project issue</a>
|
||||
</div>
|
||||
<div class=td-toc><nav id=TableOfContents>
|
||||
</div><div class=td-toc><nav id=TableOfContents>
|
||||
<ul>
|
||||
<li><a href=#description>Description</a></li>
|
||||
<li><a href=#separate-api-app>Separate API app</a></li>
|
||||
<li><a href=#page-properties>Page properties</a>
|
||||
<li><a href=#description>Description</a></li><li><a href=#separate-api-app>Separate API app</a></li><li><a href=#page-properties>Page properties</a>
|
||||
<ul>
|
||||
<li><a href=#apipublisher>APIPublisher</a></li>
|
||||
<li><a href=#apigroup>APIGroup</a></li>
|
||||
<li><a href=#apiversion>APIVersion</a></li>
|
||||
<li><a href=#entitysetname>EntitySetName</a></li>
|
||||
<li><a href=#entityname>EntityName</a></li>
|
||||
<li><a href=#delayedinsert>DelayedInsert</a></li>
|
||||
<li><a href=#full-example>Full example</a></li>
|
||||
<li><a href=#odatakeyfields>ODataKeyFields</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href=#field-properties>Field properties</a></li>
|
||||
<li><a href=#default-fields>Default fields</a></li>
|
||||
</ul>
|
||||
</nav></div>
|
||||
<div class="taxonomy taxonomy-terms-cloud taxo-tags">
|
||||
<h5 class=taxonomy-title>Tag Cloud</h5>
|
||||
<ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/al/ data-taxonomy-term=al><span class=taxonomy-label>AL</span><span class=taxonomy-count>29</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/api/ data-taxonomy-term=api><span class=taxonomy-label>API</span><span class=taxonomy-count>3</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/c/al/ data-taxonomy-term=c/al><span class=taxonomy-label>C/AL</span><span class=taxonomy-count>136</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/decoupling/ data-taxonomy-term=decoupling><span class=taxonomy-label>Decoupling</span><span class=taxonomy-count>2</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/extendability/ data-taxonomy-term=extendability><span class=taxonomy-label>Extendability</span><span class=taxonomy-count>3</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/interface/ data-taxonomy-term=interface><span class=taxonomy-label>Interface</span><span class=taxonomy-count>1</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/performance/ data-taxonomy-term=performance><span class=taxonomy-label>Performance</span><span class=taxonomy-count>2</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/readability/ data-taxonomy-term=readability><span class=taxonomy-label>Readability</span><span class=taxonomy-count>53</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/telemetry/ data-taxonomy-term=telemetry><span class=taxonomy-label>Telemetry</span><span class=taxonomy-count>1</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/testability/ data-taxonomy-term=testability><span class=taxonomy-label>Testability</span><span class=taxonomy-count>2</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="taxonomy taxonomy-terms-cloud taxo-categories">
|
||||
<h5 class=taxonomy-title>Categories</h5>
|
||||
<ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/categories/best-practice/ data-taxonomy-term=best-practice><span class=taxonomy-label>Best Practice</span><span class=taxonomy-count>86</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/categories/pattern/ data-taxonomy-term=pattern><span class=taxonomy-label>Pattern</span><span class=taxonomy-count>70</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
<main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main>
|
||||
<li><a href=#apipublisher>APIPublisher</a></li><li><a href=#apigroup>APIGroup</a></li><li><a href=#apiversion>APIVersion</a></li><li><a href=#entitysetname>EntitySetName</a></li><li><a href=#entityname>EntityName</a></li><li><a href=#delayedinsert>DelayedInsert</a></li><li><a href=#full-example>Full example</a></li><li><a href=#odatakeyfields>ODataKeyFields</a></li></ul></li><li><a href=#field-properties>Field properties</a></li><li><a href=#default-fields>Default fields</a></li></ul></nav></div><div class="taxonomy taxonomy-terms-cloud taxo-tags">
|
||||
<h5 class=taxonomy-title>Tag Cloud</h5><ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/al/ data-taxonomy-term=al><span class=taxonomy-label>AL</span><span class=taxonomy-count>30</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/api/ data-taxonomy-term=api><span class=taxonomy-label>API</span><span class=taxonomy-count>3</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/c/al/ data-taxonomy-term=c/al><span class=taxonomy-label>C/AL</span><span class=taxonomy-count>136</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/decoupling/ data-taxonomy-term=decoupling><span class=taxonomy-label>Decoupling</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/extendability/ data-taxonomy-term=extendability><span class=taxonomy-label>Extendability</span><span class=taxonomy-count>3</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/interface/ data-taxonomy-term=interface><span class=taxonomy-label>Interface</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/performance/ data-taxonomy-term=performance><span class=taxonomy-label>Performance</span><span class=taxonomy-count>2</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/readability/ data-taxonomy-term=readability><span class=taxonomy-label>Readability</span><span class=taxonomy-count>53</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/telemetry/ data-taxonomy-term=telemetry><span class=taxonomy-label>Telemetry</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/testability/ data-taxonomy-term=testability><span class=taxonomy-label>Testability</span><span class=taxonomy-count>2</span></a></li></ul></div><div class="taxonomy taxonomy-terms-cloud taxo-categories">
|
||||
<h5 class=taxonomy-title>Categories</h5><ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/categories/best-practice/ data-taxonomy-term=best-practice><span class=taxonomy-label>Best Practice</span><span class=taxonomy-count>86</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/categories/pattern/ data-taxonomy-term=pattern><span class=taxonomy-label>Pattern</span><span class=taxonomy-count>71</span></a></li></ul></div></aside><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main>
|
||||
<nav aria-label=breadcrumb class=td-breadcrumbs>
|
||||
<ol class=breadcrumb>
|
||||
<li class=breadcrumb-item>
|
||||
<a href=https://alguidelines.dev/docs/>Docs</a>
|
||||
</li>
|
||||
<li class=breadcrumb-item>
|
||||
</li><li class=breadcrumb-item>
|
||||
<a href=https://alguidelines.dev/docs/bestpractices/>Best Practices</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active" aria-current=page>
|
||||
</li><li class="breadcrumb-item active" aria-current=page>
|
||||
<a href=https://alguidelines.dev/docs/bestpractices/api-page/>API Page / Query</a>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
<div class=td-content>
|
||||
<h1>API Page / Query</h1>
|
||||
<header class=article-meta>
|
||||
</li></ol></nav><div class=td-content>
|
||||
<h1>API Page / Query</h1><header class=article-meta>
|
||||
<div class="taxonomy taxonomy-terms-article taxo-tags">
|
||||
<h5 class=taxonomy-title>Tags:</h5>
|
||||
<ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/al/ data-taxonomy-term=al><span class=taxonomy-label>AL</span></a></li>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/api/ data-taxonomy-term=api><span class=taxonomy-label>API</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="taxonomy taxonomy-terms-article taxo-categories">
|
||||
<h5 class=taxonomy-title>Categories:</h5>
|
||||
<ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/categories/best-practice/ data-taxonomy-term=best-practice><span class=taxonomy-label>Best Practice</span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<p><em>Created by Arend-Jan Kauffmann, Described by Arend-Jan Kauffmann</em></p>
|
||||
<h2 id=description>Description</h2>
|
||||
<p>API pages are different from UI pages. They require different properties and don’t behave the same. Because API pages are used for integration with external applications, they should be treated as contracts. To achieve this, the following topics are important.</p>
|
||||
<ul>
|
||||
<li>Separate API app</li>
|
||||
<li>Page properties</li>
|
||||
<li>Versioning</li>
|
||||
<li>Field properties</li>
|
||||
<li>Default fields</li>
|
||||
</ul>
|
||||
<h2 id=separate-api-app>Separate API app</h2>
|
||||
<p>It’s a good practice to develop API pages in a separate app instead of combining them in a solution. By doing so, it provides better maintainability and is a good way of separation of concerns.</p>
|
||||
<h2 id=page-properties>Page properties</h2>
|
||||
<p>An API page must define a minimum set of properties. Some of these properties will be part of the URL of the API endpoint. It is recommended to define the properties in the same order as they appear in the URL.</p>
|
||||
<p>The properties that must be defined are:</p>
|
||||
<ul>
|
||||
<li>PageType = API / QueryType = API</li>
|
||||
<li>APIPublisher</li>
|
||||
<li>APIGroup</li>
|
||||
<li>APIVersion</li>
|
||||
<li>EntitySetName</li>
|
||||
<li>EntityName</li>
|
||||
<li>DelayedInsert (only Page)</li>
|
||||
<li>ODataKeyFields</li>
|
||||
</ul>
|
||||
<h3 id=apipublisher>APIPublisher</h3>
|
||||
<p>The name of the API publisher is usually the company creating the API. It is the first custom part in the URL for a given endpoint. The value is case insensitive.</p>
|
||||
<p>Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>APIPublisher<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'contoso'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><h3 id=apigroup>APIGroup</h3>
|
||||
<p>Sets the group of the API endpoint that page or query is exposed in. In the URL the APIGroup comes after the APIPublisher. It can be used to distinguish different API apps or groups of APIs from each other. The value is case insensitive.</p>
|
||||
<p>Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>APIGroup<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'app1'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><h3 id=apiversion>APIVersion</h3>
|
||||
<p>Sets the version(s) of the API endpoint the page or query is exposed in. This property is not mandatory. If it is not specified, then APIs will be exposed as version ‘beta’.</p>
|
||||
<p>The APIVersion can be set to ‘beta’ or have the format ‘vx.y’.
|
||||
Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'beta'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><p>or</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'v1.0'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><h4 id=_multiple-api-versions_><em>Multiple API versions</em></h4>
|
||||
<p>You should <strong>never</strong> break existing versions. Any breaking change requires to create a new version.</p>
|
||||
<p>It is possible to expose an API in multiple versions:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'beta'</span><span style=color:#000;font-weight:700>,</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'v1.0'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><p>This allows to publish a new version of an API app without copying all individual objects and updating the version numbers. Only those API objects that are changed in a new version need to be copied. The other objects only need an addition to the APIVersion property to become available in the new version endpoint.</p>
|
||||
<h3 id=entitysetname>EntitySetName</h3>
|
||||
<p>The EntitySetName is the plural entity name. Think of it as the name of the collection of entities. It is recommended to use camelCasing for this property. The value is case sensitive!</p>
|
||||
<p>Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>EntitySetName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategories'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><h3 id=entityname>EntityName</h3>
|
||||
<p>The EntityName sets the singular entity name for the API page or query. This name is not used in the URL. Instead, the EntityName is used in the metadata information. It is recommended to use camelCasing for this property.</p>
|
||||
<p>Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>EntityName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategory'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><h3 id=delayedinsert>DelayedInsert</h3>
|
||||
<p>This property is required on an editable API page. It does not apply to an API query object. If <code>Editable = false</code> is set on the API page, then DelayedInsert is not required.
|
||||
All APIs pages apply the behavior to first specify all field values and then insert the record at once.</p>
|
||||
<p>Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>DelayedInsert<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span>true<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><h3 id=full-example>Full example</h3>
|
||||
<p>Together, the page properties look like:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al>PageType<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span>API<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>APIPublisher<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'contoso'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>APIGroup<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'app1'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'v1.0'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>EntitySetName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategories'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>EntityName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategory'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>DelayedInsert<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span>true<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><p>The full url will look like: <code>https://{url}/api/contoso/app1/v1.0/companies({id})/itemCategories</code></p>
|
||||
<h3 id=odatakeyfields>ODataKeyFields</h3>
|
||||
<p>The <code>EntitySetName</code> property in the URL can be extended with an identifier to indicate a single record.</p>
|
||||
<p>Example:</p>
|
||||
<pre tabindex=0><code>.../itemCategories(768b6173-9b19-40ea-8e5d-ce181ec0d645)
|
||||
</code></pre><p>The property <code>ODataKeyFields</code> defines which field(s) will be used for the identifier value. It is highly recommended to always use the SystemId field for this property. The SystemId field is immutable and will never change for a record.</p>
|
||||
<p>The field that is defined in this property should be part of the API page.</p>
|
||||
<h2 id=field-properties>Field properties</h2>
|
||||
<p>The base structure of an API page is similar to a UI list page:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=color:#204a87;font-weight:700>layout</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>area</span><span style=color:#ce5c00;font-weight:700>(</span>Content<span style=color:#ce5c00;font-weight:700>)
|
||||
</span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>repeater</span><span style=color:#ce5c00;font-weight:700>(</span>records<span style=color:#ce5c00;font-weight:700>)
|
||||
</span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#ce5c00;font-weight:700>...
|
||||
</span><span style=color:#ce5c00;font-weight:700> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div><p>When specifying the fields there are some considerations to keep in mind.</p>
|
||||
<pre tabindex=0><code>field(displayName; Rec.Name) { }
|
||||
</code></pre><p>There are no mandatory properties. The property <code>ApplicationArea</code> does not play a role in API pages, so it can be skipped. The property <code>Caption</code> is also optional and should only be used in case the external application requires captions and the caption should be different from the standard caption as defined in the table.</p>
|
||||
<p>The name of the field, in the example above <code>displayName</code>, should be defined in camelCasing. It may not contain spaces, dots, or other special characters.</p>
|
||||
<p>It is common use to give certain fields a more describing name. Some examples are:</p>
|
||||
<ul>
|
||||
<li>id for field SystemId</li>
|
||||
<li>number for field “No.”</li>
|
||||
<li>displayName for field Name</li>
|
||||
</ul>
|
||||
<h2 id=default-fields>Default fields</h2>
|
||||
<p>An API should at least expose these fields:</p>
|
||||
<ul>
|
||||
<h5 class=taxonomy-title>Tags:</h5><ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/tags/al/ data-taxonomy-term=al><span class=taxonomy-label>AL</span></a></li><li><a class=taxonomy-term href=https://alguidelines.dev/tags/api/ data-taxonomy-term=api><span class=taxonomy-label>API</span></a></li></ul></div><div class="taxonomy taxonomy-terms-article taxo-categories">
|
||||
<h5 class=taxonomy-title>Categories:</h5><ul class=taxonomy-terms>
|
||||
<li><a class=taxonomy-term href=https://alguidelines.dev/categories/best-practice/ data-taxonomy-term=best-practice><span class=taxonomy-label>Best Practice</span></a></li></ul></div></header><p><em>Created by Arend-Jan Kauffmann, Described by Arend-Jan Kauffmann</em></p><h2 id=description>Description</h2><p>API pages are different from UI pages. They require different properties and don’t behave the same. Because API pages are used for integration with external applications, they should be treated as contracts. To achieve this, the following topics are important.</p><ul>
|
||||
<li>Separate API app</li><li>Page properties</li><li>Versioning</li><li>Field properties</li><li>Default fields</li></ul><h2 id=separate-api-app>Separate API app</h2><p>It’s a good practice to develop API pages in a separate app instead of combining them in a solution. By doing so, it provides better maintainability and is a good way of separation of concerns.</p><h2 id=page-properties>Page properties</h2><p>An API page must define a minimum set of properties. Some of these properties will be part of the URL of the API endpoint. It is recommended to define the properties in the same order as they appear in the URL.</p><p>The properties that must be defined are:</p><ul>
|
||||
<li>PageType = API / QueryType = API</li><li>APIPublisher</li><li>APIGroup</li><li>APIVersion</li><li>EntitySetName</li><li>EntityName</li><li>DelayedInsert (only Page)</li><li>ODataKeyFields</li></ul><h3 id=apipublisher>APIPublisher</h3><p>The name of the API publisher is usually the company creating the API. It is the first custom part in the URL for a given endpoint. The value is case insensitive.</p><p>Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>APIPublisher<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'contoso'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><h3 id=apigroup>APIGroup</h3><p>Sets the group of the API endpoint that page or query is exposed in. In the URL the APIGroup comes after the APIPublisher. It can be used to distinguish different API apps or groups of APIs from each other. The value is case insensitive.</p><p>Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>APIGroup<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'app1'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><h3 id=apiversion>APIVersion</h3><p>Sets the version(s) of the API endpoint the page or query is exposed in. This property is not mandatory. If it is not specified, then APIs will be exposed as version ‘beta’.</p><p>The APIVersion can be set to ‘beta’ or have the format ‘vx.y’.
|
||||
Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'beta'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><p>or</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'v1.0'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><h4 id=_multiple-api-versions_><em>Multiple API versions</em></h4><p>You should <strong>never</strong> break existing versions. Any breaking change requires to create a new version.</p><p>It is possible to expose an API in multiple versions:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'beta'</span><span style=color:#000;font-weight:700>,</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'v1.0'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><p>This allows to publish a new version of an API app without copying all individual objects and updating the version numbers. Only those API objects that are changed in a new version need to be copied. The other objects only need an addition to the APIVersion property to become available in the new version endpoint.</p><h3 id=entitysetname>EntitySetName</h3><p>The EntitySetName is the plural entity name. Think of it as the name of the collection of entities. It is recommended to use camelCasing for this property. The value is case sensitive!</p><p>Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>EntitySetName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategories'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><h3 id=entityname>EntityName</h3><p>The EntityName sets the singular entity name for the API page or query. This name is not used in the URL. Instead, the EntityName is used in the metadata information. It is recommended to use camelCasing for this property.</p><p>Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>EntityName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategory'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><h3 id=delayedinsert>DelayedInsert</h3><p>This property is required on an editable API page. It does not apply to an API query object. If <code>Editable = false</code> is set on the API page, then DelayedInsert is not required.
|
||||
All APIs pages apply the behavior to first specify all field values and then insert the record at once.</p><p>Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>DelayedInsert<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span>true<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><h3 id=full-example>Full example</h3><p>Together, the page properties look like:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span>PageType<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span>API<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>APIPublisher<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'contoso'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>APIGroup<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'app1'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>APIVersion<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'v1.0'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>EntitySetName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategories'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>EntityName<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#4e9a06>'itemCategory'</span><span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>DelayedInsert<span style=color:#f8f8f8;text-decoration:underline> </span>=<span style=color:#f8f8f8;text-decoration:underline> </span>true<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><p>The full url will look like: <code>https://{url}/api/contoso/app1/v1.0/companies({id})/itemCategories</code></p><h3 id=odatakeyfields>ODataKeyFields</h3><p>The <code>EntitySetName</code> property in the URL can be extended with an identifier to indicate a single record.</p><p>Example:</p><pre tabindex=0><code>.../itemCategories(768b6173-9b19-40ea-8e5d-ce181ec0d645)
|
||||
</code></pre><p>The property <code>ODataKeyFields</code> defines which field(s) will be used for the identifier value. It is highly recommended to always use the SystemId field for this property. The SystemId field is immutable and will never change for a record.</p><p>The field that is defined in this property should be part of the API page.</p><h2 id=field-properties>Field properties</h2><p>The base structure of an API page is similar to a UI list page:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span><span style=color:#204a87;font-weight:700>layout</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>area</span><span style=color:#ce5c00;font-weight:700>(</span>Content<span style=color:#ce5c00;font-weight:700>)
|
||||
</span></span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>repeater</span><span style=color:#ce5c00;font-weight:700>(</span>records<span style=color:#ce5c00;font-weight:700>)
|
||||
</span></span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#ce5c00;font-weight:700>...
|
||||
</span></span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><p>When specifying the fields there are some considerations to keep in mind.</p><pre tabindex=0><code>field(displayName; Rec.Name) { }
|
||||
</code></pre><p>There are no mandatory properties. The property <code>ApplicationArea</code> does not play a role in API pages, so it can be skipped. The property <code>Caption</code> is also optional and should only be used in case the external application requires captions and the caption should be different from the standard caption as defined in the table.</p><p>The name of the field, in the example above <code>displayName</code>, should be defined in camelCasing. It may not contain spaces, dots, or other special characters.</p><p>It is common use to give certain fields a more describing name. Some examples are:</p><ul>
|
||||
<li>id for field SystemId</li><li>number for field “No.”</li><li>displayName for field Name</li></ul><h2 id=default-fields>Default fields</h2><p>An API should at least expose these fields:</p><ul>
|
||||
<li>SystemId
|
||||
<ul>
|
||||
<li>This field should be exposed wit the name <code>id</code></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>SystemModifiedAt
|
||||
<li>This field should be exposed wit the name <code>id</code></li></ul></li><li>SystemModifiedAt
|
||||
<ul>
|
||||
<li>This field should be exposed with the name <code>lastModifiedDateTime</code>. If you choose a different name, then the webhook functionality may not work properly.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=color:#204a87;font-weight:700>layout</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>area</span><span style=color:#ce5c00;font-weight:700>(</span>Content<span style=color:#ce5c00;font-weight:700>)
|
||||
</span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>repeater</span><span style=color:#ce5c00;font-weight:700>(</span>records<span style=color:#ce5c00;font-weight:700>)
|
||||
</span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>field</span><span style=color:#ce5c00;font-weight:700>(</span>id<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline> </span>SystemId<span style=color:#ce5c00;font-weight:700>) </span>{<span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>field</span><span style=color:#ce5c00;font-weight:700>(</span>lastModifiedDateTime<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline> </span>SystemModifiedAt<span style=color:#ce5c00;font-weight:700>) </span>{<span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span><span style=color:#f8f8f8;text-decoration:underline></span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></code></pre></div>
|
||||
<div class="text-muted mt-5 pt-3 border-top">
|
||||
<li>This field should be exposed with the name <code>lastModifiedDateTime</code>. If you choose a different name, then the webhook functionality may not work properly.</li></ul></li></ul><p>Example:</p><div class=highlight><pre tabindex=0 style=background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-al data-lang=al><span style=display:flex><span><span style=color:#204a87;font-weight:700>layout</span><span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>area</span><span style=color:#ce5c00;font-weight:700>(</span>Content<span style=color:#ce5c00;font-weight:700>)
|
||||
</span></span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>repeater</span><span style=color:#ce5c00;font-weight:700>(</span>records<span style=color:#ce5c00;font-weight:700>)
|
||||
</span></span></span><span style=display:flex><span><span style=color:#ce5c00;font-weight:700> </span>{<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>field</span><span style=color:#ce5c00;font-weight:700>(</span>id<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline> </span>SystemId<span style=color:#ce5c00;font-weight:700>) </span>{<span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span><span style=color:#204a87;font-weight:700>field</span><span style=color:#ce5c00;font-weight:700>(</span>lastModifiedDateTime<span style=color:#000;font-weight:700>;</span><span style=color:#f8f8f8;text-decoration:underline> </span>SystemModifiedAt<span style=color:#ce5c00;font-weight:700>) </span>{<span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline> </span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span><span style=display:flex><span><span style=color:#f8f8f8;text-decoration:underline></span>}<span style=color:#f8f8f8;text-decoration:underline>
|
||||
</span></span></span></code></pre></div><div class="text-muted mt-5 pt-3 border-top">
|
||||
Last modified February 27, 2022: <a href=https://github.com/microsoft/alguidelines/commit/13beb2fee64a5fba485e3540b12ab5451fb7e59d>Correct Typo (13beb2fe)</a>
|
||||
by Henrik Helgesen
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="bg-dark py-5 row d-print-none">
|
||||
</div></div></main></div></div><footer class="bg-dark py-5 row d-print-none">
|
||||
<div class="container-fluid mx-sm-5">
|
||||
<div class=row>
|
||||
<div class="col-6 col-sm-4 text-xs-center order-sm-2">
|
||||
|
|
@ -734,31 +539,19 @@ by Henrik Helgesen
|
|||
<a class=text-white target=_blank rel=noopener href=https://github.com/microsoft/alguidelines aria-label=GitHub>
|
||||
<i class="fab fa-github"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter>
|
||||
</li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Twitter aria-label=Twitter>
|
||||
<a class=text-white target=_blank rel=noopener href="https://twitter.com/search?q=%23bcalhelp" aria-label=Twitter>
|
||||
<i class="fab fa-twitter"></i>
|
||||
</a>
|
||||
</li>
|
||||
<li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Discord aria-label=Discord>
|
||||
</li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=Discord aria-label=Discord>
|
||||
<a class=text-white target=_blank rel=noopener href=https://discord.gg/4wbfNv3 aria-label=Discord>
|
||||
<i class="fab fa-discord"></i>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-6 col-sm-4 text-right text-xs-center order-sm-3">
|
||||
</div>
|
||||
<div class="col-12 col-sm-4 text-center py-2 order-sm-2">
|
||||
</li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3">
|
||||
</div><div class="col-12 col-sm-4 text-center py-2 order-sm-2">
|
||||
<small class=text-white>© 2022 alguidelines.dev Project All Rights Reserved</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
|
||||
</div></div></div></footer></div><script src=https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js integrity=sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN crossorigin=anonymous></script>
|
||||
<script src=https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/js/bootstrap.min.js integrity="sha512-UR25UO94eTnCVwjbXozyeVd6ZqpaAE9naiEUBK/A+QDbfSTQFhPGj5lOR6d8tsgbBk84Ggb5A3EkjsOgPRPcKA==" crossorigin=anonymous></script>
|
||||
<script src=/js/tabpane-persist.js></script>
|
||||
<script src=/js/main.min.8ab8f81ff7e1454d30024cd6f956d4d341c3a97e2a673f988065f2ee4e147922.js integrity="sha256-irj4H/fhRU0wAkzW+VbU00HDqX4qZz+YgGXy7k4UeSI=" crossorigin=anonymous></script>
|
||||
</body>
|
||||
</html>
|
||||
<script src=/js/main.min.fc1551b8c1b40a6eaa08f3cb9c76f12ccd9aebc436cecdaf2341c890206d024a.js integrity="sha256-/BVRuMG0Cm6qCPPLnHbxLM2a68Q2zs2vI0HIkCBtAko=" crossorigin=anonymous></script>
|
||||
</body></html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue