> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.navipartner.com/apis/api-reference/bi/service-tablemetadata/list-tables/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.navipartner.com/_mcp/server. # List Tables GET https://api.npretail.app/{tenant}/{environment}/{company}/tablemetadata Lists the tables that the BI endpoint can expose, with their English and translated names, whether the caller is allowed to read each one, and whether each one supports replication. This endpoint returns no business data. It is open to every caller that holds the BI permission set, whether or not any table has been allowed for them. Reference: https://docs.navipartner.com/apis/api-reference/bi/service-tablemetadata/list-tables ## Authentication - `x-np-api-key` header (required) — API Key authentication via header ## Request ### Path parameters - `tenant` (string, required) — Your Entra Tenant ID. [More details.](/paths#1-tenant) - `environment` (string, required) — Your Business Central Environment. [More details.](/paths#2-environment) - `company` (string, required) — Your Business Central Company. [More details.](/paths#3-company) ### Headers - `Accept-Language` (string, optional) — The language to use for the translated captions, for example `da-DK`. Defaults to the language of the calling user, and then to English. ## Response ### 200 - `language` (string, required) — The language tag used for the translated captions in this response. - `data` (list of TableSummary, required) ## Types ### TableSummary One table that the BI API can expose. - `tableNo` (integer, required) — The Business Central table number, used as the path parameter of the BI endpoint. - `name` (string, required) — The caption of the table in English. - `translatedName` (string, required) — The caption of the table in the language of the response. - `systemName` (string, required) — The AL object name of the table. - `allowed` (boolean, required) — Whether the calling API key or Entra ID application may read this table through the BI endpoint. - `syncSupported` (boolean, required) — Whether the table has the index that ordering by row version requires. Every BI read is incremental, so a table where this is false cannot be read through the BI endpoint at all until the index is added. - `dataPerCompany` (boolean, required) — Whether the table holds separate data per company. A table without it returns the same records in every company. ## Examples **Response** ```json { "language": "en-US", "data": [ { "tableNo": 27, "name": "Item", "translatedName": "Item", "systemName": "Item", "allowed": true, "syncSupported": true, "dataPerCompany": true } ] } ``` **SDK Code** ```python List the available tables import requests url = "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata" headers = {"x-np-api-key": ""} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript List the available tables const url = 'https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata'; const options = {method: 'GET', headers: {'x-np-api-key': ''}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go List the available tables package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("x-np-api-key", "") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby List the available tables require 'uri' require 'net/http' url = URI("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["x-np-api-key"] = '' response = http.request(request) puts response.read_body ``` ```java List the available tables import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata") .header("x-np-api-key", "") .asString(); ``` ```php List the available tables request('GET', 'https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata', [ 'headers' => [ 'x-np-api-key' => '', ], ]); echo $response->getBody(); ``` ```csharp List the available tables using RestSharp; var client = new RestClient("https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata"); var request = new RestRequest(Method.GET); request.AddHeader("x-np-api-key", ""); IRestResponse response = client.Execute(request); ``` ```swift List the available tables import Foundation let headers = ["x-np-api-key": ""] let request = NSMutableURLRequest(url: NSURL(string: "https://api.npretail.app/01234567-89ab-cdef-0123-456789abcdef/production/CRONUS%2520International%2520Ltd./tablemetadata")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` > Documentation for NaviPartner's NP Retail, NP Attractions, NP Hospitality, NP Store Assistant and Entria products, plus their REST APIs, built on Microsoft Dynamics 365 Business Central.