From fe85627b5fc711f24e0c4885fe828e3ee726db5f Mon Sep 17 00:00:00 2001 From: John Kaster Date: Wed, 21 Sep 2022 01:54:12 +0000 Subject: [PATCH 1/2] feat: generate SDKs for Looker 22.14 round 2 Need to get publishing order correct --- spec/Looker.3.1.json | 1640 ++++++++------------------------ spec/Looker.3.1.oas.json | 1553 ++++++++---------------------- spec/Looker.4.0.json | 1941 +++++++++----------------------------- spec/Looker.4.0.oas.json | 1854 +++++++++--------------------------- 4 files changed, 1708 insertions(+), 5280 deletions(-) diff --git a/spec/Looker.3.1.json b/spec/Looker.3.1.json index 30dc88222..583a99768 100644 --- a/spec/Looker.3.1.json +++ b/spec/Looker.3.1.json @@ -15,16 +15,10 @@ } }, "basePath": "/api/3.1", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], + "consumes": ["application/json"], + "produces": ["application/json"], "host": "localhost:20000", - "schemes": [ - "https" - ], + "schemes": ["https"], "tags": [ { "name": "ApiAuth", @@ -138,9 +132,7 @@ "paths": { "/query_tasks": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -293,9 +285,7 @@ }, "/query_tasks/multi_results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -341,9 +331,7 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -389,16 +377,11 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", - "produces": [ - "text", - "application/json" - ], + "produces": ["text", "application/json"], "parameters": [ { "name": "query_task_id", @@ -440,9 +423,7 @@ }, "/queries/{query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -489,9 +470,7 @@ }, "/queries/slug/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -537,9 +516,7 @@ }, "/queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -605,18 +582,11 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "query_id", @@ -759,18 +729,11 @@ }, "/queries/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "result_format", @@ -914,18 +877,11 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "model_name", @@ -987,15 +943,11 @@ }, "/login": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", - "consumes": [ - "application/x-www-form-urlencoded" - ], + "consumes": ["application/x-www-form-urlencoded"], "parameters": [ { "name": "client_id", @@ -1038,9 +990,7 @@ }, "/login/{user_id}": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1087,9 +1037,7 @@ }, "/logout": { "delete": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1119,9 +1067,7 @@ }, "/backup_configuration": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "backup_configuration", "summary": "Get Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1150,9 +1096,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_backup_configuration", "summary": "Update Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1200,9 +1144,7 @@ }, "/cloud_storage": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -1230,9 +1172,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -1279,9 +1219,7 @@ }, "/color_collections": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1321,9 +1259,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1388,9 +1324,7 @@ }, "/color_collections/custom": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1432,9 +1366,7 @@ }, "/color_collections/standard": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1476,9 +1408,7 @@ }, "/color_collections/default": { "put": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1527,9 +1457,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -1559,9 +1487,7 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1605,9 +1531,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1671,9 +1595,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1727,9 +1649,7 @@ }, "/content_favorite/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -1841,9 +1761,7 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -1888,9 +1806,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -1936,9 +1852,7 @@ }, "/content_favorite": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -1997,9 +1911,7 @@ }, "/content_metadata": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -2049,9 +1961,7 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -2110,9 +2020,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -2159,9 +2067,7 @@ }, "/content_metadata_access": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -2226,9 +2132,7 @@ "x-looker-rate-limited": true }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -2278,9 +2182,7 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -2339,9 +2241,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -2387,16 +2287,11 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": [ - "image/svg+xml", - "image/png" - ], + "produces": ["image/svg+xml", "image/png"], "parameters": [ { "name": "type", @@ -2469,9 +2364,7 @@ }, "/content_validation": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -2522,9 +2415,7 @@ }, "/content_view/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -2656,9 +2547,7 @@ }, "/custom_welcome_email": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -2686,9 +2575,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -2748,9 +2635,7 @@ }, "/custom_welcome_email_test": { "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -2803,9 +2688,7 @@ }, "/dashboards": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -2845,9 +2728,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -2906,9 +2787,7 @@ }, "/dashboards/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -3067,9 +2946,7 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3155,9 +3032,7 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3228,9 +3103,7 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -3279,9 +3152,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -3345,9 +3216,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -3393,9 +3262,7 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -3434,9 +3301,7 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -3475,9 +3340,7 @@ }, "/dashboard_elements/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3563,9 +3426,7 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -3609,9 +3470,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -3654,9 +3513,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -3723,9 +3580,7 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -3774,9 +3629,7 @@ }, "/dashboard_elements": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -3849,9 +3702,7 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -3895,9 +3746,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -3940,9 +3789,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -4009,9 +3856,7 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -4060,9 +3905,7 @@ }, "/dashboard_filters": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -4128,9 +3971,7 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -4174,9 +4015,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -4243,9 +4082,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -4294,9 +4131,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -4340,9 +4175,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -4391,9 +4224,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -4460,9 +4291,7 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -4511,9 +4340,7 @@ }, "/dashboard_layouts": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -4579,9 +4406,7 @@ }, "/data_actions": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -4622,9 +4447,7 @@ }, "/data_actions/form": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -4674,9 +4497,7 @@ }, "/datagroups": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -4709,9 +4530,7 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -4748,9 +4567,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -4816,9 +4633,7 @@ }, "/connections": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -4858,9 +4673,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -4919,9 +4732,7 @@ }, "/connections/{connection_name}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -4965,9 +4776,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -5025,9 +4834,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -5072,9 +4879,7 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -5132,9 +4937,7 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -5200,9 +5003,7 @@ }, "/connections/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -5264,9 +5065,7 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -5319,9 +5118,7 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -5374,9 +5171,7 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -5450,9 +5245,7 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -5491,9 +5284,7 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -5539,9 +5330,7 @@ }, "/dialect_info": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -5583,9 +5372,7 @@ }, "/digest_emails_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -5613,9 +5400,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -5668,9 +5453,7 @@ }, "/digest_email_send": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -5707,9 +5490,7 @@ }, "/embed/sso_url": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -5768,9 +5549,7 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -5812,9 +5591,7 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -5851,9 +5628,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -5917,9 +5692,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -5979,9 +5752,7 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -6025,9 +5796,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -6079,9 +5848,7 @@ }, "/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -6171,9 +5938,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -6239,9 +6004,7 @@ }, "/groups/search": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -6349,9 +6112,7 @@ }, "/groups/{group_id}": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -6396,9 +6157,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -6464,9 +6223,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -6518,9 +6275,7 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -6568,9 +6323,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -6625,9 +6378,7 @@ }, "/groups/{group_id}/users": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -6698,9 +6449,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -6755,9 +6504,7 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -6808,9 +6555,7 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -6861,9 +6606,7 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -6924,9 +6667,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -6971,9 +6712,7 @@ }, "/homepages": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_homepages", "summary": "Get All Homepages", "description": "### Get information about all homepages.\n", @@ -7014,9 +6753,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "create_homepage", "summary": "Create Homepage", "description": "### Create a new homepage.\n", @@ -7083,9 +6820,7 @@ }, "/homepages/search": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "search_homepages", "summary": "Search Homepages", "description": "### Search Homepages\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7216,9 +6951,7 @@ }, "/homepages/{homepage_id}": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "homepage", "summary": "Get Homepage", "description": "### Get information about a homepage.\n", @@ -7264,9 +6997,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "update_homepage", "summary": "Update Homepage", "description": "### Update a homepage definition.\n", @@ -7333,9 +7064,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "delete_homepage", "summary": "Delete Homepage", "description": "### Delete a homepage.\n", @@ -7382,9 +7111,7 @@ }, "/homepage_items": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_homepage_items", "summary": "Get All Homepage Items", "description": "### Get information about all homepage items.\n", @@ -7439,9 +7166,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "create_homepage_item", "summary": "Create Homepage Item", "description": "### Create a new homepage item.\n", @@ -7508,9 +7233,7 @@ }, "/homepage_items/{homepage_item_id}": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "homepage_item", "summary": "Get Homepage Item", "description": "### Get information about a homepage item.\n", @@ -7556,9 +7279,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "update_homepage_item", "summary": "Update Homepage Item", "description": "### Update a homepage item definition.\n", @@ -7625,9 +7346,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "delete_homepage_item", "summary": "Delete Homepage Item", "description": "### Delete a homepage item.\n", @@ -7674,9 +7393,7 @@ }, "/homepage_sections": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_homepage_sections", "summary": "Get All Homepage sections", "description": "### Get information about all homepage sections.\n", @@ -7724,9 +7441,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "create_homepage_section", "summary": "Create Homepage section", "description": "### Create a new homepage section.\n", @@ -7793,9 +7508,7 @@ }, "/homepage_sections/{homepage_section_id}": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "homepage_section", "summary": "Get Homepage section", "description": "### Get information about a homepage section.\n", @@ -7841,9 +7554,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "update_homepage_section", "summary": "Update Homepage section", "description": "### Update a homepage section definition.\n", @@ -7910,9 +7621,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "delete_homepage_section", "summary": "Delete Homepage section", "description": "### Delete a homepage section.\n", @@ -7959,9 +7668,7 @@ }, "/primary_homepage_sections": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -8003,9 +7710,7 @@ }, "/integration_hubs": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -8045,9 +7750,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -8114,9 +7817,7 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -8161,9 +7862,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -8230,9 +7929,7 @@ "x-looker-rate-limited": true }, "delete": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -8278,9 +7975,7 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -8326,9 +8021,7 @@ }, "/integrations": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -8377,9 +8070,7 @@ }, "/integrations/{integration_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -8423,9 +8114,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -8492,9 +8181,7 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -8551,9 +8238,7 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -8598,9 +8283,7 @@ }, "/internal_help_resources_content": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -8628,9 +8311,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -8683,9 +8364,7 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -8715,9 +8394,7 @@ }, "/internal_help_resources": { "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -8770,9 +8447,7 @@ }, "/ldap_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -8794,9 +8469,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -8843,9 +8516,7 @@ }, "/ldap_config/test_connection": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -8892,9 +8563,7 @@ }, "/ldap_config/test_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -8941,9 +8610,7 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -8990,9 +8657,7 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -9039,9 +8704,7 @@ }, "/legacy_features": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -9074,9 +8737,7 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -9114,9 +8775,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -9177,9 +8836,7 @@ }, "/locales": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -9212,9 +8869,7 @@ }, "/looks": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -9254,9 +8909,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -9322,9 +8975,7 @@ }, "/looks/search": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -9468,9 +9119,7 @@ }, "/looks/{look_id}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -9515,9 +9164,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -9583,9 +9230,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -9631,18 +9276,11 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "look_id", @@ -9785,9 +9423,7 @@ }, "/lookml_models": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -9827,9 +9463,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -9888,9 +9522,7 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -9934,9 +9566,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -9994,9 +9624,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -10041,9 +9669,7 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -10096,9 +9722,7 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -10144,9 +9768,7 @@ }, "/merge_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -10212,9 +9834,7 @@ }, "/model_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10315,9 +9935,7 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -10362,9 +9980,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -10408,9 +10024,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -10471,9 +10085,7 @@ }, "/model_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -10507,9 +10119,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -10562,9 +10172,7 @@ }, "/oidc_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -10586,9 +10194,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -10635,9 +10241,7 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -10668,9 +10272,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -10709,9 +10311,7 @@ }, "/oidc_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -10758,9 +10358,7 @@ }, "/password_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -10788,9 +10386,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -10843,9 +10439,7 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -10887,9 +10481,7 @@ }, "/permissions": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -10922,9 +10514,7 @@ }, "/permission_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -11025,9 +10615,7 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -11072,9 +10660,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -11124,9 +10710,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -11193,9 +10777,7 @@ }, "/permission_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -11235,9 +10817,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -11296,9 +10876,7 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -11366,9 +10944,7 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -11422,9 +10998,7 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -11478,9 +11052,7 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -11534,9 +11106,7 @@ }, "/projects": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -11576,9 +11146,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -11637,9 +11205,7 @@ }, "/projects/{project_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -11683,9 +11249,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -11764,9 +11328,7 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -11805,15 +11367,11 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", - "produces": [ - "text/plain" - ], + "produces": ["text/plain"], "parameters": [ { "name": "project_id", @@ -11865,15 +11423,11 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", - "produces": [ - "text/plain" - ], + "produces": ["text/plain"], "parameters": [ { "name": "project_id", @@ -11909,9 +11463,7 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -11967,9 +11519,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -12018,9 +11568,7 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -12066,9 +11614,7 @@ }, "/projects/{project_id}/files": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -12117,9 +11663,7 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -12172,9 +11716,7 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -12223,9 +11765,7 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -12297,9 +11837,7 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -12348,9 +11886,7 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -12425,9 +11961,7 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -12517,9 +12051,7 @@ }, "/render_tasks/lookml_dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_lookml_dashboard_render_task", "summary": "Create Lookml Dashboard Render Task", "description": "### Create a new task to render a lookml dashboard to a document or image.\n\n# DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12630,9 +12162,7 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12720,9 +12250,7 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12810,9 +12338,7 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12923,9 +12449,7 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12971,17 +12495,11 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", - "produces": [ - "image/jpeg", - "image/png", - "application/pdf" - ], + "produces": ["image/jpeg", "image/png", "application/pdf"], "parameters": [ { "name": "render_task_id", @@ -13020,9 +12538,7 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -13093,9 +12609,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -13147,9 +12661,7 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -13191,9 +12703,7 @@ }, "/roles": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -13245,9 +12755,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -13306,9 +12814,7 @@ }, "/roles/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -13402,9 +12908,7 @@ }, "/roles/{role_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -13442,9 +12946,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -13494,9 +12996,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -13563,9 +13063,7 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -13613,9 +13111,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -13682,9 +13178,7 @@ }, "/roles/{role_id}/users": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -13739,9 +13233,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -13820,9 +13312,7 @@ }, "/running_queries": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -13849,9 +13339,7 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -13896,9 +13384,7 @@ }, "/saml_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -13920,9 +13406,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -13969,9 +13453,7 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -14002,9 +13484,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -14043,9 +13523,7 @@ }, "/saml_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -14092,15 +13570,11 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", - "consumes": [ - "text/plain" - ], + "consumes": ["text/plain"], "parameters": [ { "name": "body", @@ -14138,15 +13612,11 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", - "consumes": [ - "text/plain" - ], + "consumes": ["text/plain"], "parameters": [ { "name": "body", @@ -14184,9 +13654,7 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -14236,9 +13704,7 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -14282,9 +13748,7 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -14343,9 +13807,7 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -14392,9 +13854,7 @@ }, "/scheduled_plans": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -14451,9 +13911,7 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14516,9 +13974,7 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -14578,9 +14034,7 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14645,9 +14099,7 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14712,9 +14164,7 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14778,9 +14228,7 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -14848,9 +14296,7 @@ }, "/session_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -14878,9 +14324,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -14933,9 +14377,7 @@ }, "/session": { "get": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -14963,9 +14405,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -15018,9 +14458,7 @@ }, "/smtp_settings": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -15083,9 +14521,7 @@ }, "/spaces/search": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "search_spaces", "summary": "Search Spaces", "description": "### Search Spaces\n\n Returns an **array of space objects** that match the given search criteria.\n\n If multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\n Get a **single space** by id with [Space](#!/Space/space)\n", @@ -15210,9 +14646,7 @@ }, "/spaces/{space_id}": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space", "summary": "Get Space", "description": "### Get information about the space with a specific id.", @@ -15257,9 +14691,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "delete_space", "summary": "Delete Space", "description": "### Delete the space with a specific id including any children spaces.\n**DANGER** this will delete all looks and dashboards in the space.\n", @@ -15303,9 +14735,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "update_space", "summary": "Update Space", "description": "### Update the space with a specific id.", @@ -15366,9 +14796,7 @@ }, "/spaces": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "all_spaces", "summary": "Get All Spaces", "description": "### Get information about all spaces.\n\nIn API 3.x, this will not return empty personal spaces, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal spaces will be returned.\n\n", @@ -15409,9 +14837,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "create_space", "summary": "Create Space", "description": "### Create a space with specified information.\n\nCaller must have permission to edit the parent space and to create spaces, otherwise the request\nreturns 404 Not Found.\n", @@ -15471,9 +14897,7 @@ }, "/spaces/{space_id}/children": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_children", "summary": "Get Space Children", "description": "### Get the children of a space.", @@ -15546,9 +14970,7 @@ }, "/spaces/{space_id}/children/search": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_children_search", "summary": "Search Space Children", "description": "### Search the children of a space", @@ -15612,9 +15034,7 @@ }, "/spaces/{space_id}/parent": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_parent", "summary": "Get Space Parent", "description": "### Get the parent of a space", @@ -15661,9 +15081,7 @@ }, "/spaces/{space_id}/ancestors": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_ancestors", "summary": "Get Space Ancestors", "description": "### Get the ancestors of a space", @@ -15713,9 +15131,7 @@ }, "/spaces/{space_id}/looks": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_looks", "summary": "Get Space Looks", "description": "### Get all looks in a space.\nIn API 3.x, this will return all looks in a space, including looks in the trash.\nIn API 4.0+, all looks in a space will be returned, excluding looks in the trash.\n", @@ -15765,9 +15181,7 @@ }, "/spaces/{space_id}/dashboards": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_dashboards", "summary": "Get Space Dashboards", "description": "### Get the dashboards in a space", @@ -15817,9 +15231,7 @@ }, "/folders/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -15943,9 +15355,7 @@ }, "/folders/{folder_id}": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -15989,9 +15399,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -16034,9 +15442,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -16096,9 +15502,7 @@ }, "/folders": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -16138,9 +15542,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -16199,9 +15601,7 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -16273,9 +15673,7 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -16338,9 +15736,7 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -16386,9 +15782,7 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -16437,9 +15831,7 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -16488,9 +15880,7 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -16539,9 +15929,7 @@ }, "/sql_queries/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -16580,9 +15968,7 @@ }, "/sql_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -16641,18 +16027,11 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "slug", @@ -16714,9 +16093,7 @@ }, "/themes": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16756,9 +16133,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16817,9 +16192,7 @@ }, "/themes/search": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16922,9 +16295,7 @@ }, "/themes/default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -16962,9 +16333,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -17015,9 +16384,7 @@ }, "/themes/active": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -17074,9 +16441,7 @@ }, "/themes/theme_or_default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -17123,9 +16488,7 @@ }, "/themes/validate": { "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -17190,9 +16553,7 @@ }, "/themes/{theme_id}": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -17236,9 +16597,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -17296,9 +16655,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -17343,9 +16700,7 @@ }, "/timezones": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -17378,9 +16733,7 @@ }, "/user_attributes": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -17427,9 +16780,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -17495,9 +16846,7 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -17542,9 +16891,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -17610,9 +16957,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -17658,9 +17003,7 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -17708,9 +17051,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -17783,9 +17124,7 @@ }, "/user_login_lockouts": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -17827,9 +17166,7 @@ }, "/user_login_lockouts/search": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -17929,9 +17266,7 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -17976,9 +17311,7 @@ }, "/user": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -18011,9 +17344,7 @@ }, "/users": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -18088,9 +17419,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -18150,9 +17479,7 @@ }, "/users/search": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -18290,9 +17617,7 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -18407,9 +17732,7 @@ }, "/users/{user_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -18454,9 +17777,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -18516,9 +17837,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -18564,9 +17883,7 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -18619,9 +17936,7 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18666,9 +17981,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18740,9 +18053,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18808,9 +18119,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18856,9 +18165,7 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -18903,9 +18210,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -18977,9 +18282,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -19025,9 +18328,7 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -19072,9 +18373,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -19120,9 +18419,7 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -19167,9 +18464,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -19215,9 +18510,7 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -19262,9 +18555,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -19310,9 +18601,7 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -19357,9 +18646,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -19405,9 +18692,7 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -19460,9 +18745,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -19516,9 +18799,7 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -19566,9 +18847,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -19642,9 +18921,7 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -19697,9 +18974,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -19753,9 +19028,7 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -19805,9 +19078,7 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -19852,9 +19123,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -19900,9 +19169,7 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -19955,9 +19222,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -20011,9 +19276,7 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -20063,9 +19326,7 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -20119,9 +19380,7 @@ }, "/users/{user_id}/roles": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -20176,9 +19435,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -20240,9 +19497,7 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -20312,9 +19567,7 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -20375,9 +19628,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -20422,15 +19673,11 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": [ - "image/svg+xml" - ], + "produces": ["image/svg+xml"], "parameters": [ { "name": "type", @@ -20481,9 +19728,7 @@ }, "/versions": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -20522,9 +19767,7 @@ }, "/whitelabel_configuration": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -20561,9 +19804,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -20616,9 +19857,7 @@ }, "/workspaces": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -20651,9 +19890,7 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -20709,10 +19946,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "DashboardBase": { "properties": { @@ -20933,9 +20167,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "CreateSpace": { "properties": { @@ -20951,10 +20183,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "parent_id" - ] + "required": ["name", "parent_id"] }, "UpdateSpace": { "properties": { @@ -21094,9 +20323,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "Homepage": { "properties": { @@ -21483,10 +20710,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "ValidationErrorDetail": { "properties": { @@ -21517,9 +20741,7 @@ } }, "x-looker-status": "stable", - "required": [ - "documentation_url" - ] + "required": ["documentation_url"] }, "AccessToken": { "properties": { @@ -21809,10 +21031,7 @@ "permission_type": { "type": "string", "readOnly": true, - "x-looker-values": [ - "view", - "edit" - ], + "x-looker-values": ["view", "edit"], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "x-looker-nullable": true }, @@ -22054,9 +21273,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "ContentValidationFolder": { "properties": { @@ -22073,9 +21290,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "ContentValidationLook": { "properties": { @@ -23491,12 +22706,7 @@ } }, "x-looker-status": "stable", - "required": [ - "dashboard_id", - "name", - "title", - "type" - ] + "required": ["dashboard_id", "name", "title", "type"] }, "DashboardLayoutComponent": { "properties": { @@ -24950,9 +24160,7 @@ } }, "x-looker-status": "stable", - "required": [ - "target_url" - ] + "required": ["target_url"] }, "EmbedUrlResponse": { "properties": { @@ -25000,11 +24208,7 @@ }, "ssl_version": { "type": "string", - "x-looker-values": [ - "TLSv1_1", - "SSLv23", - "TLSv1_2" - ], + "x-looker-values": ["TLSv1_1", "SSLv23", "TLSv1_2"], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "x-looker-nullable": true } @@ -25116,9 +24320,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "CreateFolder": { "properties": { @@ -25134,10 +24336,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "parent_id" - ] + "required": ["name", "parent_id"] }, "UpdateFolder": { "properties": { @@ -25277,9 +24476,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "GitBranch": { "properties": { @@ -25765,12 +24962,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "cell", - "query", - "dashboard", - "none" - ], + "x-looker-values": ["cell", "query", "dashboard", "none"], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "x-looker-nullable": false }, @@ -25780,10 +24972,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "formatted", - "unformatted" - ], + "x-looker-values": ["formatted", "unformatted"], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "x-looker-nullable": false }, @@ -25793,10 +24982,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "apply", - "noapply" - ], + "x-looker-values": ["apply", "noapply"], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "x-looker-nullable": false }, @@ -25806,10 +24992,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "push", - "url" - ], + "x-looker-values": ["push", "url"], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "x-looker-nullable": false }, @@ -27914,10 +27097,7 @@ "align": { "type": "string", "readOnly": true, - "x-looker-values": [ - "left", - "right" - ], + "x-looker-values": ["left", "right"], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "x-looker-nullable": false }, @@ -27930,12 +27110,7 @@ "category": { "type": "string", "readOnly": true, - "x-looker-values": [ - "parameter", - "filter", - "measure", - "dimension" - ], + "x-looker-values": ["parameter", "filter", "measure", "dimension"], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "x-looker-nullable": true }, @@ -27987,10 +27162,7 @@ "fill_style": { "type": "string", "readOnly": true, - "x-looker-values": [ - "enumeration", - "range" - ], + "x-looker-values": ["enumeration", "range"], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "x-looker-nullable": true }, @@ -28411,10 +27583,7 @@ "format": { "type": "string", "readOnly": true, - "x-looker-values": [ - "topojson", - "vector_tile_region" - ], + "x-looker-values": ["topojson", "vector_tile_region"], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "x-looker-nullable": false }, @@ -29558,12 +28727,7 @@ }, "pull_request_mode": { "type": "string", - "x-looker-values": [ - "off", - "links", - "recommended", - "required" - ], + "x-looker-values": ["off", "links", "recommended", "required"], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "x-looker-nullable": false }, @@ -30007,10 +29171,7 @@ } }, "x-looker-status": "stable", - "required": [ - "model", - "view" - ] + "required": ["model", "view"] }, "CreateQueryTask": { "properties": { @@ -30069,10 +29230,7 @@ } }, "x-looker-status": "stable", - "required": [ - "query_id", - "result_format" - ] + "required": ["query_id", "result_format"] }, "QueryTask": { "properties": { @@ -32785,4 +31943,4 @@ "x-looker-status": "stable" } } -} \ No newline at end of file +} diff --git a/spec/Looker.3.1.oas.json b/spec/Looker.3.1.oas.json index e1f80a6b5..fab6896de 100644 --- a/spec/Looker.3.1.oas.json +++ b/spec/Looker.3.1.oas.json @@ -127,9 +127,7 @@ "paths": { "/query_tasks": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -334,9 +332,7 @@ }, "/query_tasks/multi_results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -397,9 +393,7 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -461,9 +455,7 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", @@ -546,9 +538,7 @@ }, "/queries/{query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -611,9 +601,7 @@ }, "/queries/slug/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -675,9 +663,7 @@ }, "/queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -771,9 +757,7 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1042,9 +1026,7 @@ }, "/queries/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1314,9 +1296,7 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1482,9 +1462,7 @@ }, "/login": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", @@ -1546,9 +1524,7 @@ }, "/login/{user_id}": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1611,9 +1587,7 @@ }, "/logout": { "delete": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1655,9 +1629,7 @@ }, "/backup_configuration": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "backup_configuration", "summary": "Get Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1698,9 +1670,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_backup_configuration", "summary": "Update Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1764,9 +1734,7 @@ }, "/cloud_storage": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -1806,9 +1774,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -1871,9 +1837,7 @@ }, "/color_collections": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1927,9 +1891,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2022,9 +1984,7 @@ }, "/color_collections/custom": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2080,9 +2040,7 @@ }, "/color_collections/standard": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2138,9 +2096,7 @@ }, "/color_collections/default": { "put": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2211,9 +2167,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -2255,9 +2209,7 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2317,9 +2269,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2411,9 +2361,7 @@ } }, "delete": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2489,9 +2437,7 @@ }, "/content_favorite/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -2635,9 +2581,7 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -2698,9 +2642,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -2764,9 +2706,7 @@ }, "/content_favorite": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -2849,9 +2789,7 @@ }, "/content_metadata": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -2917,9 +2855,7 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -3002,9 +2938,7 @@ } }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -3067,9 +3001,7 @@ }, "/content_metadata_access": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -3162,9 +3094,7 @@ } }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -3230,9 +3160,7 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -3315,9 +3243,7 @@ } }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -3381,9 +3307,7 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -3498,9 +3422,7 @@ }, "/content_validation": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -3573,9 +3495,7 @@ }, "/content_view/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3745,9 +3665,7 @@ }, "/custom_welcome_email": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -3787,9 +3705,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -3873,9 +3789,7 @@ }, "/custom_welcome_email_test": { "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -3948,9 +3862,7 @@ }, "/dashboards": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -4004,9 +3916,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -4089,9 +3999,7 @@ }, "/dashboards/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -4296,9 +4204,7 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -4420,9 +4326,7 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -4519,9 +4423,7 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -4592,9 +4494,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -4686,9 +4586,7 @@ } }, "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -4750,9 +4648,7 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -4805,9 +4701,7 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -4860,9 +4754,7 @@ }, "/dashboard_elements/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4974,9 +4866,7 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -5036,9 +4926,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -5099,9 +4987,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -5194,9 +5080,7 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -5261,9 +5145,7 @@ }, "/dashboard_elements": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -5366,9 +5248,7 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -5428,9 +5308,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -5491,9 +5369,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -5586,9 +5462,7 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -5653,9 +5527,7 @@ }, "/dashboard_filters": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -5749,9 +5621,7 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -5811,9 +5681,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -5906,9 +5774,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -5973,9 +5839,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -6035,9 +5899,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -6108,9 +5970,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -6203,9 +6063,7 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -6270,9 +6128,7 @@ }, "/dashboard_layouts": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -6366,9 +6222,7 @@ }, "/data_actions": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -6421,9 +6275,7 @@ }, "/data_actions/form": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -6489,9 +6341,7 @@ }, "/datagroups": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -6536,9 +6386,7 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -6589,9 +6437,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -6685,9 +6531,7 @@ }, "/connections": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -6741,9 +6585,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -6826,9 +6668,7 @@ }, "/connections/{connection_name}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -6888,9 +6728,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -6972,9 +6810,7 @@ } }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -7037,9 +6873,7 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -7121,9 +6955,7 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -7214,9 +7046,7 @@ }, "/connections/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -7299,9 +7129,7 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -7372,9 +7200,7 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -7445,9 +7271,7 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -7545,9 +7369,7 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -7600,9 +7422,7 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -7664,9 +7484,7 @@ }, "/dialect_info": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -7722,9 +7540,7 @@ }, "/digest_emails_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -7764,9 +7580,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -7839,9 +7653,7 @@ }, "/digest_email_send": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -7894,9 +7706,7 @@ }, "/embed/sso_url": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -7979,9 +7789,7 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -8037,9 +7845,7 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -8090,9 +7896,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -8184,9 +7988,7 @@ } }, "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -8270,9 +8072,7 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -8332,9 +8132,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -8406,9 +8204,7 @@ }, "/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -8525,9 +8321,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -8621,9 +8415,7 @@ }, "/groups/search": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -8763,9 +8555,7 @@ }, "/groups/{group_id}": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -8826,9 +8616,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -8920,9 +8708,7 @@ } }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -8996,9 +8782,7 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -9062,9 +8846,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -9139,9 +8921,7 @@ }, "/groups/{group_id}/users": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -9234,9 +9014,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -9311,9 +9089,7 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -9380,9 +9156,7 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -9449,9 +9223,7 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -9534,9 +9306,7 @@ } }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -9593,9 +9363,7 @@ }, "/homepages": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_homepages", "summary": "Get All Homepages", "description": "### Get information about all homepages.\n", @@ -9650,9 +9418,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "create_homepage", "summary": "Create Homepage", "description": "### Create a new homepage.\n", @@ -9747,9 +9513,7 @@ }, "/homepages/search": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "search_homepages", "summary": "Search Homepages", "description": "### Search Homepages\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -9918,9 +9682,7 @@ }, "/homepages/{homepage_id}": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "homepage", "summary": "Get Homepage", "description": "### Get information about a homepage.\n", @@ -9982,9 +9744,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "update_homepage", "summary": "Update Homepage", "description": "### Update a homepage definition.\n", @@ -10077,9 +9837,7 @@ } }, "delete": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "delete_homepage", "summary": "Delete Homepage", "description": "### Delete a homepage.\n", @@ -10144,9 +9902,7 @@ }, "/homepage_items": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_homepage_items", "summary": "Get All Homepage Items", "description": "### Get information about all homepage items.\n", @@ -10219,9 +9975,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "create_homepage_item", "summary": "Create Homepage Item", "description": "### Create a new homepage item.\n", @@ -10316,9 +10070,7 @@ }, "/homepage_items/{homepage_item_id}": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "homepage_item", "summary": "Get Homepage Item", "description": "### Get information about a homepage item.\n", @@ -10380,9 +10132,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "update_homepage_item", "summary": "Update Homepage Item", "description": "### Update a homepage item definition.\n", @@ -10475,9 +10225,7 @@ } }, "delete": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "delete_homepage_item", "summary": "Delete Homepage Item", "description": "### Delete a homepage item.\n", @@ -10542,9 +10290,7 @@ }, "/homepage_sections": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_homepage_sections", "summary": "Get All Homepage sections", "description": "### Get information about all homepage sections.\n", @@ -10608,9 +10354,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "create_homepage_section", "summary": "Create Homepage section", "description": "### Create a new homepage section.\n", @@ -10705,9 +10449,7 @@ }, "/homepage_sections/{homepage_section_id}": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "homepage_section", "summary": "Get Homepage section", "description": "### Get information about a homepage section.\n", @@ -10769,9 +10511,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "update_homepage_section", "summary": "Update Homepage section", "description": "### Update a homepage section definition.\n", @@ -10864,9 +10604,7 @@ } }, "delete": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "delete_homepage_section", "summary": "Delete Homepage section", "description": "### Delete a homepage section.\n", @@ -10931,9 +10669,7 @@ }, "/primary_homepage_sections": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -10989,9 +10725,7 @@ }, "/integration_hubs": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -11045,9 +10779,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -11142,9 +10874,7 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -11205,9 +10935,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -11300,9 +11028,7 @@ } }, "delete": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -11366,9 +11092,7 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -11432,9 +11156,7 @@ }, "/integrations": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -11499,9 +11221,7 @@ }, "/integrations/{integration_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -11561,9 +11281,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -11656,9 +11374,7 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -11735,9 +11451,7 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -11800,9 +11514,7 @@ }, "/internal_help_resources_content": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -11842,9 +11554,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -11917,9 +11627,7 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -11961,9 +11669,7 @@ }, "/internal_help_resources": { "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -12036,9 +11742,7 @@ }, "/ldap_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -12068,9 +11772,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -12133,9 +11835,7 @@ }, "/ldap_config/test_connection": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -12198,9 +11898,7 @@ }, "/ldap_config/test_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -12263,9 +11961,7 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -12328,9 +12024,7 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -12393,9 +12087,7 @@ }, "/legacy_features": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -12440,9 +12132,7 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -12494,9 +12184,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -12581,9 +12269,7 @@ }, "/locales": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -12628,9 +12314,7 @@ }, "/looks": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -12684,9 +12368,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -12780,9 +12462,7 @@ }, "/looks/search": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -12968,9 +12648,7 @@ }, "/looks/{look_id}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -13031,9 +12709,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -13125,9 +12801,7 @@ } }, "delete": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -13191,9 +12865,7 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -13462,9 +13134,7 @@ }, "/lookml_models": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -13518,9 +13188,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -13603,9 +13271,7 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -13665,9 +13331,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -13749,9 +13413,7 @@ } }, "delete": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -13814,9 +13476,7 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -13887,9 +13547,7 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -13951,9 +13609,7 @@ }, "/merge_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -14047,9 +13703,7 @@ }, "/model_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -14180,9 +13834,7 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -14243,9 +13895,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -14307,9 +13957,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -14394,9 +14042,7 @@ }, "/model_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -14440,9 +14086,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -14515,9 +14159,7 @@ }, "/oidc_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -14547,9 +14189,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -14612,9 +14252,7 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -14655,9 +14293,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -14710,9 +14346,7 @@ }, "/oidc_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -14775,9 +14409,7 @@ }, "/password_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -14817,9 +14449,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -14892,9 +14522,7 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -14956,9 +14584,7 @@ }, "/permissions": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -15003,9 +14629,7 @@ }, "/permission_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -15136,9 +14760,7 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -15199,9 +14821,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -15273,9 +14893,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -15370,9 +14988,7 @@ }, "/permission_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -15426,9 +15042,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -15511,9 +15125,7 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -15607,9 +15219,7 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -15685,9 +15295,7 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -15763,9 +15371,7 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -15841,9 +15447,7 @@ }, "/projects": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -15897,9 +15501,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -15982,9 +15584,7 @@ }, "/projects/{project_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -16044,9 +15644,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -16159,9 +15757,7 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -16214,9 +15810,7 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", @@ -16297,9 +15891,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", @@ -16352,9 +15944,7 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -16434,9 +16024,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -16501,9 +16089,7 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -16565,9 +16151,7 @@ }, "/projects/{project_id}/files": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -16632,9 +16216,7 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -16705,9 +16287,7 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -16772,9 +16352,7 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -16874,9 +16452,7 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -16941,9 +16517,7 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -17046,9 +16620,7 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -17172,9 +16744,7 @@ }, "/render_tasks/lookml_dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_lookml_dashboard_render_task", "summary": "Create Lookml Dashboard Render Task", "description": "### Create a new task to render a lookml dashboard to a document or image.\n\n# DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17325,9 +16895,7 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17449,9 +17017,7 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17573,9 +17139,7 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17726,9 +17290,7 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17790,9 +17352,7 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", @@ -17878,9 +17438,7 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -17981,9 +17539,7 @@ } }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -18055,9 +17611,7 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -18113,9 +17667,7 @@ }, "/roles": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -18184,9 +17736,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -18269,9 +17819,7 @@ }, "/roles/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -18393,9 +17941,7 @@ }, "/roles/{role_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -18447,9 +17993,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -18521,9 +18065,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -18618,9 +18160,7 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -18684,9 +18224,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -18777,9 +18315,7 @@ }, "/roles/{role_id}/users": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -18852,9 +18388,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -18965,9 +18499,7 @@ }, "/running_queries": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -19002,9 +18534,7 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -19067,9 +18597,7 @@ }, "/saml_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -19099,9 +18627,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -19164,9 +18690,7 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -19207,9 +18731,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -19262,9 +18784,7 @@ }, "/saml_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -19327,9 +18847,7 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", @@ -19382,9 +18900,7 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", @@ -19437,9 +18953,7 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -19505,9 +19019,7 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -19569,9 +19081,7 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -19654,9 +19164,7 @@ } }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -19719,9 +19227,7 @@ }, "/scheduled_plans": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -19802,9 +19308,7 @@ } }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -19889,9 +19393,7 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -19975,9 +19477,7 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -20062,9 +19562,7 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -20149,9 +19647,7 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -20235,9 +19731,7 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -20333,9 +19827,7 @@ }, "/session_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -20375,9 +19867,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -20450,9 +19940,7 @@ }, "/session": { "get": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -20492,9 +19980,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -20567,9 +20053,7 @@ }, "/smtp_settings": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -20656,9 +20140,7 @@ }, "/spaces/search": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "search_spaces", "summary": "Search Spaces", "description": "### Search Spaces\n\n Returns an **array of space objects** that match the given search criteria.\n\n If multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\n Get a **single space** by id with [Space](#!/Space/space)\n", @@ -20819,9 +20301,7 @@ }, "/spaces/{space_id}": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space", "summary": "Get Space", "description": "### Get information about the space with a specific id.", @@ -20882,9 +20362,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "delete_space", "summary": "Delete Space", "description": "### Delete the space with a specific id including any children spaces.\n**DANGER** this will delete all looks and dashboards in the space.\n", @@ -20946,9 +20424,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "update_space", "summary": "Update Space", "description": "### Update the space with a specific id.", @@ -21033,9 +20509,7 @@ }, "/spaces": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "all_spaces", "summary": "Get All Spaces", "description": "### Get information about all spaces.\n\nIn API 3.x, this will not return empty personal spaces, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal spaces will be returned.\n\n", @@ -21090,9 +20564,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "create_space", "summary": "Create Space", "description": "### Create a space with specified information.\n\nCaller must have permission to edit the parent space and to create spaces, otherwise the request\nreturns 404 Not Found.\n", @@ -21176,9 +20648,7 @@ }, "/spaces/{space_id}/children": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_children", "summary": "Get Space Children", "description": "### Get the children of a space.", @@ -21273,9 +20743,7 @@ }, "/spaces/{space_id}/children/search": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_children_search", "summary": "Search Space Children", "description": "### Search the children of a space", @@ -21359,9 +20827,7 @@ }, "/spaces/{space_id}/parent": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_parent", "summary": "Get Space Parent", "description": "### Get the parent of a space", @@ -21424,9 +20890,7 @@ }, "/spaces/{space_id}/ancestors": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_ancestors", "summary": "Get Space Ancestors", "description": "### Get the ancestors of a space", @@ -21492,9 +20956,7 @@ }, "/spaces/{space_id}/looks": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_looks", "summary": "Get Space Looks", "description": "### Get all looks in a space.\nIn API 3.x, this will return all looks in a space, including looks in the trash.\nIn API 4.0+, all looks in a space will be returned, excluding looks in the trash.\n", @@ -21560,9 +21022,7 @@ }, "/spaces/{space_id}/dashboards": { "get": { - "tags": [ - "Space" - ], + "tags": ["Space"], "operationId": "space_dashboards", "summary": "Get Space Dashboards", "description": "### Get the dashboards in a space", @@ -21628,9 +21088,7 @@ }, "/folders/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -21790,9 +21248,7 @@ }, "/folders/{folder_id}": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -21852,9 +21308,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -21915,9 +21369,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -22001,9 +21453,7 @@ }, "/folders": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -22057,9 +21507,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -22142,9 +21590,7 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -22238,9 +21684,7 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -22323,9 +21767,7 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -22387,9 +21829,7 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -22454,9 +21894,7 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -22521,9 +21959,7 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -22588,9 +22024,7 @@ }, "/sql_queries/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -22643,9 +22077,7 @@ }, "/sql_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -22728,9 +22160,7 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", @@ -22896,9 +22326,7 @@ }, "/themes": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22952,9 +22380,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23037,9 +22463,7 @@ }, "/themes/search": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23172,9 +22596,7 @@ }, "/themes/default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -23226,9 +22648,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23301,9 +22721,7 @@ }, "/themes/active": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -23378,9 +22796,7 @@ }, "/themes/theme_or_default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23443,9 +22859,7 @@ }, "/themes/validate": { "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23538,9 +22952,7 @@ }, "/themes/{theme_id}": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23600,9 +23012,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23684,9 +23094,7 @@ } }, "delete": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23749,9 +23157,7 @@ }, "/timezones": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -23796,9 +23202,7 @@ }, "/user_attributes": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -23861,9 +23265,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -23957,9 +23359,7 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -24020,9 +23420,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -24114,9 +23512,7 @@ } }, "delete": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -24180,9 +23576,7 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -24246,9 +23640,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -24349,9 +23741,7 @@ }, "/user_login_lockouts": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -24407,9 +23797,7 @@ }, "/user_login_lockouts/search": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -24539,9 +23927,7 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -24604,9 +23990,7 @@ }, "/user": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -24649,9 +24033,7 @@ }, "/users": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -24749,9 +24131,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -24835,9 +24215,7 @@ }, "/users/search": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -25015,9 +24393,7 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -25166,9 +24542,7 @@ }, "/users/{user_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -25229,9 +24603,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -25313,9 +24685,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -25379,9 +24749,7 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -25452,9 +24820,7 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -25515,9 +24881,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -25619,9 +24983,7 @@ } }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -25713,9 +25075,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -25779,9 +25139,7 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -25842,9 +25200,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -25946,9 +25302,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -26012,9 +25366,7 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -26075,9 +25427,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -26141,9 +25491,7 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -26204,9 +25552,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -26270,9 +25616,7 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -26333,9 +25677,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -26399,9 +25741,7 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -26462,9 +25802,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -26528,9 +25866,7 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26601,9 +25937,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26677,9 +26011,7 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26743,9 +26075,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26849,9 +26179,7 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -26922,9 +26250,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -26998,9 +26324,7 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -27066,9 +26390,7 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -27129,9 +26451,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -27195,9 +26515,7 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -27268,9 +26586,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -27344,9 +26660,7 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -27412,9 +26726,7 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -27486,9 +26798,7 @@ }, "/users/{user_id}/roles": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -27561,9 +26871,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -27643,9 +26951,7 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -27734,9 +27040,7 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -27819,9 +27123,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -27878,9 +27180,7 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -27952,9 +27252,7 @@ }, "/versions": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -28007,9 +27305,7 @@ }, "/whitelabel_configuration": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -28060,9 +27356,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -28135,9 +27429,7 @@ }, "/workspaces": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -28182,9 +27474,7 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -28261,10 +27551,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "DashboardBase": { "properties": { @@ -28476,9 +27763,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "CreateSpace": { "properties": { @@ -28494,10 +27779,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "parent_id" - ] + "required": ["name", "parent_id"] }, "UpdateSpace": { "properties": { @@ -28637,9 +27919,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "Homepage": { "properties": { @@ -29026,10 +28306,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "ValidationErrorDetail": { "properties": { @@ -29060,9 +28337,7 @@ } }, "x-looker-status": "stable", - "required": [ - "documentation_url" - ] + "required": ["documentation_url"] }, "AccessToken": { "properties": { @@ -29346,10 +28621,7 @@ "permission_type": { "type": "string", "readOnly": true, - "enum": [ - "view", - "edit" - ], + "enum": ["view", "edit"], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "nullable": true }, @@ -29575,9 +28847,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "ContentValidationFolder": { "properties": { @@ -29594,9 +28864,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "ContentValidationLook": { "properties": { @@ -30989,12 +30257,7 @@ } }, "x-looker-status": "stable", - "required": [ - "dashboard_id", - "name", - "title", - "type" - ] + "required": ["dashboard_id", "name", "title", "type"] }, "DashboardLayoutComponent": { "properties": { @@ -32420,9 +31683,7 @@ } }, "x-looker-status": "stable", - "required": [ - "target_url" - ] + "required": ["target_url"] }, "EmbedUrlResponse": { "properties": { @@ -32470,11 +31731,7 @@ }, "ssl_version": { "type": "string", - "enum": [ - "TLSv1_1", - "SSLv23", - "TLSv1_2" - ], + "enum": ["TLSv1_1", "SSLv23", "TLSv1_2"], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "nullable": true } @@ -32586,9 +31843,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "CreateFolder": { "properties": { @@ -32604,10 +31859,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "parent_id" - ] + "required": ["name", "parent_id"] }, "UpdateFolder": { "properties": { @@ -32747,9 +31999,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "GitBranch": { "properties": { @@ -33235,12 +32485,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "cell", - "query", - "dashboard", - "none" - ], + "enum": ["cell", "query", "dashboard", "none"], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "nullable": false }, @@ -33250,10 +32495,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "formatted", - "unformatted" - ], + "enum": ["formatted", "unformatted"], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "nullable": false }, @@ -33263,10 +32505,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "apply", - "noapply" - ], + "enum": ["apply", "noapply"], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "nullable": false }, @@ -33276,10 +32515,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "push", - "url" - ], + "enum": ["push", "url"], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "nullable": false }, @@ -35336,10 +34572,7 @@ "align": { "type": "string", "readOnly": true, - "enum": [ - "left", - "right" - ], + "enum": ["left", "right"], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "nullable": false }, @@ -35352,12 +34585,7 @@ "category": { "type": "string", "readOnly": true, - "enum": [ - "parameter", - "filter", - "measure", - "dimension" - ], + "enum": ["parameter", "filter", "measure", "dimension"], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "nullable": true }, @@ -35409,10 +34637,7 @@ "fill_style": { "type": "string", "readOnly": true, - "enum": [ - "enumeration", - "range" - ], + "enum": ["enumeration", "range"], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "nullable": true }, @@ -35827,10 +35052,7 @@ "format": { "type": "string", "readOnly": true, - "enum": [ - "topojson", - "vector_tile_region" - ], + "enum": ["topojson", "vector_tile_region"], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "nullable": false }, @@ -36968,12 +36190,7 @@ }, "pull_request_mode": { "type": "string", - "enum": [ - "off", - "links", - "recommended", - "required" - ], + "enum": ["off", "links", "recommended", "required"], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "nullable": false }, @@ -37414,10 +36631,7 @@ } }, "x-looker-status": "stable", - "required": [ - "model", - "view" - ] + "required": ["model", "view"] }, "CreateQueryTask": { "properties": { @@ -37476,10 +36690,7 @@ } }, "x-looker-status": "stable", - "required": [ - "query_id", - "result_format" - ] + "required": ["query_id", "result_format"] }, "QueryTask": { "properties": { @@ -40134,4 +39345,4 @@ } } } -} \ No newline at end of file +} diff --git a/spec/Looker.4.0.json b/spec/Looker.4.0.json index ffbbdde33..74264b3bc 100644 --- a/spec/Looker.4.0.json +++ b/spec/Looker.4.0.json @@ -15,16 +15,10 @@ } }, "basePath": "/api/4.0", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], + "consumes": ["application/json"], + "produces": ["application/json"], "host": "localhost:20000", - "schemes": [ - "https" - ], + "schemes": ["https"], "tags": [ { "name": "Alert", @@ -146,9 +140,7 @@ "paths": { "/query_tasks": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -303,9 +295,7 @@ }, "/query_tasks/multi_results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -352,9 +342,7 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -400,16 +388,11 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", - "produces": [ - "text", - "application/json" - ], + "produces": ["text", "application/json"], "parameters": [ { "name": "query_task_id", @@ -451,9 +434,7 @@ }, "/queries/{query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -499,9 +480,7 @@ }, "/queries/slug/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -547,9 +526,7 @@ }, "/queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -615,18 +592,11 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "query_id", @@ -775,18 +745,11 @@ }, "/queries/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "result_format", @@ -930,18 +893,11 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "model_name", @@ -1003,15 +959,11 @@ }, "/login": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", - "consumes": [ - "application/x-www-form-urlencoded" - ], + "consumes": ["application/x-www-form-urlencoded"], "parameters": [ { "name": "client_id", @@ -1054,9 +1006,7 @@ }, "/login/{user_id}": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1102,9 +1052,7 @@ }, "/logout": { "delete": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1134,9 +1082,7 @@ }, "/alerts/{alert_id}/follow": { "post": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "follow_alert", "summary": "Follow an alert", "description": "Follow an alert.", @@ -1170,9 +1116,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "unfollow_alert", "summary": "Unfollow an alert", "description": "Unfollow an alert.", @@ -1214,9 +1158,7 @@ }, "/alerts/search": { "get": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "search_alerts", "summary": "Search Alerts", "description": "### Search Alerts\n", @@ -1329,9 +1271,7 @@ }, "/alerts/{alert_id}": { "get": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "get_alert", "summary": "Get an alert", "description": "### Get an alert by a given alert ID\n", @@ -1368,9 +1308,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "update_alert_field", "summary": "Update select fields on an alert", "description": "### Update select alert fields\n# Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold`\n#\n", @@ -1434,9 +1372,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "update_alert", "summary": "Update an alert", "description": "### Update an alert\n# Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n#\n", @@ -1494,9 +1430,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "delete_alert", "summary": "Delete an alert", "description": "### Delete an alert by a given alert ID\n", @@ -1544,9 +1478,7 @@ }, "/alerts": { "post": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "create_alert", "summary": "Create an alert", "description": "### Create a new alert and return details of the newly created object\n\nRequired fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n\nExample Request:\nRun alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000\n```\n{\n \"cron\": \"0 5 * * *\",\n \"custom_title\": \"Alert when LA inventory is low\",\n \"dashboard_element_id\": 103,\n \"applied_dashboard_filters\": [\n {\n \"filter_title\": \"Warehouse Name\",\n \"field_name\": \"distribution_centers.name\",\n \"filter_value\": \"Los Angeles CA\",\n \"filter_description\": \"is Los Angeles CA\"\n }\n ],\n \"comparison_type\": \"LESS_THAN\",\n \"destinations\": [\n {\n \"destination_type\": \"EMAIL\",\n \"email_address\": \"test@test.com\"\n }\n ],\n \"field\": {\n \"title\": \"Number on Hand\",\n \"name\": \"inventory_items.number_on_hand\"\n },\n \"is_disabled\": false,\n \"is_public\": true,\n \"threshold\": 1000\n}\n```\n", @@ -1611,9 +1543,7 @@ }, "/alerts/{alert_id}/enqueue": { "post": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "enqueue_alert", "summary": "Enqueue an alert", "description": "### Enqueue an Alert by ID\n", @@ -1669,9 +1599,7 @@ }, "/alert_notifications": { "get": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "alert_notifications", "summary": "Alert Notifications", "description": "# Alert Notifications.\n The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user.\n\n", @@ -1722,9 +1650,7 @@ }, "/alert_notifications/{alert_notification_id}": { "patch": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "read_alert_notification", "summary": "Read a Notification", "description": "# Reads a Notification\n The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response.\n", @@ -1775,9 +1701,7 @@ }, "/cloud_storage": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -1805,9 +1729,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -1854,9 +1776,7 @@ }, "/color_collections": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1896,9 +1816,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1963,9 +1881,7 @@ }, "/color_collections/custom": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2007,9 +1923,7 @@ }, "/color_collections/standard": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2051,9 +1965,7 @@ }, "/color_collections/default": { "put": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2102,9 +2014,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -2134,9 +2044,7 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2180,9 +2088,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2246,9 +2152,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2302,9 +2206,7 @@ }, "/content_favorite/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -2418,9 +2320,7 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -2464,9 +2364,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -2511,9 +2409,7 @@ }, "/content_favorite": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -2572,9 +2468,7 @@ }, "/content_metadata": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -2623,9 +2517,7 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -2683,9 +2575,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -2731,9 +2621,7 @@ }, "/content_metadata_access": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -2798,9 +2686,7 @@ "x-looker-rate-limited": true }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -2849,9 +2735,7 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -2909,9 +2793,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -2956,16 +2838,11 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": [ - "image/svg+xml", - "image/png" - ], + "produces": ["image/svg+xml", "image/png"], "parameters": [ { "name": "type", @@ -3038,9 +2915,7 @@ }, "/content_validation": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -3091,9 +2966,7 @@ }, "/content_view/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3221,9 +3094,7 @@ }, "/credentials_email/search": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_credentials_email", "summary": "Search CredentialsEmail", "description": "### Search email credentials\n\nReturns all credentials_email records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3316,9 +3187,7 @@ }, "/custom_welcome_email": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -3347,9 +3216,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -3410,9 +3277,7 @@ }, "/custom_welcome_email_test": { "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -3465,9 +3330,7 @@ }, "/dashboards": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -3507,9 +3370,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -3568,9 +3429,7 @@ }, "/dashboards/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -3744,9 +3603,7 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3832,9 +3689,7 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3905,9 +3760,7 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -3956,9 +3809,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -4022,9 +3873,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -4070,9 +3919,7 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -4111,9 +3958,7 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -4152,9 +3997,7 @@ }, "/dashboards/{dashboard_id}/move": { "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "move_dashboard", "summary": "Move Dashboard", "description": "### Move an existing dashboard\n\nMoves a dashboard to a specified folder, and returns the moved dashboard.\n\n`dashboard_id` and `folder_id` are required.\n`dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -4218,9 +4061,7 @@ }, "/dashboards/lookml": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "import_dashboard_from_lookml", "summary": "Import Dashboard from LookML", "description": "### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard.\n\nIf a dashboard exists with the YAML-defined \"preferred_slug\", the new dashboard will overwrite it. Otherwise, a new\ndashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained.\n\nIf a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it\nIf the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards\nwill remain where they were\n\nLookML must contain valid LookML YAML code. It's recommended to use the LookML format returned\nfrom [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with \n).\n\nNote that the created dashboard is not linked to any LookML Dashboard,\ni.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method.\n", @@ -4285,9 +4126,7 @@ }, "/dashboards/from_lookml": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_from_lookml", "summary": "Create Dashboard from LookML", "description": "# DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml)\n", @@ -4352,9 +4191,7 @@ }, "/dashboards/{dashboard_id}/copy": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "copy_dashboard", "summary": "Copy Dashboard", "description": "### Copy an existing dashboard\n\nCreates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard.\n\n`dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified.\n`folder_id` will default to the existing folder.\n\nIf a dashboard with the same title already exists in the target folder, the copy will have '(copy)'\n or '(copy <# of copies>)' appended.\n", @@ -4424,9 +4261,7 @@ }, "/dashboard_elements/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4510,9 +4345,7 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -4556,9 +4389,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -4601,9 +4432,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -4670,9 +4499,7 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -4721,9 +4548,7 @@ }, "/dashboard_elements": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -4796,9 +4621,7 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -4842,9 +4665,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -4887,9 +4708,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -4956,9 +4775,7 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -5007,9 +4824,7 @@ }, "/dashboard_filters": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -5075,9 +4890,7 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -5121,9 +4934,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -5190,9 +5001,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -5241,9 +5050,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -5287,9 +5094,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -5338,9 +5143,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -5407,9 +5210,7 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -5458,9 +5259,7 @@ }, "/dashboard_layouts": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -5526,9 +5325,7 @@ }, "/data_actions": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -5569,9 +5366,7 @@ }, "/data_actions/form": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -5621,9 +5416,7 @@ }, "/datagroups": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -5656,9 +5449,7 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -5695,9 +5486,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -5763,9 +5552,7 @@ }, "/connections": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -5805,9 +5592,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -5866,9 +5651,7 @@ }, "/connections/{connection_name}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -5912,9 +5695,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -5972,9 +5753,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -6019,9 +5798,7 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -6079,9 +5856,7 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -6147,9 +5922,7 @@ }, "/connections/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -6211,9 +5984,7 @@ }, "/projects/{project_id}/manifest/lock_all": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "lock_all", "summary": "Lock All", "description": " ### Generate Lockfile for All LookML Dependencies\n\n Git must have been configured, must be in dev mode and deploy permission required\n\n Install_all is a two step process\n 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref.\n 2. The project will then write out a lockfile including each remote_dependency with its resolved ref.\n\n", @@ -6274,9 +6045,7 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -6329,9 +6098,7 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -6384,9 +6151,7 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -6460,9 +6225,7 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -6501,9 +6264,7 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -6549,9 +6310,7 @@ }, "/dialect_info": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -6593,9 +6352,7 @@ }, "/digest_emails_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -6623,9 +6380,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -6678,9 +6433,7 @@ }, "/digest_email_send": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -6717,9 +6470,7 @@ }, "/public_egress_ip_addresses": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "public_egress_ip_addresses", "summary": "Public Egress IP Addresses", "description": "### Get Egress IP Addresses\n\nReturns the list of public egress IP Addresses for a hosted customer's instance\n", @@ -6749,9 +6500,7 @@ }, "/embed_config/secrets": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_embed_secret", "summary": "Create Embed Secret", "description": "### Create an embed secret using the specified information.\n\nThe value of the `secret` field will be set by Looker and returned.\n", @@ -6810,9 +6559,7 @@ }, "/embed_config/secrets/{embed_secret_id}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_embed_secret", "summary": "Delete Embed Secret", "description": "### Delete an embed secret.\n", @@ -6857,9 +6604,7 @@ }, "/embed/sso_url": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -6918,9 +6663,7 @@ }, "/embed/token_url/me": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_embed_url_as_me", "summary": "Create Embed URL", "description": "### Create an Embed URL\n\nCreates an embed URL that runs as the Looker user making this API call. (\"Embed as me\")\nThis embed URL can then be used to instantiate a Looker embed session in a\n\"Powered by Looker\" (PBL) web application.\n\nThis is similar to Private Embedding (https://docs.looker.com/r/admin/embed/private-embed). Instead of\nof logging into the Web UI to authenticate, the user has already authenticated against the API to be able to\nmake this call. However, unlike Private Embed where the user has access to any other part of the Looker UI,\nthe embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to\ncontent visible under the `/embed` context.\n\nAn embed URL can only be used once, and must be used within 5 minutes of being created. After it\nhas been used to request a page from the Looker server, the URL is invalid. Future requests using\nthe same URL will fail. This is to prevent 'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with \"/embed\" and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar, insert \"/embed\" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request.\n\n#### Security Note\nProtect this embed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -6979,9 +6722,7 @@ }, "/external_oauth_applications": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_external_oauth_applications", "summary": "Get All External OAuth Applications", "description": "### Get all External OAuth Applications.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -7028,9 +6769,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_external_oauth_application", "summary": "Create External OAuth Application", "description": "### Create an OAuth Application using the specified configuration.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -7089,9 +6828,7 @@ }, "/external_oauth_applications/user_state": { "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_oauth_application_user_state", "summary": "Create Create OAuth user state.", "description": "### Create OAuth User state.\n", @@ -7150,9 +6887,7 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -7194,9 +6929,7 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -7233,9 +6966,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -7299,9 +7030,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -7361,9 +7090,7 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -7407,9 +7134,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -7461,9 +7186,7 @@ }, "/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -7569,9 +7292,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -7637,9 +7358,7 @@ }, "/groups/search": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7746,9 +7465,7 @@ }, "/groups/search/with_roles": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups_with_roles", "summary": "Search Groups with Roles", "description": "### Search groups include roles\n\nReturns all group records that match the given search criteria, and attaches any associated roles.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7855,9 +7572,7 @@ }, "/groups/search/with_hierarchy": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups_with_hierarchy", "summary": "Search Groups with Hierarchy", "description": "### Search groups include hierarchy\n\nReturns all group records that match the given search criteria, and attaches\nassociated role_ids and parent group_ids.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7964,9 +7679,7 @@ }, "/groups/{group_id}": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -8010,9 +7723,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -8077,9 +7788,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -8130,9 +7839,7 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -8179,9 +7886,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -8235,9 +7940,7 @@ }, "/groups/{group_id}/users": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -8325,9 +8028,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -8381,9 +8082,7 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -8432,9 +8131,7 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -8483,9 +8180,7 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -8544,9 +8239,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -8589,9 +8282,7 @@ }, "/boards": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "all_boards", "summary": "Get All Boards", "description": "### Get information about all boards.\n", @@ -8631,9 +8322,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "create_board", "summary": "Create Board", "description": "### Create a new board.\n", @@ -8699,9 +8388,7 @@ }, "/boards/search": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "search_boards", "summary": "Search Boards", "description": "### Search Boards\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -8838,9 +8525,7 @@ }, "/boards/{board_id}": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "board", "summary": "Get Board", "description": "### Get information about a board.\n", @@ -8884,9 +8569,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "update_board", "summary": "Update Board", "description": "### Update a board definition.\n", @@ -8951,9 +8634,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "delete_board", "summary": "Delete Board", "description": "### Delete a board.\n", @@ -8998,9 +8679,7 @@ }, "/board_items": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "all_board_items", "summary": "Get All Board Items", "description": "### Get information about all board items.\n", @@ -9054,9 +8733,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "create_board_item", "summary": "Create Board Item", "description": "### Create a new board item.\n", @@ -9122,9 +8799,7 @@ }, "/board_items/{board_item_id}": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "board_item", "summary": "Get Board Item", "description": "### Get information about a board item.\n", @@ -9168,9 +8843,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "update_board_item", "summary": "Update Board Item", "description": "### Update a board item definition.\n", @@ -9235,9 +8908,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "delete_board_item", "summary": "Delete Board Item", "description": "### Delete a board item.\n", @@ -9282,9 +8953,7 @@ }, "/primary_homepage_sections": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -9326,9 +8995,7 @@ }, "/board_sections": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "all_board_sections", "summary": "Get All Board sections", "description": "### Get information about all board sections.\n", @@ -9375,9 +9042,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "create_board_section", "summary": "Create Board section", "description": "### Create a new board section.\n", @@ -9443,9 +9108,7 @@ }, "/board_sections/{board_section_id}": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "board_section", "summary": "Get Board section", "description": "### Get information about a board section.\n", @@ -9489,9 +9152,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "update_board_section", "summary": "Update Board section", "description": "### Update a board section definition.\n", @@ -9556,9 +9217,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "delete_board_section", "summary": "Delete Board section", "description": "### Delete a board section.\n", @@ -9603,9 +9262,7 @@ }, "/integration_hubs": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -9645,9 +9302,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -9714,9 +9369,7 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -9760,9 +9413,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -9828,9 +9479,7 @@ "x-looker-rate-limited": true }, "delete": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -9875,9 +9524,7 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -9922,9 +9569,7 @@ }, "/integrations": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -9973,9 +9618,7 @@ }, "/integrations/{integration_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -10019,9 +9662,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -10088,9 +9729,7 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -10147,9 +9786,7 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -10194,9 +9831,7 @@ }, "/internal_help_resources_content": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -10224,9 +9859,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -10279,9 +9912,7 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -10311,9 +9942,7 @@ }, "/internal_help_resources": { "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -10366,9 +9995,7 @@ }, "/ldap_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -10390,9 +10017,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -10439,9 +10064,7 @@ }, "/ldap_config/test_connection": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -10488,9 +10111,7 @@ }, "/ldap_config/test_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -10537,9 +10158,7 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -10586,9 +10205,7 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -10635,9 +10252,7 @@ }, "/legacy_features": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -10670,9 +10285,7 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -10709,9 +10322,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -10771,9 +10382,7 @@ }, "/locales": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -10806,9 +10415,7 @@ }, "/looks": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -10848,9 +10455,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -10916,9 +10521,7 @@ }, "/looks/search": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -11085,9 +10688,7 @@ }, "/looks/{look_id}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -11131,9 +10732,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -11198,9 +10797,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -11245,18 +10842,11 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "look_id", @@ -11398,9 +10988,7 @@ }, "/looks/{look_id}/copy": { "post": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "copy_look", "summary": "Copy Look", "description": "### Copy an existing look\n\nCreates a copy of an existing look, in a specified folder, and returns the copied look.\n\n`look_id` and `folder_id` are required.\n\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -11470,9 +11058,7 @@ }, "/looks/{look_id}/move": { "patch": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "move_look", "summary": "Move Look", "description": "### Move an existing look\n\nMoves a look to a specified folder, and returns the moved look.\n\n`look_id` and `folder_id` are required.\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -11536,9 +11122,7 @@ }, "/lookml_models": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -11594,9 +11178,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -11655,9 +11237,7 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -11701,9 +11281,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -11761,9 +11339,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -11808,9 +11384,7 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -11863,9 +11437,7 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -11911,9 +11483,7 @@ }, "/merge_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -11979,9 +11549,7 @@ }, "/models/{model_name}/views/{view_name}/fields/{field_name}/suggestions": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "model_fieldname_suggestions", "summary": "Model field name suggestions", "description": "### Field name suggestions for a model and view\n\n`filters` is a string hash of values, with the key as the field name and the string value as the filter expression:\n\n```ruby\n{'users.age': '>=60'}\n```\n\nor\n\n```ruby\n{'users.age': '<30'}\n```\n\nor\n\n```ruby\n{'users.age': '=50'}\n```\n", @@ -12051,9 +11619,7 @@ }, "/models/{model_name}": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "get_model", "summary": "Get a single model", "description": "### Get a single model\n\n", @@ -12092,9 +11658,7 @@ }, "/connections/{connection_name}/databases": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_databases", "summary": "List accessible databases to this connection", "description": "### List databases available to this connection\n\nCertain dialects can support multiple databases per single connection.\nIf this connection supports multiple databases, the database names will be returned in an array.\n\nConnections using dialects that do not support multiple databases will return an empty array.\n\n**Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports\nmultiple databases.\n", @@ -12142,9 +11706,7 @@ }, "/connections/{connection_name}/features": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_features", "summary": "Metadata features supported by this connection", "description": "### Retrieve metadata features for this connection\n\nReturns a list of feature names with `true` (available) or `false` (not available)\n\n", @@ -12203,9 +11765,7 @@ }, "/connections/{connection_name}/schemas": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_schemas", "summary": "Get schemas for a connection", "description": "### Get the list of schemas and tables for a connection\n\n", @@ -12280,9 +11840,7 @@ }, "/connections/{connection_name}/tables": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_tables", "summary": "Get tables for a connection", "description": "### Get the list of tables for a schema\n\nFor dialects that support multiple databases, optionally identify which to use. If not provided, the default\ndatabase for the connection will be used.\n\nFor dialects that do **not** support multiple databases, **do not use** the database parameter\n", @@ -12379,9 +11937,7 @@ }, "/connections/{connection_name}/columns": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_columns", "summary": "Get columns for a connection", "description": "### Get the columns (and therefore also the tables) in a specific schema\n\n", @@ -12478,9 +12034,7 @@ }, "/connections/{connection_name}/search_columns": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_search_columns", "summary": "Search a connection for columns", "description": "### Search a connection for columns matching the specified name\n\n**Note**: `column_name` must be a valid column name. It is not a search pattern.\n", @@ -12549,9 +12103,7 @@ }, "/connections/{connection_name}/cost_estimate": { "post": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_cost_estimate", "summary": "Estimate costs for a connection", "description": "### Connection cost estimating\n\nAssign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}`\n\n**Note**: If the connection's dialect has no support for cost estimates, an error will be returned\n", @@ -12619,9 +12171,7 @@ }, "/mobile/settings": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "mobile_settings", "summary": "Get Mobile_Settings", "description": "### Get all mobile settings.\n", @@ -12651,9 +12201,7 @@ }, "/mobile/device": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "register_mobile_device", "summary": "Register Mobile Device", "description": "### Registers a mobile device.\n# Required fields: [:device_token, :device_type]\n", @@ -12712,9 +12260,7 @@ }, "/mobile/device/{device_id}": { "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_mobile_device_registration", "summary": "Update Mobile Device Registration", "description": "### Updates the mobile device registration\n", @@ -12763,9 +12309,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "deregister_mobile_device", "summary": "Deregister Mobile Device", "description": "### Deregister a mobile device.\n", @@ -12807,9 +12351,7 @@ }, "/model_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -12909,9 +12451,7 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -12955,9 +12495,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -13000,9 +12538,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -13062,9 +12598,7 @@ }, "/model_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -13098,9 +12632,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -13153,9 +12685,7 @@ }, "/oauth_client_apps": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "all_oauth_client_apps", "summary": "Get All OAuth Client Apps", "description": "### List All OAuth Client Apps\n\nLists all applications registered to use OAuth2 login with this Looker instance, including\nenabled and disabled apps.\n\nResults are filtered to include only the apps that the caller (current user)\nhas permission to see.\n", @@ -13197,9 +12727,7 @@ }, "/oauth_client_apps/{client_guid}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oauth_client_app", "summary": "Get OAuth Client App", "description": "### Get Oauth Client App\n\nReturns the registered app client with matching client_guid.\n", @@ -13243,9 +12771,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_oauth_client_app", "summary": "Delete OAuth Client App", "description": "### Delete OAuth Client App\n\nDeletes the registration info of the app with the matching client_guid.\nAll active sessions and tokens issued for this app will immediately become invalid.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the\nindicated resource does not exist.\n\n### Note: this deletion cannot be undone.\n", @@ -13288,9 +12814,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "register_oauth_client_app", "summary": "Register OAuth App", "description": "### Register an OAuth2 Client App\n\nRegisters details identifying an external web app or native app as an OAuth2 login client of the Looker instance.\nThe app registration must provide a unique client_guid and redirect_uri that the app will present\nin OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match\nthe app details registered with the Looker instance, the request is assumed to be a forgery and is rejected.\n", @@ -13361,9 +12885,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_oauth_client_app", "summary": "Update OAuth App", "description": "### Update OAuth2 Client App Details\n\nModifies the details a previously registered OAuth2 login client app.\n", @@ -13430,9 +12952,7 @@ }, "/oauth_client_apps/{client_guid}/tokens": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "invalidate_tokens", "summary": "Invalidate Tokens", "description": "### Invalidate All Issued Tokens\n\nImmediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for\nthis app for ALL USERS of this app.\n", @@ -13477,9 +12997,7 @@ }, "/oauth_client_apps/{client_guid}/users/{user_id}": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "activate_app_user", "summary": "Activate OAuth App User", "description": "### Activate an app for a user\n\nActivates a user for a given oauth client app. This indicates the user has been informed that\nthe app will have access to the user's looker data, and that the user has accepted and allowed\nthe app to use their Looker account.\n\nActivating a user for an app that the user is already activated with returns a success response.\n", @@ -13545,9 +13063,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "deactivate_app_user", "summary": "Deactivate OAuth App User", "description": "### Deactivate an app for a user\n\nDeactivate a user for a given oauth client app. All tokens issued to the app for\nthis user will be invalid immediately. Before the user can use the app with their\nLooker account, the user will have to read and accept an account use disclosure statement for the app.\n\nAdmin users can deactivate other users, but non-admin users can only deactivate themselves.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the indicated\nresource (app or user) does not exist or has already been deactivated.\n", @@ -13606,9 +13122,7 @@ }, "/oidc_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -13630,9 +13144,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -13679,9 +13191,7 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -13712,9 +13222,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -13753,9 +13261,7 @@ }, "/oidc_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -13802,9 +13308,7 @@ }, "/password_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -13832,9 +13336,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -13887,9 +13389,7 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -13931,9 +13431,7 @@ }, "/permissions": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -13966,9 +13464,7 @@ }, "/permission_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -14068,9 +13564,7 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -14114,9 +13608,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -14165,9 +13657,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -14233,9 +13723,7 @@ }, "/permission_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -14275,9 +13763,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -14336,9 +13822,7 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -14406,9 +13890,7 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -14462,9 +13944,7 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -14518,9 +13998,7 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -14574,9 +14052,7 @@ }, "/projects": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -14616,9 +14092,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -14677,9 +14151,7 @@ }, "/projects/{project_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -14723,9 +14195,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -14804,9 +14274,7 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -14845,15 +14313,11 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", - "produces": [ - "text/plain" - ], + "produces": ["text/plain"], "parameters": [ { "name": "project_id", @@ -14905,15 +14369,11 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", - "produces": [ - "text/plain" - ], + "produces": ["text/plain"], "parameters": [ { "name": "project_id", @@ -14949,9 +14409,7 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -15007,9 +14465,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -15058,9 +14514,7 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -15106,9 +14560,7 @@ }, "/projects/{project_id}/files": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -15157,9 +14609,7 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -15212,9 +14662,7 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -15263,9 +14711,7 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -15337,9 +14783,7 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -15388,9 +14832,7 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -15465,9 +14907,7 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -15557,9 +14997,7 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15646,9 +15084,7 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15735,9 +15171,7 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15854,9 +15288,7 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15902,17 +15334,11 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", - "produces": [ - "image/jpeg", - "image/png", - "application/pdf" - ], + "produces": ["image/jpeg", "image/png", "application/pdf"], "parameters": [ { "name": "render_task_id", @@ -15951,9 +15377,7 @@ }, "/render_tasks/dashboard_elements/{dashboard_element_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_dashboard_element_render_task", "summary": "Create Dashboard Element Render Task", "description": "### Create a new task to render a dashboard element to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -16040,9 +15464,7 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -16113,9 +15535,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -16167,9 +15587,7 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -16211,9 +15629,7 @@ }, "/roles": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -16264,9 +15680,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -16325,9 +15739,7 @@ }, "/roles/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -16420,9 +15832,7 @@ }, "/roles/search/with_user_count": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_roles_with_user_count", "summary": "Search Roles with User Count", "description": "### Search roles include user count\n\nReturns all role records that match the given search criteria, and attaches\nassociated user counts.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -16515,9 +15925,7 @@ }, "/roles/{role_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -16554,9 +15962,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -16605,9 +16011,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -16673,9 +16077,7 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -16722,9 +16124,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -16790,9 +16190,7 @@ }, "/roles/{role_id}/users": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -16846,9 +16244,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -16926,9 +16322,7 @@ }, "/running_queries": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -16955,9 +16349,7 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -17002,9 +16394,7 @@ }, "/saml_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -17026,9 +16416,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -17075,9 +16463,7 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -17108,9 +16494,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -17149,9 +16533,7 @@ }, "/saml_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -17198,15 +16580,11 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", - "consumes": [ - "text/plain" - ], + "consumes": ["text/plain"], "parameters": [ { "name": "body", @@ -17244,15 +16622,11 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", - "consumes": [ - "text/plain" - ], + "consumes": ["text/plain"], "parameters": [ { "name": "body", @@ -17290,9 +16664,7 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -17341,9 +16713,7 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -17386,9 +16756,7 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -17446,9 +16814,7 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -17494,9 +16860,7 @@ }, "/scheduled_plans": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -17553,9 +16917,7 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17617,9 +16979,7 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -17679,9 +17039,7 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17744,9 +17102,7 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17809,9 +17165,7 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17874,9 +17228,7 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -17943,9 +17295,7 @@ }, "/session_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -17973,9 +17323,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -18028,9 +17376,7 @@ }, "/session": { "get": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -18058,9 +17404,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -18113,9 +17457,7 @@ }, "/setting": { "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "set_setting", "summary": "Set Setting", "description": "### Configure Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\nSee the `Setting` type for more information on the specific values that can be configured.\n", @@ -18179,9 +17521,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "get_setting", "summary": "Get Setting", "description": "### Get Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\n", @@ -18232,9 +17572,7 @@ }, "/smtp_settings": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -18297,9 +17635,7 @@ }, "/smtp_status": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "smtp_status", "summary": "Get SMTP Status", "description": "### Get current SMTP status.\n", @@ -18338,9 +17674,7 @@ }, "/folders/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -18465,9 +17799,7 @@ }, "/folders/{folder_id}": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -18511,9 +17843,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -18556,9 +17886,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -18618,9 +17946,7 @@ }, "/folders": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -18660,9 +17986,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -18721,9 +18045,7 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -18813,9 +18135,7 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -18878,9 +18198,7 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -18926,9 +18244,7 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -18977,9 +18293,7 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -19028,9 +18342,7 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -19079,9 +18391,7 @@ }, "/sql_queries/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -19120,9 +18430,7 @@ }, "/sql_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -19181,18 +18489,11 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", - "produces": [ - "text", - "application/json", - "image/png", - "image/jpeg" - ], + "produces": ["text", "application/json", "image/png", "image/jpeg"], "parameters": [ { "name": "slug", @@ -19254,9 +18555,7 @@ }, "/support_access/allowlist": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "get_support_access_allowlist_entries", "summary": "Get Support Access Allowlist Users", "description": "### Get Support Access Allowlist Users\n\nReturns the users that have been added to the Support Access Allowlist\n", @@ -19296,9 +18595,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "add_support_access_allowlist_entries", "summary": "Add Support Access Allowlist Users", "description": "### Add Support Access Allowlist Users\n\nAdds a list of emails to the Allowlist, using the provided reason\n", @@ -19354,9 +18651,7 @@ }, "/support_access/allowlist/{entry_id}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_support_access_allowlist_entry", "summary": "Delete Support Access Allowlist Entry", "description": "### Delete Support Access Allowlist User\n\nDeletes the specified Allowlist Entry Id\n", @@ -19401,9 +18696,7 @@ }, "/support_access/enable": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "enable_support_access", "summary": "Enable Support Access", "description": "### Enable Support Access\n\nEnables Support Access for the provided duration\n", @@ -19462,9 +18755,7 @@ }, "/support_access/disable": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "disable_support_access", "summary": "Disable Support Access", "description": "### Disable Support Access\n\nDisables Support Access immediately\n", @@ -19500,9 +18791,7 @@ }, "/support_access/status": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "support_access_status", "summary": "Support Access Status", "description": "### Support Access Status\n\nReturns the current Support Access Status\n", @@ -19532,9 +18821,7 @@ }, "/themes": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19574,9 +18861,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19635,9 +18920,7 @@ }, "/themes/search": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19739,9 +19022,7 @@ }, "/themes/default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -19779,9 +19060,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19832,9 +19111,7 @@ }, "/themes/active": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -19891,9 +19168,7 @@ }, "/themes/theme_or_default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19940,9 +19215,7 @@ }, "/themes/validate": { "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -20007,9 +19280,7 @@ }, "/themes/{theme_id}": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -20053,9 +19324,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -20113,9 +19382,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -20160,9 +19427,7 @@ }, "/timezones": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -20195,9 +19460,7 @@ }, "/ssh_servers": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_ssh_servers", "summary": "Get All SSH Servers", "description": "### Get information about all SSH Servers.\n", @@ -20237,9 +19500,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_ssh_server", "summary": "Create SSH Server", "description": "### Create an SSH Server.\n", @@ -20298,9 +19559,7 @@ }, "/ssh_server/{ssh_server_id}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "ssh_server", "summary": "Get SSH Server", "description": "### Get information about an SSH Server.\n", @@ -20337,9 +19596,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_ssh_server", "summary": "Update SSH Server", "description": "### Update an SSH Server.\n", @@ -20397,9 +19654,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_ssh_server", "summary": "Delete SSH Server", "description": "### Delete an SSH Server.\n", @@ -20444,9 +19699,7 @@ }, "/ssh_server/{ssh_server_id}/test": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_ssh_server", "summary": "Test SSH Server", "description": "### Test the SSH Server\n", @@ -20485,9 +19738,7 @@ }, "/ssh_tunnels": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_ssh_tunnels", "summary": "Get All SSH Tunnels", "description": "### Get information about all SSH Tunnels.\n", @@ -20527,9 +19778,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_ssh_tunnel", "summary": "Create SSH Tunnel", "description": "### Create an SSH Tunnel\n", @@ -20588,9 +19837,7 @@ }, "/ssh_tunnel/{ssh_tunnel_id}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "ssh_tunnel", "summary": "Get SSH Tunnel", "description": "### Get information about an SSH Tunnel.\n", @@ -20627,9 +19874,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_ssh_tunnel", "summary": "Update SSH Tunnel", "description": "### Update an SSH Tunnel\n", @@ -20687,9 +19932,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_ssh_tunnel", "summary": "Delete SSH Tunnel", "description": "### Delete an SSH Tunnel\n", @@ -20734,9 +19977,7 @@ }, "/ssh_tunnel/{ssh_tunnel_id}/test": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_ssh_tunnel", "summary": "Test SSH Tunnel", "description": "### Test the SSH Tunnel\n", @@ -20775,9 +20016,7 @@ }, "/ssh_public_key": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "ssh_public_key", "summary": "Get SSH Public Key", "description": "### Get the SSH public key\n\nGet the public key created for this instance to identify itself to a remote SSH server.\n", @@ -20807,9 +20046,7 @@ }, "/user_attributes": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -20856,9 +20093,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -20924,9 +20159,7 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -20970,9 +20203,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -21037,9 +20268,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -21084,9 +20313,7 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -21133,9 +20360,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -21207,9 +20432,7 @@ }, "/user_login_lockouts": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -21251,9 +20474,7 @@ }, "/user_login_lockouts/search": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -21371,9 +20592,7 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -21418,9 +20637,7 @@ }, "/user": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -21453,9 +20670,7 @@ }, "/users": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -21547,9 +20762,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -21609,9 +20822,7 @@ }, "/users/search": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -21764,9 +20975,7 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -21898,9 +21107,7 @@ }, "/users/{user_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -21944,9 +21151,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -22005,9 +21210,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -22052,9 +21255,7 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -22107,9 +21308,7 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -22153,9 +21352,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -22226,9 +21423,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -22293,9 +21488,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -22340,9 +21533,7 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -22386,9 +21577,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -22459,9 +21648,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -22506,9 +21693,7 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -22552,9 +21737,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -22599,9 +21782,7 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -22645,9 +21826,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -22692,9 +21871,7 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -22738,9 +21915,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -22785,9 +21960,7 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -22831,9 +22004,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -22878,9 +22049,7 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -22931,9 +22100,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -22985,9 +22152,7 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -23034,9 +22199,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -23100,9 +22263,7 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -23153,9 +22314,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -23207,9 +22366,7 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -23258,9 +22415,7 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -23304,9 +22459,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -23351,9 +22504,7 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -23404,9 +22555,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -23458,9 +22607,7 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -23509,9 +22656,7 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -23564,9 +22709,7 @@ }, "/users/{user_id}/roles": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -23620,9 +22763,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -23683,9 +22824,7 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -23753,9 +22892,7 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -23814,9 +22951,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -23859,9 +22994,7 @@ }, "/users/{user_id}/credentials_email/send_password_reset": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "send_user_credentials_email_password_reset", "summary": "Send Password Reset Token", "description": "### Send a password reset token.\nThis will send a password reset email to the user. If a password reset token does not already exist\nfor this user, it will create one and then send it.\nIf the user has not yet set up their account, it will send a setup email to the user.\nThe URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object.\nPassword reset URLs will expire in 60 minutes.\nThis method can be called with an empty body.\n", @@ -23907,9 +23040,7 @@ }, "/users/{user_id}/update_emails": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "wipeout_user_emails", "summary": "Wipeout User Emails", "description": "### Change a disabled user's email addresses\n\nAllows the admin to change the email addresses for all the user's\nassociated credentials. Will overwrite all associated email addresses with\nthe value supplied in the 'email' body param.\nThe user's 'is_disabled' status must be true.\n", @@ -23982,9 +23113,7 @@ }, "/users/embed_user": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_embed_user", "summary": "Create an embed user from an external user ID", "description": "Create an embed user from an external user ID\n", @@ -24025,15 +23154,11 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": [ - "image/svg+xml" - ], + "produces": ["image/svg+xml"], "parameters": [ { "name": "type", @@ -24084,9 +23209,7 @@ }, "/versions": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -24125,9 +23248,7 @@ }, "/api_spec/{api_version}/{specification}": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "api_spec", "summary": "Get an API specification", "description": "### Get an API specification for this Looker instance.\n\nThe specification is returned as a JSON document in Swagger 2.x format\n", @@ -24174,9 +23295,7 @@ }, "/whitelabel_configuration": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -24214,9 +23333,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -24270,9 +23387,7 @@ }, "/workspaces": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -24305,9 +23420,7 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -24363,10 +23476,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "DashboardBase": { "properties": { @@ -24760,10 +23870,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "ValidationErrorDetail": { "properties": { @@ -24794,9 +23901,7 @@ } }, "x-looker-status": "stable", - "required": [ - "documentation_url" - ] + "required": ["documentation_url"] }, "AccessToken": { "properties": { @@ -24848,10 +23953,7 @@ } }, "x-looker-status": "beta", - "required": [ - "field_name", - "field_value" - ] + "required": ["field_name", "field_value"] }, "AlertAppliedDashboardFilter": { "properties": { @@ -24878,11 +23980,7 @@ } }, "x-looker-status": "beta", - "required": [ - "filter_title", - "field_name", - "filter_value" - ] + "required": ["filter_title", "field_name", "filter_value"] }, "AlertField": { "properties": { @@ -24906,10 +24004,7 @@ } }, "x-looker-status": "beta", - "required": [ - "title", - "name" - ] + "required": ["title", "name"] }, "AlertConditionState": { "properties": { @@ -25021,9 +24116,7 @@ }, "investigative_content_type": { "type": "string", - "x-looker-values": [ - "dashboard" - ], + "x-looker-values": ["dashboard"], "description": "The type of the investigative content Valid values are: \"dashboard\".", "x-looker-nullable": true }, @@ -25122,9 +24215,7 @@ } }, "x-looker-status": "beta", - "required": [ - "alert_id" - ] + "required": ["alert_id"] }, "AlertNotifications": { "properties": { @@ -25184,10 +24275,7 @@ "properties": { "destination_type": { "type": "string", - "x-looker-values": [ - "EMAIL", - "ACTION_HUB" - ], + "x-looker-values": ["EMAIL", "ACTION_HUB"], "description": "Type of destination that the alert will be sent to Valid values are: \"EMAIL\", \"ACTION_HUB\".", "x-looker-nullable": false }, @@ -25208,9 +24296,7 @@ } }, "x-looker-status": "beta", - "required": [ - "destination_type" - ] + "required": ["destination_type"] }, "AlertPatch": { "properties": { @@ -25834,10 +24920,7 @@ "permission_type": { "type": "string", "readOnly": true, - "x-looker-values": [ - "view", - "edit" - ], + "x-looker-values": ["view", "edit"], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "x-looker-nullable": true }, @@ -26067,9 +25150,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "ContentValidationLook": { "properties": { @@ -26477,9 +25558,7 @@ } }, "x-looker-status": "stable", - "required": [ - "external_user_id" - ] + "required": ["external_user_id"] }, "CreateOAuthApplicationUserStateRequest": { "properties": { @@ -26534,10 +25613,7 @@ } }, "x-looker-status": "beta", - "required": [ - "user_id", - "oauth_application_id" - ] + "required": ["user_id", "oauth_application_id"] }, "CredentialsApi3": { "properties": { @@ -27650,12 +26726,7 @@ } }, "x-looker-status": "stable", - "required": [ - "dashboard_id", - "name", - "title", - "type" - ] + "required": ["dashboard_id", "name", "title", "type"] }, "DashboardLayoutComponent": { "properties": { @@ -29074,9 +28145,7 @@ } }, "x-looker-status": "beta", - "required": [ - "target_url" - ] + "required": ["target_url"] }, "EmbedSsoParams": { "properties": { @@ -29162,9 +28231,7 @@ } }, "x-looker-status": "stable", - "required": [ - "target_url" - ] + "required": ["target_url"] }, "EmbedSecret": { "properties": { @@ -29251,11 +28318,7 @@ }, "ssl_version": { "type": "string", - "x-looker-values": [ - "TLSv1_1", - "SSLv23", - "TLSv1_2" - ], + "x-looker-values": ["TLSv1_1", "SSLv23", "TLSv1_2"], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "x-looker-nullable": true } @@ -29413,9 +28476,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "CreateFolder": { "properties": { @@ -29431,10 +28492,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "parent_id" - ] + "required": ["name", "parent_id"] }, "UpdateFolder": { "properties": { @@ -29572,9 +28630,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "GitBranch": { "properties": { @@ -30186,12 +29242,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "cell", - "query", - "dashboard", - "none" - ], + "x-looker-values": ["cell", "query", "dashboard", "none"], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "x-looker-nullable": false }, @@ -30201,10 +29252,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "formatted", - "unformatted" - ], + "x-looker-values": ["formatted", "unformatted"], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "x-looker-nullable": false }, @@ -30214,10 +29262,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "apply", - "noapply" - ], + "x-looker-values": ["apply", "noapply"], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "x-looker-nullable": false }, @@ -30227,10 +29272,7 @@ "type": "string" }, "readOnly": true, - "x-looker-values": [ - "push", - "url" - ], + "x-looker-values": ["push", "url"], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "x-looker-nullable": false }, @@ -32255,10 +31297,7 @@ "align": { "type": "string", "readOnly": true, - "x-looker-values": [ - "left", - "right" - ], + "x-looker-values": ["left", "right"], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "x-looker-nullable": false }, @@ -32271,12 +31310,7 @@ "category": { "type": "string", "readOnly": true, - "x-looker-values": [ - "parameter", - "filter", - "measure", - "dimension" - ], + "x-looker-values": ["parameter", "filter", "measure", "dimension"], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "x-looker-nullable": true }, @@ -32328,10 +31362,7 @@ "fill_style": { "type": "string", "readOnly": true, - "x-looker-values": [ - "enumeration", - "range" - ], + "x-looker-values": ["enumeration", "range"], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "x-looker-nullable": true }, @@ -32765,10 +31796,7 @@ "format": { "type": "string", "readOnly": true, - "x-looker-values": [ - "topojson", - "vector_tile_region" - ], + "x-looker-values": ["topojson", "vector_tile_region"], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "x-looker-nullable": false }, @@ -33281,19 +32309,13 @@ }, "device_type": { "type": "string", - "x-looker-values": [ - "android", - "ios" - ], + "x-looker-values": ["android", "ios"], "description": "Specifies type of device. Valid values are: \"android\", \"ios\".", "x-looker-nullable": false } }, "x-looker-status": "beta", - "required": [ - "device_token", - "device_type" - ] + "required": ["device_token", "device_type"] }, "ModelSet": { "properties": { @@ -34014,12 +33036,7 @@ }, "pull_request_mode": { "type": "string", - "x-looker-values": [ - "off", - "links", - "recommended", - "required" - ], + "x-looker-values": ["off", "links", "recommended", "required"], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "x-looker-nullable": false }, @@ -34461,10 +33478,7 @@ } }, "x-looker-status": "stable", - "required": [ - "model", - "view" - ] + "required": ["model", "view"] }, "CreateQueryTask": { "properties": { @@ -34521,10 +33535,7 @@ } }, "x-looker-status": "stable", - "required": [ - "query_id", - "result_format" - ] + "required": ["query_id", "result_format"] }, "QueryTask": { "properties": { @@ -37053,9 +36064,7 @@ } }, "x-looker-status": "beta", - "required": [ - "duration_in_seconds" - ] + "required": ["duration_in_seconds"] }, "SupportAccessStatus": { "properties": { @@ -37301,11 +36310,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "label", - "type" - ] + "required": ["name", "label", "type"] }, "UserAttributeGroupValue": { "properties": { @@ -37441,9 +36446,7 @@ } }, "x-looker-status": "stable", - "required": [ - "email" - ] + "required": ["email"] }, "UserLoginLockout": { "properties": { @@ -38097,4 +37100,4 @@ "x-looker-status": "stable" } } -} \ No newline at end of file +} diff --git a/spec/Looker.4.0.oas.json b/spec/Looker.4.0.oas.json index f174af348..aab23e7a3 100644 --- a/spec/Looker.4.0.oas.json +++ b/spec/Looker.4.0.oas.json @@ -135,9 +135,7 @@ "paths": { "/query_tasks": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -344,9 +342,7 @@ }, "/query_tasks/multi_results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -408,9 +404,7 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -472,9 +466,7 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", @@ -557,9 +549,7 @@ }, "/queries/{query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -621,9 +611,7 @@ }, "/queries/slug/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -685,9 +673,7 @@ }, "/queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -781,9 +767,7 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1060,9 +1044,7 @@ }, "/queries/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1332,9 +1314,7 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1500,9 +1480,7 @@ }, "/login": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", @@ -1564,9 +1542,7 @@ }, "/login/{user_id}": { "post": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1628,9 +1604,7 @@ }, "/logout": { "delete": { - "tags": [ - "ApiAuth" - ], + "tags": ["ApiAuth"], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1672,9 +1646,7 @@ }, "/alerts/{alert_id}/follow": { "post": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "follow_alert", "summary": "Follow an alert", "description": "Follow an alert.", @@ -1718,9 +1690,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "unfollow_alert", "summary": "Unfollow an alert", "description": "Unfollow an alert.", @@ -1776,9 +1746,7 @@ }, "/alerts/search": { "get": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "search_alerts", "summary": "Search Alerts", "description": "### Search Alerts\n", @@ -1927,9 +1895,7 @@ }, "/alerts/{alert_id}": { "get": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "get_alert", "summary": "Get an alert", "description": "### Get an alert by a given alert ID\n", @@ -1980,9 +1946,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "update_alert_field", "summary": "Update select fields on an alert", "description": "### Update select alert fields\n# Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold`\n#\n", @@ -2074,9 +2038,7 @@ } }, "put": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "update_alert", "summary": "Update an alert", "description": "### Update an alert\n# Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n#\n", @@ -2158,9 +2120,7 @@ } }, "delete": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "delete_alert", "summary": "Delete an alert", "description": "### Delete an alert by a given alert ID\n", @@ -2226,9 +2186,7 @@ }, "/alerts": { "post": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "create_alert", "summary": "Create an alert", "description": "### Create a new alert and return details of the newly created object\n\nRequired fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n\nExample Request:\nRun alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000\n```\n{\n \"cron\": \"0 5 * * *\",\n \"custom_title\": \"Alert when LA inventory is low\",\n \"dashboard_element_id\": 103,\n \"applied_dashboard_filters\": [\n {\n \"filter_title\": \"Warehouse Name\",\n \"field_name\": \"distribution_centers.name\",\n \"filter_value\": \"Los Angeles CA\",\n \"filter_description\": \"is Los Angeles CA\"\n }\n ],\n \"comparison_type\": \"LESS_THAN\",\n \"destinations\": [\n {\n \"destination_type\": \"EMAIL\",\n \"email_address\": \"test@test.com\"\n }\n ],\n \"field\": {\n \"title\": \"Number on Hand\",\n \"name\": \"inventory_items.number_on_hand\"\n },\n \"is_disabled\": false,\n \"is_public\": true,\n \"threshold\": 1000\n}\n```\n", @@ -2321,9 +2279,7 @@ }, "/alerts/{alert_id}/enqueue": { "post": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "enqueue_alert", "summary": "Enqueue an alert", "description": "### Enqueue an Alert by ID\n", @@ -2399,9 +2355,7 @@ }, "/alert_notifications": { "get": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "alert_notifications", "summary": "Alert Notifications", "description": "# Alert Notifications.\n The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user.\n\n", @@ -2468,9 +2422,7 @@ }, "/alert_notifications/{alert_notification_id}": { "patch": { - "tags": [ - "Alert" - ], + "tags": ["Alert"], "operationId": "read_alert_notification", "summary": "Read a Notification", "description": "# Reads a Notification\n The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response.\n", @@ -2543,9 +2495,7 @@ }, "/cloud_storage": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -2585,9 +2535,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -2650,9 +2598,7 @@ }, "/color_collections": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2706,9 +2652,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2801,9 +2745,7 @@ }, "/color_collections/custom": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2859,9 +2801,7 @@ }, "/color_collections/standard": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2917,9 +2857,7 @@ }, "/color_collections/default": { "put": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2990,9 +2928,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -3034,9 +2970,7 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -3096,9 +3030,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -3190,9 +3122,7 @@ } }, "delete": { - "tags": [ - "ColorCollection" - ], + "tags": ["ColorCollection"], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -3268,9 +3198,7 @@ }, "/content_favorite/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3418,9 +3346,7 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -3480,9 +3406,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -3545,9 +3469,7 @@ }, "/content_favorite": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -3630,9 +3552,7 @@ }, "/content_metadata": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -3697,9 +3617,7 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -3781,9 +3699,7 @@ } }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -3845,9 +3761,7 @@ }, "/content_metadata_access": { "post": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -3940,9 +3854,7 @@ } }, "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -4007,9 +3919,7 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -4091,9 +4001,7 @@ } }, "delete": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -4156,9 +4064,7 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -4273,9 +4179,7 @@ }, "/content_validation": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -4348,9 +4252,7 @@ }, "/content_view/search": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4516,9 +4418,7 @@ }, "/credentials_email/search": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_credentials_email", "summary": "Search CredentialsEmail", "description": "### Search email credentials\n\nReturns all credentials_email records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4639,9 +4539,7 @@ }, "/custom_welcome_email": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -4682,9 +4580,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -4769,9 +4665,7 @@ }, "/custom_welcome_email_test": { "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -4844,9 +4738,7 @@ }, "/dashboards": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -4900,9 +4792,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -4985,9 +4875,7 @@ }, "/dashboards/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -5211,9 +5099,7 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -5335,9 +5221,7 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -5434,9 +5318,7 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -5507,9 +5389,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -5601,9 +5481,7 @@ } }, "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -5665,9 +5543,7 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -5720,9 +5596,7 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -5775,9 +5649,7 @@ }, "/dashboards/{dashboard_id}/move": { "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "move_dashboard", "summary": "Move Dashboard", "description": "### Move an existing dashboard\n\nMoves a dashboard to a specified folder, and returns the moved dashboard.\n\n`dashboard_id` and `folder_id` are required.\n`dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -5869,9 +5741,7 @@ }, "/dashboards/lookml": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "import_dashboard_from_lookml", "summary": "Import Dashboard from LookML", "description": "### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard.\n\nIf a dashboard exists with the YAML-defined \"preferred_slug\", the new dashboard will overwrite it. Otherwise, a new\ndashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained.\n\nIf a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it\nIf the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards\nwill remain where they were\n\nLookML must contain valid LookML YAML code. It's recommended to use the LookML format returned\nfrom [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with \n).\n\nNote that the created dashboard is not linked to any LookML Dashboard,\ni.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method.\n", @@ -5964,9 +5834,7 @@ }, "/dashboards/from_lookml": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_from_lookml", "summary": "Create Dashboard from LookML", "description": "# DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml)\n", @@ -6059,9 +5927,7 @@ }, "/dashboards/{dashboard_id}/copy": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "copy_dashboard", "summary": "Copy Dashboard", "description": "### Copy an existing dashboard\n\nCreates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard.\n\n`dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified.\n`folder_id` will default to the existing folder.\n\nIf a dashboard with the same title already exists in the target folder, the copy will have '(copy)'\n or '(copy <# of copies>)' appended.\n", @@ -6163,9 +6029,7 @@ }, "/dashboard_elements/search": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -6275,9 +6139,7 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -6337,9 +6199,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -6400,9 +6260,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -6495,9 +6353,7 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -6562,9 +6418,7 @@ }, "/dashboard_elements": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -6667,9 +6521,7 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -6729,9 +6581,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -6792,9 +6642,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -6887,9 +6735,7 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -6954,9 +6800,7 @@ }, "/dashboard_filters": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -7050,9 +6894,7 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -7112,9 +6954,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -7207,9 +7047,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -7274,9 +7112,7 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -7336,9 +7172,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -7409,9 +7243,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -7504,9 +7336,7 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -7571,9 +7401,7 @@ }, "/dashboard_layouts": { "post": { - "tags": [ - "Dashboard" - ], + "tags": ["Dashboard"], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -7667,9 +7495,7 @@ }, "/data_actions": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -7722,9 +7548,7 @@ }, "/data_actions/form": { "post": { - "tags": [ - "DataAction" - ], + "tags": ["DataAction"], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -7790,9 +7614,7 @@ }, "/datagroups": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -7837,9 +7659,7 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -7890,9 +7710,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Datagroup" - ], + "tags": ["Datagroup"], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -7986,9 +7804,7 @@ }, "/connections": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -8042,9 +7858,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -8127,9 +7941,7 @@ }, "/connections/{connection_name}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -8189,9 +8001,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -8273,9 +8083,7 @@ } }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -8338,9 +8146,7 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -8422,9 +8228,7 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -8515,9 +8319,7 @@ }, "/connections/test": { "put": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -8600,9 +8402,7 @@ }, "/projects/{project_id}/manifest/lock_all": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "lock_all", "summary": "Lock All", "description": " ### Generate Lockfile for All LookML Dependencies\n\n Git must have been configured, must be in dev mode and deploy permission required\n\n Install_all is a two step process\n 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref.\n 2. The project will then write out a lockfile including each remote_dependency with its resolved ref.\n\n", @@ -8687,9 +8487,7 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -8760,9 +8558,7 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -8833,9 +8629,7 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -8933,9 +8727,7 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -8988,9 +8780,7 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": [ - "DerivedTable" - ], + "tags": ["DerivedTable"], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -9052,9 +8842,7 @@ }, "/dialect_info": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -9110,9 +8898,7 @@ }, "/digest_emails_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -9152,9 +8938,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -9227,9 +9011,7 @@ }, "/digest_email_send": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -9282,9 +9064,7 @@ }, "/public_egress_ip_addresses": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "public_egress_ip_addresses", "summary": "Public Egress IP Addresses", "description": "### Get Egress IP Addresses\n\nReturns the list of public egress IP Addresses for a hosted customer's instance\n", @@ -9326,9 +9106,7 @@ }, "/embed_config/secrets": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_embed_secret", "summary": "Create Embed Secret", "description": "### Create an embed secret using the specified information.\n\nThe value of the `secret` field will be set by Looker and returned.\n", @@ -9411,9 +9189,7 @@ }, "/embed_config/secrets/{embed_secret_id}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_embed_secret", "summary": "Delete Embed Secret", "description": "### Delete an embed secret.\n", @@ -9476,9 +9252,7 @@ }, "/embed/sso_url": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -9561,9 +9335,7 @@ }, "/embed/token_url/me": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_embed_url_as_me", "summary": "Create Embed URL", "description": "### Create an Embed URL\n\nCreates an embed URL that runs as the Looker user making this API call. (\"Embed as me\")\nThis embed URL can then be used to instantiate a Looker embed session in a\n\"Powered by Looker\" (PBL) web application.\n\nThis is similar to Private Embedding (https://docs.looker.com/r/admin/embed/private-embed). Instead of\nof logging into the Web UI to authenticate, the user has already authenticated against the API to be able to\nmake this call. However, unlike Private Embed where the user has access to any other part of the Looker UI,\nthe embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to\ncontent visible under the `/embed` context.\n\nAn embed URL can only be used once, and must be used within 5 minutes of being created. After it\nhas been used to request a page from the Looker server, the URL is invalid. Future requests using\nthe same URL will fail. This is to prevent 'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with \"/embed\" and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar, insert \"/embed\" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request.\n\n#### Security Note\nProtect this embed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -9646,9 +9418,7 @@ }, "/external_oauth_applications": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_external_oauth_applications", "summary": "Get All External OAuth Applications", "description": "### Get all External OAuth Applications.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -9711,9 +9481,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_external_oauth_application", "summary": "Create External OAuth Application", "description": "### Create an OAuth Application using the specified configuration.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -9796,9 +9564,7 @@ }, "/external_oauth_applications/user_state": { "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_oauth_application_user_state", "summary": "Create Create OAuth user state.", "description": "### Create OAuth User state.\n", @@ -9881,9 +9647,7 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -9939,9 +9703,7 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -9992,9 +9754,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -10086,9 +9846,7 @@ } }, "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -10172,9 +9930,7 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -10234,9 +9990,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -10308,9 +10062,7 @@ }, "/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -10447,9 +10199,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -10543,9 +10293,7 @@ }, "/groups/search": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10684,9 +10432,7 @@ }, "/groups/search/with_roles": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups_with_roles", "summary": "Search Groups with Roles", "description": "### Search groups include roles\n\nReturns all group records that match the given search criteria, and attaches any associated roles.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10825,9 +10571,7 @@ }, "/groups/search/with_hierarchy": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "search_groups_with_hierarchy", "summary": "Search Groups with Hierarchy", "description": "### Search groups include hierarchy\n\nReturns all group records that match the given search criteria, and attaches\nassociated role_ids and parent group_ids.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10966,9 +10710,7 @@ }, "/groups/{group_id}": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -11028,9 +10770,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -11121,9 +10861,7 @@ } }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -11196,9 +10934,7 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -11261,9 +10997,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -11337,9 +11071,7 @@ }, "/groups/{group_id}/users": { "get": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -11453,9 +11185,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -11529,9 +11259,7 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -11596,9 +11324,7 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -11663,9 +11389,7 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -11746,9 +11470,7 @@ } }, "delete": { - "tags": [ - "Group" - ], + "tags": ["Group"], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -11803,9 +11525,7 @@ }, "/boards": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "all_boards", "summary": "Get All Boards", "description": "### Get information about all boards.\n", @@ -11859,9 +11579,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "create_board", "summary": "Create Board", "description": "### Create a new board.\n", @@ -11955,9 +11673,7 @@ }, "/boards/search": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "search_boards", "summary": "Search Boards", "description": "### Search Boards\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -12134,9 +11850,7 @@ }, "/boards/{board_id}": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "board", "summary": "Get Board", "description": "### Get information about a board.\n", @@ -12196,9 +11910,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "update_board", "summary": "Update Board", "description": "### Update a board definition.\n", @@ -12289,9 +12001,7 @@ } }, "delete": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "delete_board", "summary": "Delete Board", "description": "### Delete a board.\n", @@ -12354,9 +12064,7 @@ }, "/board_items": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "all_board_items", "summary": "Get All Board Items", "description": "### Get information about all board items.\n", @@ -12428,9 +12136,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "create_board_item", "summary": "Create Board Item", "description": "### Create a new board item.\n", @@ -12524,9 +12230,7 @@ }, "/board_items/{board_item_id}": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "board_item", "summary": "Get Board Item", "description": "### Get information about a board item.\n", @@ -12586,9 +12290,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "update_board_item", "summary": "Update Board Item", "description": "### Update a board item definition.\n", @@ -12679,9 +12381,7 @@ } }, "delete": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "delete_board_item", "summary": "Delete Board Item", "description": "### Delete a board item.\n", @@ -12744,9 +12444,7 @@ }, "/primary_homepage_sections": { "get": { - "tags": [ - "Homepage" - ], + "tags": ["Homepage"], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -12802,9 +12500,7 @@ }, "/board_sections": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "all_board_sections", "summary": "Get All Board sections", "description": "### Get information about all board sections.\n", @@ -12867,9 +12563,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "create_board_section", "summary": "Create Board section", "description": "### Create a new board section.\n", @@ -12963,9 +12657,7 @@ }, "/board_sections/{board_section_id}": { "get": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "board_section", "summary": "Get Board section", "description": "### Get information about a board section.\n", @@ -13025,9 +12717,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "update_board_section", "summary": "Update Board section", "description": "### Update a board section definition.\n", @@ -13118,9 +12808,7 @@ } }, "delete": { - "tags": [ - "Board" - ], + "tags": ["Board"], "operationId": "delete_board_section", "summary": "Delete Board section", "description": "### Delete a board section.\n", @@ -13183,9 +12871,7 @@ }, "/integration_hubs": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -13239,9 +12925,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -13336,9 +13020,7 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -13398,9 +13080,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -13492,9 +13172,7 @@ } }, "delete": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -13557,9 +13235,7 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -13622,9 +13298,7 @@ }, "/integrations": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -13689,9 +13363,7 @@ }, "/integrations/{integration_id}": { "get": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -13751,9 +13423,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -13846,9 +13516,7 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -13925,9 +13593,7 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": [ - "Integration" - ], + "tags": ["Integration"], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -13990,9 +13656,7 @@ }, "/internal_help_resources_content": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -14032,9 +13696,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -14107,9 +13769,7 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -14151,9 +13811,7 @@ }, "/internal_help_resources": { "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -14226,9 +13884,7 @@ }, "/ldap_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -14258,9 +13914,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -14323,9 +13977,7 @@ }, "/ldap_config/test_connection": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -14388,9 +14040,7 @@ }, "/ldap_config/test_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -14453,9 +14103,7 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -14518,9 +14166,7 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -14583,9 +14229,7 @@ }, "/legacy_features": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -14630,9 +14274,7 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -14683,9 +14325,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -14769,9 +14409,7 @@ }, "/locales": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -14816,9 +14454,7 @@ }, "/looks": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -14872,9 +14508,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -14968,9 +14602,7 @@ }, "/looks/search": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -15185,9 +14817,7 @@ }, "/looks/{look_id}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -15247,9 +14877,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -15340,9 +14968,7 @@ } }, "delete": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -15405,9 +15031,7 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -15675,9 +15299,7 @@ }, "/looks/{look_id}/copy": { "post": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "copy_look", "summary": "Copy Look", "description": "### Copy an existing look\n\nCreates a copy of an existing look, in a specified folder, and returns the copied look.\n\n`look_id` and `folder_id` are required.\n\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -15779,9 +15401,7 @@ }, "/looks/{look_id}/move": { "patch": { - "tags": [ - "Look" - ], + "tags": ["Look"], "operationId": "move_look", "summary": "Move Look", "description": "### Move an existing look\n\nMoves a look to a specified folder, and returns the moved look.\n\n`look_id` and `folder_id` are required.\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -15873,9 +15493,7 @@ }, "/lookml_models": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -15949,9 +15567,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -16034,9 +15650,7 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -16096,9 +15710,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -16180,9 +15792,7 @@ } }, "delete": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -16245,9 +15855,7 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": [ - "LookmlModel" - ], + "tags": ["LookmlModel"], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -16318,9 +15926,7 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -16382,9 +15988,7 @@ }, "/merge_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -16478,9 +16082,7 @@ }, "/models/{model_name}/views/{view_name}/fields/{field_name}/suggestions": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "model_fieldname_suggestions", "summary": "Model field name suggestions", "description": "### Field name suggestions for a model and view\n\n`filters` is a string hash of values, with the key as the field name and the string value as the filter expression:\n\n```ruby\n{'users.age': '>=60'}\n```\n\nor\n\n```ruby\n{'users.age': '<30'}\n```\n\nor\n\n```ruby\n{'users.age': '=50'}\n```\n", @@ -16572,9 +16174,7 @@ }, "/models/{model_name}": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "get_model", "summary": "Get a single model", "description": "### Get a single model\n\n", @@ -16627,9 +16227,7 @@ }, "/connections/{connection_name}/databases": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_databases", "summary": "List accessible databases to this connection", "description": "### List databases available to this connection\n\nCertain dialects can support multiple databases per single connection.\nIf this connection supports multiple databases, the database names will be returned in an array.\n\nConnections using dialects that do not support multiple databases will return an empty array.\n\n**Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports\nmultiple databases.\n", @@ -16695,9 +16293,7 @@ }, "/connections/{connection_name}/features": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_features", "summary": "Metadata features supported by this connection", "description": "### Retrieve metadata features for this connection\n\nReturns a list of feature names with `true` (available) or `false` (not available)\n\n", @@ -16780,9 +16376,7 @@ }, "/connections/{connection_name}/schemas": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_schemas", "summary": "Get schemas for a connection", "description": "### Get the list of schemas and tables for a connection\n\n", @@ -16885,9 +16479,7 @@ }, "/connections/{connection_name}/tables": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_tables", "summary": "Get tables for a connection", "description": "### Get the list of tables for a schema\n\nFor dialects that support multiple databases, optionally identify which to use. If not provided, the default\ndatabase for the connection will be used.\n\nFor dialects that do **not** support multiple databases, **do not use** the database parameter\n", @@ -17018,9 +16610,7 @@ }, "/connections/{connection_name}/columns": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_columns", "summary": "Get columns for a connection", "description": "### Get the columns (and therefore also the tables) in a specific schema\n\n", @@ -17151,9 +16741,7 @@ }, "/connections/{connection_name}/search_columns": { "get": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_search_columns", "summary": "Search a connection for columns", "description": "### Search a connection for columns matching the specified name\n\n**Note**: `column_name` must be a valid column name. It is not a search pattern.\n", @@ -17248,9 +16836,7 @@ }, "/connections/{connection_name}/cost_estimate": { "post": { - "tags": [ - "Metadata" - ], + "tags": ["Metadata"], "operationId": "connection_cost_estimate", "summary": "Estimate costs for a connection", "description": "### Connection cost estimating\n\nAssign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}`\n\n**Note**: If the connection's dialect has no support for cost estimates, an error will be returned\n", @@ -17344,9 +16930,7 @@ }, "/mobile/settings": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "mobile_settings", "summary": "Get Mobile_Settings", "description": "### Get all mobile settings.\n", @@ -17388,9 +16972,7 @@ }, "/mobile/device": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "register_mobile_device", "summary": "Register Mobile Device", "description": "### Registers a mobile device.\n# Required fields: [:device_token, :device_type]\n", @@ -17473,9 +17055,7 @@ }, "/mobile/device/{device_id}": { "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_mobile_device_registration", "summary": "Update Mobile Device Registration", "description": "### Updates the mobile device registration\n", @@ -17546,9 +17126,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "deregister_mobile_device", "summary": "Deregister Mobile Device", "description": "### Deregister a mobile device.\n", @@ -17604,9 +17182,7 @@ }, "/model_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -17736,9 +17312,7 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -17798,9 +17372,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -17861,9 +17433,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -17947,9 +17517,7 @@ }, "/model_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -17993,9 +17561,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -18068,9 +17634,7 @@ }, "/oauth_client_apps": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "all_oauth_client_apps", "summary": "Get All OAuth Client Apps", "description": "### List All OAuth Client Apps\n\nLists all applications registered to use OAuth2 login with this Looker instance, including\nenabled and disabled apps.\n\nResults are filtered to include only the apps that the caller (current user)\nhas permission to see.\n", @@ -18126,9 +17690,7 @@ }, "/oauth_client_apps/{client_guid}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oauth_client_app", "summary": "Get OAuth Client App", "description": "### Get Oauth Client App\n\nReturns the registered app client with matching client_guid.\n", @@ -18188,9 +17750,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_oauth_client_app", "summary": "Delete OAuth Client App", "description": "### Delete OAuth Client App\n\nDeletes the registration info of the app with the matching client_guid.\nAll active sessions and tokens issued for this app will immediately become invalid.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the\nindicated resource does not exist.\n\n### Note: this deletion cannot be undone.\n", @@ -18251,9 +17811,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "register_oauth_client_app", "summary": "Register OAuth App", "description": "### Register an OAuth2 Client App\n\nRegisters details identifying an external web app or native app as an OAuth2 login client of the Looker instance.\nThe app registration must provide a unique client_guid and redirect_uri that the app will present\nin OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match\nthe app details registered with the Looker instance, the request is assumed to be a forgery and is rejected.\n", @@ -18354,9 +17912,7 @@ } }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_oauth_client_app", "summary": "Update OAuth App", "description": "### Update OAuth2 Client App Details\n\nModifies the details a previously registered OAuth2 login client app.\n", @@ -18449,9 +18005,7 @@ }, "/oauth_client_apps/{client_guid}/tokens": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "invalidate_tokens", "summary": "Invalidate Tokens", "description": "### Invalidate All Issued Tokens\n\nImmediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for\nthis app for ALL USERS of this app.\n", @@ -18514,9 +18068,7 @@ }, "/oauth_client_apps/{client_guid}/users/{user_id}": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "activate_app_user", "summary": "Activate OAuth App User", "description": "### Activate an app for a user\n\nActivates a user for a given oauth client app. This indicates the user has been informed that\nthe app will have access to the user's looker data, and that the user has accepted and allowed\nthe app to use their Looker account.\n\nActivating a user for an app that the user is already activated with returns a success response.\n", @@ -18608,9 +18160,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "deactivate_app_user", "summary": "Deactivate OAuth App User", "description": "### Deactivate an app for a user\n\nDeactivate a user for a given oauth client app. All tokens issued to the app for\nthis user will be invalid immediately. Before the user can use the app with their\nLooker account, the user will have to read and accept an account use disclosure statement for the app.\n\nAdmin users can deactivate other users, but non-admin users can only deactivate themselves.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the indicated\nresource (app or user) does not exist or has already been deactivated.\n", @@ -18691,9 +18241,7 @@ }, "/oidc_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -18723,9 +18271,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -18788,9 +18334,7 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -18831,9 +18375,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -18886,9 +18428,7 @@ }, "/oidc_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -18951,9 +18491,7 @@ }, "/password_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -18993,9 +18531,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -19068,9 +18604,7 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -19132,9 +18666,7 @@ }, "/permissions": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -19179,9 +18711,7 @@ }, "/permission_sets/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -19311,9 +18841,7 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -19373,9 +18901,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -19446,9 +18972,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -19542,9 +19066,7 @@ }, "/permission_sets": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -19598,9 +19120,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -19683,9 +19203,7 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -19779,9 +19297,7 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -19857,9 +19373,7 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -19935,9 +19449,7 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -20013,9 +19525,7 @@ }, "/projects": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -20069,9 +19579,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -20154,9 +19662,7 @@ }, "/projects/{project_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -20216,9 +19722,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -20331,9 +19835,7 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -20386,9 +19888,7 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", @@ -20469,9 +19969,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", @@ -20524,9 +20022,7 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -20606,9 +20102,7 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -20673,9 +20167,7 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -20737,9 +20229,7 @@ }, "/projects/{project_id}/files": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -20804,9 +20294,7 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -20877,9 +20365,7 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -20944,9 +20430,7 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -21046,9 +20530,7 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -21113,9 +20595,7 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -21218,9 +20698,7 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -21344,9 +20822,7 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21467,9 +20943,7 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21590,9 +21064,7 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21751,9 +21223,7 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21815,9 +21285,7 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", @@ -21903,9 +21371,7 @@ }, "/render_tasks/dashboard_elements/{dashboard_element_id}/{result_format}": { "post": { - "tags": [ - "RenderTask" - ], + "tags": ["RenderTask"], "operationId": "create_dashboard_element_render_task", "summary": "Create Dashboard Element Render Task", "description": "### Create a new task to render a dashboard element to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -22026,9 +21492,7 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -22129,9 +21593,7 @@ } }, "delete": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -22203,9 +21665,7 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": [ - "Project" - ], + "tags": ["Project"], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -22261,9 +21721,7 @@ }, "/roles": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -22331,9 +21789,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -22416,9 +21872,7 @@ }, "/roles/search": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -22539,9 +21993,7 @@ }, "/roles/search/with_user_count": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "search_roles_with_user_count", "summary": "Search Roles with User Count", "description": "### Search roles include user count\n\nReturns all role records that match the given search criteria, and attaches\nassociated user counts.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -22662,9 +22114,7 @@ }, "/roles/{role_id}": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -22715,9 +22165,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -22788,9 +22236,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -22884,9 +22330,7 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -22949,9 +22393,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -23041,9 +22483,7 @@ }, "/roles/{role_id}/users": { "get": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -23115,9 +22555,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Role" - ], + "tags": ["Role"], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -23227,9 +22665,7 @@ }, "/running_queries": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -23264,9 +22700,7 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -23329,9 +22763,7 @@ }, "/saml_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -23361,9 +22793,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -23426,9 +22856,7 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -23469,9 +22897,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -23524,9 +22950,7 @@ }, "/saml_test_configs": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -23589,9 +23013,7 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", @@ -23644,9 +23066,7 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", @@ -23699,9 +23119,7 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -23766,9 +23184,7 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -23829,9 +23245,7 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -23913,9 +23327,7 @@ } }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -23977,9 +23389,7 @@ }, "/scheduled_plans": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -24060,9 +23470,7 @@ } }, "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -24146,9 +23554,7 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -24232,9 +23638,7 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -24317,9 +23721,7 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -24402,9 +23804,7 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -24487,9 +23887,7 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": [ - "ScheduledPlan" - ], + "tags": ["ScheduledPlan"], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -24584,9 +23982,7 @@ }, "/session_config": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -24626,9 +24022,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -24701,9 +24095,7 @@ }, "/session": { "get": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -24743,9 +24135,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Session" - ], + "tags": ["Session"], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -24818,9 +24208,7 @@ }, "/setting": { "patch": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "set_setting", "summary": "Set Setting", "description": "### Configure Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\nSee the `Setting` type for more information on the specific values that can be configured.\n", @@ -24912,9 +24300,7 @@ } }, "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "get_setting", "summary": "Get Setting", "description": "### Get Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\n", @@ -24987,9 +24373,7 @@ }, "/smtp_settings": { "post": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -25076,9 +24460,7 @@ }, "/smtp_status": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "smtp_status", "summary": "Get SMTP Status", "description": "### Get current SMTP status.\n", @@ -25131,9 +24513,7 @@ }, "/folders/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -25294,9 +24674,7 @@ }, "/folders/{folder_id}": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -25356,9 +24734,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -25419,9 +24795,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -25505,9 +24879,7 @@ }, "/folders": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -25561,9 +24933,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -25646,9 +25016,7 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -25764,9 +25132,7 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -25849,9 +25215,7 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -25913,9 +25277,7 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -25980,9 +25342,7 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -26047,9 +25407,7 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": [ - "Folder" - ], + "tags": ["Folder"], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -26114,9 +25472,7 @@ }, "/sql_queries/{slug}": { "get": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -26169,9 +25525,7 @@ }, "/sql_queries": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -26254,9 +25608,7 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": [ - "Query" - ], + "tags": ["Query"], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", @@ -26422,9 +25774,7 @@ }, "/support_access/allowlist": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "get_support_access_allowlist_entries", "summary": "Get Support Access Allowlist Users", "description": "### Get Support Access Allowlist Users\n\nReturns the users that have been added to the Support Access Allowlist\n", @@ -26478,9 +25828,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "add_support_access_allowlist_entries", "summary": "Add Support Access Allowlist Users", "description": "### Add Support Access Allowlist Users\n\nAdds a list of emails to the Allowlist, using the provided reason\n", @@ -26556,9 +25904,7 @@ }, "/support_access/allowlist/{entry_id}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_support_access_allowlist_entry", "summary": "Delete Support Access Allowlist Entry", "description": "### Delete Support Access Allowlist User\n\nDeletes the specified Allowlist Entry Id\n", @@ -26621,9 +25967,7 @@ }, "/support_access/enable": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "enable_support_access", "summary": "Enable Support Access", "description": "### Enable Support Access\n\nEnables Support Access for the provided duration\n", @@ -26706,9 +26050,7 @@ }, "/support_access/disable": { "put": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "disable_support_access", "summary": "Disable Support Access", "description": "### Disable Support Access\n\nDisables Support Access immediately\n", @@ -26760,9 +26102,7 @@ }, "/support_access/status": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "support_access_status", "summary": "Support Access Status", "description": "### Support Access Status\n\nReturns the current Support Access Status\n", @@ -26804,9 +26144,7 @@ }, "/themes": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26860,9 +26198,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26945,9 +26281,7 @@ }, "/themes/search": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27079,9 +26413,7 @@ }, "/themes/default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -27133,9 +26465,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27208,9 +26538,7 @@ }, "/themes/active": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -27285,9 +26613,7 @@ }, "/themes/theme_or_default": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27350,9 +26676,7 @@ }, "/themes/validate": { "post": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27445,9 +26769,7 @@ }, "/themes/{theme_id}": { "get": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27507,9 +26829,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27591,9 +26911,7 @@ } }, "delete": { - "tags": [ - "Theme" - ], + "tags": ["Theme"], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -27656,9 +26974,7 @@ }, "/timezones": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -27703,9 +27019,7 @@ }, "/ssh_servers": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_ssh_servers", "summary": "Get All SSH Servers", "description": "### Get information about all SSH Servers.\n", @@ -27759,9 +27073,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_ssh_server", "summary": "Create SSH Server", "description": "### Create an SSH Server.\n", @@ -27844,9 +27156,7 @@ }, "/ssh_server/{ssh_server_id}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "ssh_server", "summary": "Get SSH Server", "description": "### Get information about an SSH Server.\n", @@ -27897,9 +27207,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_ssh_server", "summary": "Update SSH Server", "description": "### Update an SSH Server.\n", @@ -27981,9 +27289,7 @@ } }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_ssh_server", "summary": "Delete SSH Server", "description": "### Delete an SSH Server.\n", @@ -28046,9 +27352,7 @@ }, "/ssh_server/{ssh_server_id}/test": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_ssh_server", "summary": "Test SSH Server", "description": "### Test the SSH Server\n", @@ -28101,9 +27405,7 @@ }, "/ssh_tunnels": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "all_ssh_tunnels", "summary": "Get All SSH Tunnels", "description": "### Get information about all SSH Tunnels.\n", @@ -28157,9 +27459,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "create_ssh_tunnel", "summary": "Create SSH Tunnel", "description": "### Create an SSH Tunnel\n", @@ -28242,9 +27542,7 @@ }, "/ssh_tunnel/{ssh_tunnel_id}": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "ssh_tunnel", "summary": "Get SSH Tunnel", "description": "### Get information about an SSH Tunnel.\n", @@ -28295,9 +27593,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "update_ssh_tunnel", "summary": "Update SSH Tunnel", "description": "### Update an SSH Tunnel\n", @@ -28379,9 +27675,7 @@ } }, "delete": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "delete_ssh_tunnel", "summary": "Delete SSH Tunnel", "description": "### Delete an SSH Tunnel\n", @@ -28444,9 +27738,7 @@ }, "/ssh_tunnel/{ssh_tunnel_id}/test": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "test_ssh_tunnel", "summary": "Test SSH Tunnel", "description": "### Test the SSH Tunnel\n", @@ -28499,9 +27791,7 @@ }, "/ssh_public_key": { "get": { - "tags": [ - "Connection" - ], + "tags": ["Connection"], "operationId": "ssh_public_key", "summary": "Get SSH Public Key", "description": "### Get the SSH public key\n\nGet the public key created for this instance to identify itself to a remote SSH server.\n", @@ -28543,9 +27833,7 @@ }, "/user_attributes": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -28608,9 +27896,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -28704,9 +27990,7 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -28766,9 +28050,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -28859,9 +28141,7 @@ } }, "delete": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -28924,9 +28204,7 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -28989,9 +28267,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "UserAttribute" - ], + "tags": ["UserAttribute"], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -29091,9 +28367,7 @@ }, "/user_login_lockouts": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -29149,9 +28423,7 @@ }, "/user_login_lockouts/search": { "get": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -29303,9 +28575,7 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": [ - "Auth" - ], + "tags": ["Auth"], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -29368,9 +28638,7 @@ }, "/user": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -29413,9 +28681,7 @@ }, "/users": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -29534,9 +28800,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -29620,9 +28884,7 @@ }, "/users/search": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -29819,9 +29081,7 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -29991,9 +29251,7 @@ }, "/users/{user_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -30053,9 +29311,7 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -30136,9 +29392,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -30201,9 +29455,7 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -30274,9 +29526,7 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -30336,9 +29586,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -30439,9 +29687,7 @@ } }, "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -30532,9 +29778,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -30597,9 +29841,7 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -30659,9 +29901,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -30762,9 +30002,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -30827,9 +30065,7 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -30889,9 +30125,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -30954,9 +30188,7 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -31016,9 +30248,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -31081,9 +30311,7 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -31143,9 +30371,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -31208,9 +30434,7 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -31270,9 +30494,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -31335,9 +30557,7 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -31406,9 +30626,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -31480,9 +30698,7 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -31545,9 +30761,7 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -31639,9 +30853,7 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -31710,9 +30922,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -31784,9 +30994,7 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -31851,9 +31059,7 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -31913,9 +31119,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -31978,9 +31182,7 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -32049,9 +31251,7 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -32123,9 +31323,7 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -32190,9 +31388,7 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -32263,9 +31459,7 @@ }, "/users/{user_id}/roles": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -32337,9 +31531,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -32418,9 +31610,7 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -32507,9 +31697,7 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -32590,9 +31778,7 @@ } }, "delete": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -32647,9 +31833,7 @@ }, "/users/{user_id}/credentials_email/send_password_reset": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "send_user_credentials_email_password_reset", "summary": "Send Password Reset Token", "description": "### Send a password reset token.\nThis will send a password reset email to the user. If a password reset token does not already exist\nfor this user, it will create one and then send it.\nIf the user has not yet set up their account, it will send a setup email to the user.\nThe URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object.\nPassword reset URLs will expire in 60 minutes.\nThis method can be called with an empty body.\n", @@ -32711,9 +31895,7 @@ }, "/users/{user_id}/update_emails": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "wipeout_user_emails", "summary": "Wipeout User Emails", "description": "### Change a disabled user's email addresses\n\nAllows the admin to change the email addresses for all the user's\nassociated credentials. Will overwrite all associated email addresses with\nthe value supplied in the 'email' body param.\nThe user's 'is_disabled' status must be true.\n", @@ -32816,9 +31998,7 @@ }, "/users/embed_user": { "post": { - "tags": [ - "User" - ], + "tags": ["User"], "operationId": "create_embed_user", "summary": "Create an embed user from an external user ID", "description": "Create an embed user from an external user ID\n", @@ -32871,9 +32051,7 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": [ - "Content" - ], + "tags": ["Content"], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -32945,9 +32123,7 @@ }, "/versions": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -33000,9 +32176,7 @@ }, "/api_spec/{api_version}/{specification}": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "api_spec", "summary": "Get an API specification", "description": "### Get an API specification for this Looker instance.\n\nThe specification is returned as a JSON document in Swagger 2.x format\n", @@ -33065,9 +32239,7 @@ }, "/whitelabel_configuration": { "get": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -33119,9 +32291,7 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": [ - "Config" - ], + "tags": ["Config"], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -33195,9 +32365,7 @@ }, "/workspaces": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -33242,9 +32410,7 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": [ - "Workspace" - ], + "tags": ["Workspace"], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -33321,10 +32487,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "DashboardBase": { "properties": { @@ -33712,10 +32875,7 @@ } }, "x-looker-status": "stable", - "required": [ - "message", - "documentation_url" - ] + "required": ["message", "documentation_url"] }, "ValidationErrorDetail": { "properties": { @@ -33746,9 +32906,7 @@ } }, "x-looker-status": "stable", - "required": [ - "documentation_url" - ] + "required": ["documentation_url"] }, "AccessToken": { "properties": { @@ -33800,10 +32958,7 @@ } }, "x-looker-status": "beta", - "required": [ - "field_name", - "field_value" - ] + "required": ["field_name", "field_value"] }, "AlertAppliedDashboardFilter": { "properties": { @@ -33830,11 +32985,7 @@ } }, "x-looker-status": "beta", - "required": [ - "filter_title", - "field_name", - "filter_value" - ] + "required": ["filter_title", "field_name", "filter_value"] }, "AlertField": { "properties": { @@ -33858,10 +33009,7 @@ } }, "x-looker-status": "beta", - "required": [ - "title", - "name" - ] + "required": ["title", "name"] }, "AlertConditionState": { "properties": { @@ -33971,9 +33119,7 @@ }, "investigative_content_type": { "type": "string", - "enum": [ - "dashboard" - ], + "enum": ["dashboard"], "description": "The type of the investigative content Valid values are: \"dashboard\".", "nullable": true }, @@ -34069,9 +33215,7 @@ } }, "x-looker-status": "beta", - "required": [ - "alert_id" - ] + "required": ["alert_id"] }, "AlertNotifications": { "properties": { @@ -34128,10 +33272,7 @@ "properties": { "destination_type": { "type": "string", - "enum": [ - "EMAIL", - "ACTION_HUB" - ], + "enum": ["EMAIL", "ACTION_HUB"], "description": "Type of destination that the alert will be sent to Valid values are: \"EMAIL\", \"ACTION_HUB\".", "nullable": false }, @@ -34152,9 +33293,7 @@ } }, "x-looker-status": "beta", - "required": [ - "destination_type" - ] + "required": ["destination_type"] }, "AlertPatch": { "properties": { @@ -34772,10 +33911,7 @@ "permission_type": { "type": "string", "readOnly": true, - "enum": [ - "view", - "edit" - ], + "enum": ["view", "edit"], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "nullable": true }, @@ -34989,9 +34125,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "ContentValidationLook": { "properties": { @@ -35393,9 +34527,7 @@ } }, "x-looker-status": "stable", - "required": [ - "external_user_id" - ] + "required": ["external_user_id"] }, "CreateOAuthApplicationUserStateRequest": { "properties": { @@ -35450,10 +34582,7 @@ } }, "x-looker-status": "beta", - "required": [ - "user_id", - "oauth_application_id" - ] + "required": ["user_id", "oauth_application_id"] }, "CredentialsApi3": { "properties": { @@ -36558,12 +35687,7 @@ } }, "x-looker-status": "stable", - "required": [ - "dashboard_id", - "name", - "title", - "type" - ] + "required": ["dashboard_id", "name", "title", "type"] }, "DashboardLayoutComponent": { "properties": { @@ -37957,9 +37081,7 @@ } }, "x-looker-status": "beta", - "required": [ - "target_url" - ] + "required": ["target_url"] }, "EmbedSsoParams": { "properties": { @@ -38045,9 +37167,7 @@ } }, "x-looker-status": "stable", - "required": [ - "target_url" - ] + "required": ["target_url"] }, "EmbedSecret": { "properties": { @@ -38134,11 +37254,7 @@ }, "ssl_version": { "type": "string", - "enum": [ - "TLSv1_1", - "SSLv23", - "TLSv1_2" - ], + "enum": ["TLSv1_1", "SSLv23", "TLSv1_2"], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "nullable": true } @@ -38296,9 +37412,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "CreateFolder": { "properties": { @@ -38314,10 +37428,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "parent_id" - ] + "required": ["name", "parent_id"] }, "UpdateFolder": { "properties": { @@ -38455,9 +37566,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name" - ] + "required": ["name"] }, "GitBranch": { "properties": { @@ -39069,12 +38178,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "cell", - "query", - "dashboard", - "none" - ], + "enum": ["cell", "query", "dashboard", "none"], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "nullable": false }, @@ -39084,10 +38188,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "formatted", - "unformatted" - ], + "enum": ["formatted", "unformatted"], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "nullable": false }, @@ -39097,10 +38198,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "apply", - "noapply" - ], + "enum": ["apply", "noapply"], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "nullable": false }, @@ -39110,10 +38208,7 @@ "type": "string" }, "readOnly": true, - "enum": [ - "push", - "url" - ], + "enum": ["push", "url"], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "nullable": false }, @@ -41111,10 +40206,7 @@ "align": { "type": "string", "readOnly": true, - "enum": [ - "left", - "right" - ], + "enum": ["left", "right"], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "nullable": false }, @@ -41127,12 +40219,7 @@ "category": { "type": "string", "readOnly": true, - "enum": [ - "parameter", - "filter", - "measure", - "dimension" - ], + "enum": ["parameter", "filter", "measure", "dimension"], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "nullable": true }, @@ -41184,10 +40271,7 @@ "fill_style": { "type": "string", "readOnly": true, - "enum": [ - "enumeration", - "range" - ], + "enum": ["enumeration", "range"], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "nullable": true }, @@ -41615,10 +40699,7 @@ "format": { "type": "string", "readOnly": true, - "enum": [ - "topojson", - "vector_tile_region" - ], + "enum": ["topojson", "vector_tile_region"], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "nullable": false }, @@ -42128,19 +41209,13 @@ }, "device_type": { "type": "string", - "enum": [ - "android", - "ios" - ], + "enum": ["android", "ios"], "description": "Specifies type of device. Valid values are: \"android\", \"ios\".", "nullable": false } }, "x-looker-status": "beta", - "required": [ - "device_token", - "device_type" - ] + "required": ["device_token", "device_type"] }, "ModelSet": { "properties": { @@ -42858,12 +41933,7 @@ }, "pull_request_mode": { "type": "string", - "enum": [ - "off", - "links", - "recommended", - "required" - ], + "enum": ["off", "links", "recommended", "required"], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "nullable": false }, @@ -43302,10 +42372,7 @@ } }, "x-looker-status": "stable", - "required": [ - "model", - "view" - ] + "required": ["model", "view"] }, "CreateQueryTask": { "properties": { @@ -43362,10 +42429,7 @@ } }, "x-looker-status": "stable", - "required": [ - "query_id", - "result_format" - ] + "required": ["query_id", "result_format"] }, "QueryTask": { "properties": { @@ -45849,9 +44913,7 @@ } }, "x-looker-status": "beta", - "required": [ - "duration_in_seconds" - ] + "required": ["duration_in_seconds"] }, "SupportAccessStatus": { "properties": { @@ -46095,11 +45157,7 @@ } }, "x-looker-status": "stable", - "required": [ - "name", - "label", - "type" - ] + "required": ["name", "label", "type"] }, "UserAttributeGroupValue": { "properties": { @@ -46235,9 +45293,7 @@ } }, "x-looker-status": "stable", - "required": [ - "email" - ] + "required": ["email"] }, "UserLoginLockout": { "properties": { @@ -46868,4 +45924,4 @@ } } } -} \ No newline at end of file +} From 63c1ca810f3abb011f947941d8f687275097489d Mon Sep 17 00:00:00 2001 From: John Kaster Date: Tue, 20 Sep 2022 20:12:04 -0700 Subject: [PATCH 2/2] feat: generate SDKs for Looker 22.14 --- csharp/rtl/Constants.cs | 2 +- csharp/sdk/3.1/models.cs | 4 +- csharp/sdk/4.0/methods.cs | 5 +- csharp/sdk/4.0/models.cs | 4 +- go/sdk/v4/methods.go | 2 +- go/sdk/v4/models.go | 30 +- kotlin/src/main/com/looker/sdk/4.0/methods.kt | 7 +- kotlin/src/main/com/looker/sdk/4.0/models.kt | 4 +- kotlin/src/main/com/looker/sdk/4.0/streams.kt | 7 +- kotlin/src/main/com/looker/sdk/Constants.kt | 2 +- packages/sdk/src/3.1/models.ts | 6 +- packages/sdk/src/4.0/funcs.ts | 1 + packages/sdk/src/4.0/methods.ts | 1 + packages/sdk/src/4.0/models.ts | 10 +- packages/sdk/src/4.0/streams.ts | 1 + packages/sdk/src/constants.ts | 2 +- python/looker_sdk/sdk/api31/models.py | 6 +- python/looker_sdk/sdk/api40/methods.py | 3 + python/looker_sdk/sdk/api40/models.py | 6 +- python/looker_sdk/sdk/constants.py | 2 +- release-please-config.json | 2 +- spec/Looker.3.1.json | 1648 ++++++++++---- spec/Looker.3.1.oas.json | 1561 +++++++++---- spec/Looker.4.0.json | 1958 +++++++++++++---- spec/Looker.4.0.oas.json | 1873 ++++++++++++---- swift/looker/rtl/constants.swift | 2 +- swift/looker/sdk/methods.swift | 6 +- swift/looker/sdk/models.swift | 11 +- swift/looker/sdk/streams.swift | 6 +- 29 files changed, 5421 insertions(+), 1751 deletions(-) diff --git a/csharp/rtl/Constants.cs b/csharp/rtl/Constants.cs index 8fb0c3775..f40b4d3c4 100644 --- a/csharp/rtl/Constants.cs +++ b/csharp/rtl/Constants.cs @@ -61,7 +61,7 @@ public struct Constants public const string DefaultApiVersion = "4.0"; public const string AgentPrefix = "CS-SDK"; - public const string LookerVersion = "22.12"; + public const string LookerVersion = "22.14"; public const string Bearer = "Bearer"; public const string LookerAppiId = "x-looker-appid"; diff --git a/csharp/sdk/3.1/models.cs b/csharp/sdk/3.1/models.cs index 1aef5f4cd..0c9db0303 100644 --- a/csharp/sdk/3.1/models.cs +++ b/csharp/sdk/3.1/models.cs @@ -1169,6 +1169,8 @@ public class DBConnection : SdkModel public long? pool_timeout { get; set; } = null; /// (Read/Write) SQL Dialect name public string? dialect_name { get; set; } = null; + /// Database connection has the ability to support open data studio from explore (read-only) + public bool? supports_data_studio_link { get; set; } = null; /// Creation date for this connection (read-only) public string? created_at { get; set; } = null; /// Id of user who last modified this connection configuration (read-only) @@ -4761,7 +4763,7 @@ public class WriteDatagroup : SdkModel } /// Dynamic writeable type for DBConnection removes: -/// can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed +/// can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed public class WriteDBConnection : SdkModel { /// Name of the connection. Also used as the unique identifier diff --git a/csharp/sdk/4.0/methods.cs b/csharp/sdk/4.0/methods.cs index c21f6dd0f..89e470759 100644 --- a/csharp/sdk/4.0/methods.cs +++ b/csharp/sdk/4.0/methods.cs @@ -1381,6 +1381,7 @@ public async Task> create_board( /// The number of items to skip before returning any. (used with limit and takes priority over page and per_page) /// The maximum number of items to return. (used with offset and takes priority over page and per_page) /// Combine given search criteria in a boolean OR expression + /// Filter results based on permission, either show (default) or update public async Task> search_boards( string? title = null, string? created_at = null, @@ -1395,6 +1396,7 @@ public async Task> search_boards( long? offset = null, long? limit = null, bool? filter_or = null, + string? permission = null, ITransportSettings? options = null) { return await AuthRequest(HttpMethod.Get, "/boards/search", new Values { @@ -1410,7 +1412,8 @@ public async Task> search_boards( { "per_page", per_page }, { "offset", offset }, { "limit", limit }, - { "filter_or", filter_or }},null,options); + { "filter_or", filter_or }, + { "permission", permission }},null,options); } /// ### Get information about a board. diff --git a/csharp/sdk/4.0/models.cs b/csharp/sdk/4.0/models.cs index 1b8d9151f..7f4295ec7 100644 --- a/csharp/sdk/4.0/models.cs +++ b/csharp/sdk/4.0/models.cs @@ -1554,6 +1554,8 @@ public class DBConnection : SdkModel public long? pool_timeout { get; set; } = null; /// (Read/Write) SQL Dialect name public string? dialect_name { get; set; } = null; + /// Database connection has the ability to support open data studio from explore (read-only) + public bool? supports_data_studio_link { get; set; } = null; /// Creation date for this connection (read-only) public string? created_at { get; set; } = null; /// Id of user who last modified this connection configuration (read-only) @@ -5603,7 +5605,7 @@ public class WriteDatagroup : SdkModel } /// Dynamic writeable type for DBConnection removes: -/// can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed +/// can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed public class WriteDBConnection : SdkModel { /// Name of the connection. Also used as the unique identifier diff --git a/go/sdk/v4/methods.go b/go/sdk/v4/methods.go index f35bed1f4..c5a0b48e9 100644 --- a/go/sdk/v4/methods.go +++ b/go/sdk/v4/methods.go @@ -1190,7 +1190,7 @@ func (l *LookerSDK) CreateBoard( func (l *LookerSDK) SearchBoards(request RequestSearchBoards, options *rtl.ApiSettings) ([]Board, error) { var result []Board - err := l.session.Do(&result, "GET", "/4.0", "/boards/search", map[string]interface{}{"title": request.Title, "created_at": request.CreatedAt, "first_name": request.FirstName, "last_name": request.LastName, "fields": request.Fields, "favorited": request.Favorited, "creator_id": request.CreatorId, "sorts": request.Sorts, "page": request.Page, "per_page": request.PerPage, "offset": request.Offset, "limit": request.Limit, "filter_or": request.FilterOr}, nil, options) + err := l.session.Do(&result, "GET", "/4.0", "/boards/search", map[string]interface{}{"title": request.Title, "created_at": request.CreatedAt, "first_name": request.FirstName, "last_name": request.LastName, "fields": request.Fields, "favorited": request.Favorited, "creator_id": request.CreatorId, "sorts": request.Sorts, "page": request.Page, "per_page": request.PerPage, "offset": request.Offset, "limit": request.Limit, "filter_or": request.FilterOr, "permission": request.Permission}, nil, options) return result, err } diff --git a/go/sdk/v4/models.go b/go/sdk/v4/models.go index 0dec50a0b..a77eb909d 100644 --- a/go/sdk/v4/models.go +++ b/go/sdk/v4/models.go @@ -887,6 +887,7 @@ type DBConnection struct { JdbcAdditionalParams *string `json:"jdbc_additional_params,omitempty"` // Additional params to add to JDBC connection string PoolTimeout *int64 `json:"pool_timeout,omitempty"` // Connection Pool Timeout, in seconds DialectName *string `json:"dialect_name,omitempty"` // (Read/Write) SQL Dialect name + SupportsDataStudioLink *bool `json:"supports_data_studio_link,omitempty"` // Database connection has the ability to support open data studio from explore CreatedAt *string `json:"created_at,omitempty"` // Creation date for this connection UserId *string `json:"user_id,omitempty"` // Id of user who last modified this connection configuration Example *bool `json:"example,omitempty"` // Is this an example connection? @@ -2594,19 +2595,20 @@ type RequestSearchAlerts struct { // Dynamically generated request type for search_boards type RequestSearchBoards struct { - Title *string `json:"title,omitempty"` // Matches board title. - CreatedAt *string `json:"created_at,omitempty"` // Matches the timestamp for when the board was created. - FirstName *string `json:"first_name,omitempty"` // The first name of the user who created this board. - LastName *string `json:"last_name,omitempty"` // The last name of the user who created this board. - Fields *string `json:"fields,omitempty"` // Requested fields. - Favorited *bool `json:"favorited,omitempty"` // Return favorited boards when true. - CreatorId *string `json:"creator_id,omitempty"` // Filter on boards created by a particular user. - Sorts *string `json:"sorts,omitempty"` // The fields to sort the results by - Page *int64 `json:"page,omitempty"` // The page to return. DEPRECATED. Use offset instead. - PerPage *int64 `json:"per_page,omitempty"` // The number of items in the returned page. DEPRECATED. Use limit instead. - Offset *int64 `json:"offset,omitempty"` // The number of items to skip before returning any. (used with limit and takes priority over page and per_page) - Limit *int64 `json:"limit,omitempty"` // The maximum number of items to return. (used with offset and takes priority over page and per_page) - FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression + Title *string `json:"title,omitempty"` // Matches board title. + CreatedAt *string `json:"created_at,omitempty"` // Matches the timestamp for when the board was created. + FirstName *string `json:"first_name,omitempty"` // The first name of the user who created this board. + LastName *string `json:"last_name,omitempty"` // The last name of the user who created this board. + Fields *string `json:"fields,omitempty"` // Requested fields. + Favorited *bool `json:"favorited,omitempty"` // Return favorited boards when true. + CreatorId *string `json:"creator_id,omitempty"` // Filter on boards created by a particular user. + Sorts *string `json:"sorts,omitempty"` // The fields to sort the results by + Page *int64 `json:"page,omitempty"` // The page to return. DEPRECATED. Use offset instead. + PerPage *int64 `json:"per_page,omitempty"` // The number of items in the returned page. DEPRECATED. Use limit instead. + Offset *int64 `json:"offset,omitempty"` // The number of items to skip before returning any. (used with limit and takes priority over page and per_page) + Limit *int64 `json:"limit,omitempty"` // The maximum number of items to return. (used with offset and takes priority over page and per_page) + FilterOr *bool `json:"filter_or,omitempty"` // Combine given search criteria in a boolean OR expression + Permission *string `json:"permission,omitempty"` // Filter results based on permission, either show (default) or update } // Dynamically generated request type for search_content_favorites @@ -3823,7 +3825,7 @@ type WriteDatagroup struct { } // Dynamic writeable type for DBConnection removes: -// can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed +// can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed type WriteDBConnection struct { Name *string `json:"name,omitempty"` // Name of the connection. Also used as the unique identifier Host *string `json:"host,omitempty"` // Host name/address of server diff --git a/kotlin/src/main/com/looker/sdk/4.0/methods.kt b/kotlin/src/main/com/looker/sdk/4.0/methods.kt index 914e576ca..5739b67fb 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/methods.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/methods.kt @@ -1401,6 +1401,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * @param {Long} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) * @param {Long} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) * @param {Boolean} filter_or Combine given search criteria in a boolean OR expression + * @param {String} permission Filter results based on permission, either show (default) or update * * GET /boards/search -> Array */ @@ -1417,7 +1418,8 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { per_page: Long? = null, offset: Long? = null, limit: Long? = null, - filter_or: Boolean? = null + filter_or: Boolean? = null, + permission: String? = null ) : SDKResponse { return this.get>("/boards/search", mapOf("title" to title, @@ -1432,7 +1434,8 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { "per_page" to per_page, "offset" to offset, "limit" to limit, - "filter_or" to filter_or)) + "filter_or" to filter_or, + "permission" to permission)) } diff --git a/kotlin/src/main/com/looker/sdk/4.0/models.kt b/kotlin/src/main/com/looker/sdk/4.0/models.kt index 5e9e3891f..ec843c81b 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/models.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/models.kt @@ -1622,6 +1622,7 @@ data class Datagroup ( * @property jdbc_additional_params Additional params to add to JDBC connection string * @property pool_timeout Connection Pool Timeout, in seconds * @property dialect_name (Read/Write) SQL Dialect name + * @property supports_data_studio_link Database connection has the ability to support open data studio from explore (read-only) * @property created_at Creation date for this connection (read-only) * @property user_id Id of user who last modified this connection configuration (read-only) * @property example Is this an example connection? (read-only) @@ -1668,6 +1669,7 @@ data class DBConnection ( var jdbc_additional_params: String? = null, var pool_timeout: Long? = null, var dialect_name: String? = null, + var supports_data_studio_link: Boolean? = null, var created_at: String? = null, var user_id: String? = null, var example: Boolean? = null, @@ -5856,7 +5858,7 @@ data class WriteDatagroup ( /** * Dynamic writeable type for DBConnection removes: - * can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed + * can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed * * @property name Name of the connection. Also used as the unique identifier * @property host Host name/address of server diff --git a/kotlin/src/main/com/looker/sdk/4.0/streams.kt b/kotlin/src/main/com/looker/sdk/4.0/streams.kt index 64353caf6..e4738a17c 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/streams.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/streams.kt @@ -1400,6 +1400,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * @param {Long} offset The number of items to skip before returning any. (used with limit and takes priority over page and per_page) * @param {Long} limit The maximum number of items to return. (used with offset and takes priority over page and per_page) * @param {Boolean} filter_or Combine given search criteria in a boolean OR expression + * @param {String} permission Filter results based on permission, either show (default) or update * * GET /boards/search -> ByteArray */ @@ -1416,7 +1417,8 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { per_page: Long? = null, offset: Long? = null, limit: Long? = null, - filter_or: Boolean? = null + filter_or: Boolean? = null, + permission: String? = null ) : SDKResponse { return this.get("/boards/search", mapOf("title" to title, @@ -1431,7 +1433,8 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { "per_page" to per_page, "offset" to offset, "limit" to limit, - "filter_or" to filter_or)) + "filter_or" to filter_or, + "permission" to permission)) } diff --git a/kotlin/src/main/com/looker/sdk/Constants.kt b/kotlin/src/main/com/looker/sdk/Constants.kt index e472e73d8..6fdbc8b4f 100644 --- a/kotlin/src/main/com/looker/sdk/Constants.kt +++ b/kotlin/src/main/com/looker/sdk/Constants.kt @@ -28,7 +28,7 @@ package com.looker.sdk const val ENVIRONMENT_PREFIX = "LOOKERSDK" const val SDK_TAG = "KT-SDK" -const val LOOKER_VERSION = "22.12" +const val LOOKER_VERSION = "22.14" const val API_VERSION = "4.0" const val AGENT_TAG = "$SDK_TAG $LOOKER_VERSION" const val LOOKER_APPID = "x-looker-appid" diff --git a/packages/sdk/src/3.1/models.ts b/packages/sdk/src/3.1/models.ts index 29f430a61..e7175eb9c 100644 --- a/packages/sdk/src/3.1/models.ts +++ b/packages/sdk/src/3.1/models.ts @@ -1955,6 +1955,10 @@ export interface IDBConnection { * (Read/Write) SQL Dialect name */ dialect_name?: string | null + /** + * Database connection has the ability to support open data studio from explore (read-only) + */ + supports_data_studio_link?: boolean /** * Creation date for this connection (read-only) */ @@ -9788,7 +9792,7 @@ export interface IWriteDatagroup { /** * Dynamic writeable type for DBConnection removes: - * can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed + * can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed */ export interface IWriteDBConnection { /** diff --git a/packages/sdk/src/4.0/funcs.ts b/packages/sdk/src/4.0/funcs.ts index 7f699c81c..3d9f8cf3b 100644 --- a/packages/sdk/src/4.0/funcs.ts +++ b/packages/sdk/src/4.0/funcs.ts @@ -2164,6 +2164,7 @@ export const search_boards = async ( offset: request.offset, limit: request.limit, filter_or: request.filter_or, + permission: request.permission, }, null, options diff --git a/packages/sdk/src/4.0/methods.ts b/packages/sdk/src/4.0/methods.ts index 0edd70eba..1575af27e 100644 --- a/packages/sdk/src/4.0/methods.ts +++ b/packages/sdk/src/4.0/methods.ts @@ -2042,6 +2042,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { offset: request.offset, limit: request.limit, filter_or: request.filter_or, + permission: request.permission, }, null, options diff --git a/packages/sdk/src/4.0/models.ts b/packages/sdk/src/4.0/models.ts index 64e469e91..7950e5d7c 100644 --- a/packages/sdk/src/4.0/models.ts +++ b/packages/sdk/src/4.0/models.ts @@ -2596,6 +2596,10 @@ export interface IDBConnection { * (Read/Write) SQL Dialect name */ dialect_name?: string | null + /** + * Database connection has the ability to support open data studio from explore (read-only) + */ + supports_data_studio_link?: boolean /** * Creation date for this connection (read-only) */ @@ -7892,6 +7896,10 @@ export interface IRequestSearchBoards { * Combine given search criteria in a boolean OR expression */ filter_or?: boolean | null + /** + * Filter results based on permission, either show (default) or update + */ + permission?: string | null } /** @@ -11502,7 +11510,7 @@ export interface IWriteDatagroup { /** * Dynamic writeable type for DBConnection removes: - * can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed + * can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed */ export interface IWriteDBConnection { /** diff --git a/packages/sdk/src/4.0/streams.ts b/packages/sdk/src/4.0/streams.ts index de8e2aee7..6defe5a7c 100644 --- a/packages/sdk/src/4.0/streams.ts +++ b/packages/sdk/src/4.0/streams.ts @@ -2330,6 +2330,7 @@ export class Looker40SDKStream extends APIMethods { offset: request.offset, limit: request.limit, filter_or: request.filter_or, + permission: request.permission, }, null, options diff --git a/packages/sdk/src/constants.ts b/packages/sdk/src/constants.ts index 0512241d2..54a7309a6 100644 --- a/packages/sdk/src/constants.ts +++ b/packages/sdk/src/constants.ts @@ -24,5 +24,5 @@ */ -export const sdkVersion = '22.12' +export const sdkVersion = '22.14' export const environmentPrefix = 'LOOKERSDK' diff --git a/python/looker_sdk/sdk/api31/models.py b/python/looker_sdk/sdk/api31/models.py index 3f2806132..efea435a8 100644 --- a/python/looker_sdk/sdk/api31/models.py +++ b/python/looker_sdk/sdk/api31/models.py @@ -2532,6 +2532,7 @@ class DBConnection(model.Model): jdbc_additional_params: Additional params to add to JDBC connection string pool_timeout: Connection Pool Timeout, in seconds dialect_name: (Read/Write) SQL Dialect name + supports_data_studio_link: Database connection has the ability to support open data studio from explore created_at: Creation date for this connection user_id: Id of user who last modified this connection configuration example: Is this an example connection? @@ -2571,6 +2572,7 @@ class DBConnection(model.Model): jdbc_additional_params: Optional[str] = None pool_timeout: Optional[int] = None dialect_name: Optional[str] = None + supports_data_studio_link: Optional[bool] = None created_at: Optional[str] = None user_id: Optional[str] = None example: Optional[bool] = None @@ -2612,6 +2614,7 @@ def __init__( jdbc_additional_params: Optional[str] = None, pool_timeout: Optional[int] = None, dialect_name: Optional[str] = None, + supports_data_studio_link: Optional[bool] = None, created_at: Optional[str] = None, user_id: Optional[str] = None, example: Optional[bool] = None, @@ -2650,6 +2653,7 @@ def __init__( self.jdbc_additional_params = jdbc_additional_params self.pool_timeout = pool_timeout self.dialect_name = dialect_name + self.supports_data_studio_link = supports_data_studio_link self.created_at = created_at self.user_id = user_id self.example = example @@ -10300,7 +10304,7 @@ def __init__( class WriteDBConnection(model.Model): """ Dynamic writeable type for DBConnection removes: - can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed + can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed Attributes: name: Name of the connection. Also used as the unique identifier diff --git a/python/looker_sdk/sdk/api40/methods.py b/python/looker_sdk/sdk/api40/methods.py index 9efc8f9b2..113a34fe5 100644 --- a/python/looker_sdk/sdk/api40/methods.py +++ b/python/looker_sdk/sdk/api40/methods.py @@ -1793,6 +1793,8 @@ def search_boards( limit: Optional[int] = None, # Combine given search criteria in a boolean OR expression filter_or: Optional[bool] = None, + # Filter results based on permission, either show (default) or update + permission: Optional[str] = None, transport_options: Optional[transport.TransportOptions] = None, ) -> Sequence[mdls.Board]: """Search Boards""" @@ -1815,6 +1817,7 @@ def search_boards( "offset": offset, "limit": limit, "filter_or": filter_or, + "permission": permission, }, transport_options=transport_options, ), diff --git a/python/looker_sdk/sdk/api40/models.py b/python/looker_sdk/sdk/api40/models.py index fa2403e54..0a9fb4561 100644 --- a/python/looker_sdk/sdk/api40/models.py +++ b/python/looker_sdk/sdk/api40/models.py @@ -3401,6 +3401,7 @@ class DBConnection(model.Model): jdbc_additional_params: Additional params to add to JDBC connection string pool_timeout: Connection Pool Timeout, in seconds dialect_name: (Read/Write) SQL Dialect name + supports_data_studio_link: Database connection has the ability to support open data studio from explore created_at: Creation date for this connection user_id: Id of user who last modified this connection configuration example: Is this an example connection? @@ -3447,6 +3448,7 @@ class DBConnection(model.Model): jdbc_additional_params: Optional[str] = None pool_timeout: Optional[int] = None dialect_name: Optional[str] = None + supports_data_studio_link: Optional[bool] = None created_at: Optional[str] = None user_id: Optional[str] = None example: Optional[bool] = None @@ -3495,6 +3497,7 @@ def __init__( jdbc_additional_params: Optional[str] = None, pool_timeout: Optional[int] = None, dialect_name: Optional[str] = None, + supports_data_studio_link: Optional[bool] = None, created_at: Optional[str] = None, user_id: Optional[str] = None, example: Optional[bool] = None, @@ -3540,6 +3543,7 @@ def __init__( self.jdbc_additional_params = jdbc_additional_params self.pool_timeout = pool_timeout self.dialect_name = dialect_name + self.supports_data_studio_link = supports_data_studio_link self.created_at = created_at self.user_id = user_id self.example = example @@ -12227,7 +12231,7 @@ def __init__( class WriteDBConnection(model.Model): """ Dynamic writeable type for DBConnection removes: - can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed + can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed Attributes: name: Name of the connection. Also used as the unique identifier diff --git a/python/looker_sdk/sdk/constants.py b/python/looker_sdk/sdk/constants.py index 52d318bb7..ea712aa2f 100644 --- a/python/looker_sdk/sdk/constants.py +++ b/python/looker_sdk/sdk/constants.py @@ -20,5 +20,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -sdk_version = "22.12" +sdk_version = "22.14" environment_prefix = "LOOKERSDK" diff --git a/release-please-config.json b/release-please-config.json index abbd5be47..4e9d28c32 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -4,7 +4,7 @@ ], "bump-minor-pre-major": true, "bump-patch-for-minor-pre-major": true, - "release-as": "22.12.1", + "release-as": "22.14.0", "packages": { ".": { "release-as": "" diff --git a/spec/Looker.3.1.json b/spec/Looker.3.1.json index 32333fd48..30dc88222 100644 --- a/spec/Looker.3.1.json +++ b/spec/Looker.3.1.json @@ -2,7 +2,7 @@ "swagger": "2.0", "info": { "version": "3.1.0", - "x-looker-release-version": "22.12.83", + "x-looker-release-version": "22.14.71", "title": "Looker API 3.1 Reference", "description": "### Authorization\n\nThe classic method of API authorization uses Looker **API3** credentials for authorization and access control.\nLooker admins can create API3 credentials on Looker's **Admin/Users** page.\n\nAPI 4.0 adds additional ways to authenticate API requests, including OAuth and CORS requests.\n\nFor details, see [Looker API Authorization](https://docs.looker.com/r/api/authorization).\n\n\n### API Explorer\n\nThe API Explorer is a Looker-provided utility with many new and unique features for learning and using the Looker API and SDKs.\n\nFor details, see the [API Explorer documentation](https://docs.looker.com/r/api/explorer).\n\n\n### Looker Language SDKs\n\nThe Looker API is a RESTful system that should be usable by any programming language capable of making\nHTTPS requests. SDKs for a variety of programming languages are also provided to streamline using the API. Looker\nhas an OpenSource [sdk-codegen project](https://github.com/looker-open-source/sdk-codegen) that provides several\nlanguage SDKs. Language SDKs generated by `sdk-codegen` have an Authentication manager that can automatically\nauthenticate API requests when needed.\n\nFor details on available Looker SDKs, see [Looker API Client SDKs](https://docs.looker.com/r/api/client_sdks).\n\n\n### API Versioning\n\nFuture releases of Looker expand the latest API version release-by-release to securely expose more and more of the core\npower of the Looker platform to API client applications. API endpoints marked as \"beta\" may receive breaking changes without\nwarning (but we will try to avoid doing that). Stable (non-beta) API endpoints should not receive breaking\nchanges in future releases.\n\nFor details, see [Looker API Versioning](https://docs.looker.com/r/api/versioning).\n\n\n### 3.1 Legacy API\n\nAPI 3.1 is now **deprecated**. API 4.0 should be used instead.\n\nThe text below is retained for reference purposes.\n\nThe following are a few examples of noteworthy items that have changed between API 3.0 and API 3.1.\nFor more comprehensive coverage of API changes, please see the release notes for your Looker release.\n\n### Examples of new things added in API 3.1 (compared to API 3.0):\n\n* [Dashboard construction](#!/3.1/Dashboard/) APIs\n* [Themes](#!/3.1/Theme/) and [custom color collections](#!/3.1/ColorCollection) APIs\n* Create and run [SQL Runner](#!/3.1/Query/run_sql_query) queries\n* Create and run [merged results](#!/3.1/Query/create_merge_query) queries\n* Create and modify [dashboard filters](#!/3.1/Dashboard/create_dashboard_filter)\n* Create and modify [password requirements](#!/3.1/Auth/password_config)\n\n### Deprecated in API 3.0\n\nThe following functions and properties have been deprecated in API 3.0. They continue to exist and work in API 3.0\nfor the next several Looker releases but they have not been carried forward to API 3.1:\n\n* Dashboard Prefetch functions\n* User access_filter functions\n* User API 1.0 credentials functions\n* Space.is_root and Space.is_user_root properties. Use Space.is_shared_root and Space.is_users_root instead.\n\n### Semantic changes in API 3.1:\n\n* [all_looks()](#!/3.1/Look/all_looks) no longer includes soft-deleted looks, matching [all_dashboards()](#!/3.1/Dashboard/all_dashboards) behavior.\nYou can find soft-deleted looks using [search_looks()](#!/3.1/Look/search_looks) with the `deleted` param set to True.\n* [all_spaces()](#!/3.1/Space/all_spaces) no longer includes duplicate items\n* [search_users()](#!/3.1/User/search_users) no longer accepts Y,y,1,0,N,n for Boolean params, only \"true\" and \"false\".\n* For greater client and network compatibility, [render_task_results](#!/3.1/RenderTask/render_task_results) now returns\nHTTP status **202 Accepted** instead of HTTP status **102 Processing**\n* [all_running_queries()](#!/3.1/Query/all_running_queries) and [kill_query](#!/3.1/Query/kill_query) functions have moved into the [Query](#!/3.1/Query/) function group.\n\nThe API Explorer can be used to [interactively compare](https://docs.looker.com/r/api/explorer#comparing_api_versions) the differences between API 3.1 and 4.0.\n\n\n### API and SDK Support Policies\n\nLooker API versions and language SDKs have varying support levels. Please read the API and SDK\n[support policies](https://docs.looker.com/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -15,10 +15,16 @@ } }, "basePath": "/api/3.1", - "consumes": ["application/json"], - "produces": ["application/json"], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], "host": "localhost:20000", - "schemes": ["https"], + "schemes": [ + "https" + ], "tags": [ { "name": "ApiAuth", @@ -132,7 +138,9 @@ "paths": { "/query_tasks": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -285,7 +293,9 @@ }, "/query_tasks/multi_results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -331,7 +341,9 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -377,11 +389,16 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", - "produces": ["text", "application/json"], + "produces": [ + "text", + "application/json" + ], "parameters": [ { "name": "query_task_id", @@ -423,7 +440,9 @@ }, "/queries/{query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -470,7 +489,9 @@ }, "/queries/slug/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -516,7 +537,9 @@ }, "/queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -582,11 +605,18 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "query_id", @@ -729,11 +759,18 @@ }, "/queries/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "result_format", @@ -877,11 +914,18 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "model_name", @@ -943,11 +987,15 @@ }, "/login": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", - "consumes": ["application/x-www-form-urlencoded"], + "consumes": [ + "application/x-www-form-urlencoded" + ], "parameters": [ { "name": "client_id", @@ -990,7 +1038,9 @@ }, "/login/{user_id}": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1037,7 +1087,9 @@ }, "/logout": { "delete": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1067,7 +1119,9 @@ }, "/backup_configuration": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "backup_configuration", "summary": "Get Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1096,7 +1150,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_backup_configuration", "summary": "Update Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1144,7 +1200,9 @@ }, "/cloud_storage": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -1172,7 +1230,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -1219,7 +1279,9 @@ }, "/color_collections": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1259,7 +1321,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1324,7 +1388,9 @@ }, "/color_collections/custom": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1366,7 +1432,9 @@ }, "/color_collections/standard": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1408,7 +1476,9 @@ }, "/color_collections/default": { "put": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1457,7 +1527,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -1487,7 +1559,9 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1531,7 +1605,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1595,7 +1671,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1649,7 +1727,9 @@ }, "/content_favorite/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -1761,7 +1841,9 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -1806,7 +1888,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -1852,7 +1936,9 @@ }, "/content_favorite": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -1911,7 +1997,9 @@ }, "/content_metadata": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -1961,7 +2049,9 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -2020,7 +2110,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -2067,7 +2159,9 @@ }, "/content_metadata_access": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -2132,7 +2226,9 @@ "x-looker-rate-limited": true }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -2182,7 +2278,9 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -2241,7 +2339,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -2287,11 +2387,16 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": ["image/svg+xml", "image/png"], + "produces": [ + "image/svg+xml", + "image/png" + ], "parameters": [ { "name": "type", @@ -2364,7 +2469,9 @@ }, "/content_validation": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -2415,7 +2522,9 @@ }, "/content_view/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -2547,7 +2656,9 @@ }, "/custom_welcome_email": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -2575,7 +2686,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -2635,7 +2748,9 @@ }, "/custom_welcome_email_test": { "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -2688,7 +2803,9 @@ }, "/dashboards": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -2728,7 +2845,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -2787,7 +2906,9 @@ }, "/dashboards/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -2946,7 +3067,9 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3032,7 +3155,9 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3103,7 +3228,9 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -3152,7 +3279,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -3216,7 +3345,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -3262,7 +3393,9 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -3301,7 +3434,9 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -3340,7 +3475,9 @@ }, "/dashboard_elements/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3426,7 +3563,9 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -3470,7 +3609,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -3513,7 +3654,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -3580,7 +3723,9 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -3629,7 +3774,9 @@ }, "/dashboard_elements": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -3702,7 +3849,9 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -3746,7 +3895,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -3789,7 +3940,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -3856,7 +4009,9 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -3905,7 +4060,9 @@ }, "/dashboard_filters": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -3971,7 +4128,9 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -4015,7 +4174,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -4082,7 +4243,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -4131,7 +4294,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -4175,7 +4340,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -4224,7 +4391,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -4291,7 +4460,9 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -4340,7 +4511,9 @@ }, "/dashboard_layouts": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -4406,7 +4579,9 @@ }, "/data_actions": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -4447,7 +4622,9 @@ }, "/data_actions/form": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -4497,7 +4674,9 @@ }, "/datagroups": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -4530,7 +4709,9 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -4567,7 +4748,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -4633,7 +4816,9 @@ }, "/connections": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -4673,7 +4858,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -4732,7 +4919,9 @@ }, "/connections/{connection_name}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -4776,7 +4965,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -4834,7 +5025,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -4879,7 +5072,9 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -4937,7 +5132,9 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -5003,7 +5200,9 @@ }, "/connections/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -5065,7 +5264,9 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -5118,7 +5319,9 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -5171,7 +5374,9 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -5245,7 +5450,9 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -5284,7 +5491,9 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -5330,7 +5539,9 @@ }, "/dialect_info": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -5372,7 +5583,9 @@ }, "/digest_emails_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -5400,7 +5613,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -5453,7 +5668,9 @@ }, "/digest_email_send": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -5490,7 +5707,9 @@ }, "/embed/sso_url": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -5549,7 +5768,9 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -5591,7 +5812,9 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -5628,7 +5851,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -5692,7 +5917,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -5752,7 +5979,9 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -5796,7 +6025,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -5848,7 +6079,9 @@ }, "/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -5938,7 +6171,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -6004,7 +6239,9 @@ }, "/groups/search": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -6112,7 +6349,9 @@ }, "/groups/{group_id}": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -6157,7 +6396,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -6223,7 +6464,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -6275,7 +6518,9 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -6323,7 +6568,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -6378,7 +6625,9 @@ }, "/groups/{group_id}/users": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -6449,7 +6698,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -6504,7 +6755,9 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -6555,7 +6808,9 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -6606,7 +6861,9 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -6667,7 +6924,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -6712,7 +6971,9 @@ }, "/homepages": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_homepages", "summary": "Get All Homepages", "description": "### Get information about all homepages.\n", @@ -6753,7 +7014,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "create_homepage", "summary": "Create Homepage", "description": "### Create a new homepage.\n", @@ -6820,7 +7083,9 @@ }, "/homepages/search": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "search_homepages", "summary": "Search Homepages", "description": "### Search Homepages\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -6951,7 +7216,9 @@ }, "/homepages/{homepage_id}": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "homepage", "summary": "Get Homepage", "description": "### Get information about a homepage.\n", @@ -6997,7 +7264,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "update_homepage", "summary": "Update Homepage", "description": "### Update a homepage definition.\n", @@ -7064,7 +7333,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "delete_homepage", "summary": "Delete Homepage", "description": "### Delete a homepage.\n", @@ -7111,7 +7382,9 @@ }, "/homepage_items": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_homepage_items", "summary": "Get All Homepage Items", "description": "### Get information about all homepage items.\n", @@ -7166,7 +7439,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "create_homepage_item", "summary": "Create Homepage Item", "description": "### Create a new homepage item.\n", @@ -7233,7 +7508,9 @@ }, "/homepage_items/{homepage_item_id}": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "homepage_item", "summary": "Get Homepage Item", "description": "### Get information about a homepage item.\n", @@ -7279,7 +7556,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "update_homepage_item", "summary": "Update Homepage Item", "description": "### Update a homepage item definition.\n", @@ -7346,7 +7625,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "delete_homepage_item", "summary": "Delete Homepage Item", "description": "### Delete a homepage item.\n", @@ -7393,7 +7674,9 @@ }, "/homepage_sections": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_homepage_sections", "summary": "Get All Homepage sections", "description": "### Get information about all homepage sections.\n", @@ -7441,7 +7724,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "create_homepage_section", "summary": "Create Homepage section", "description": "### Create a new homepage section.\n", @@ -7508,7 +7793,9 @@ }, "/homepage_sections/{homepage_section_id}": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "homepage_section", "summary": "Get Homepage section", "description": "### Get information about a homepage section.\n", @@ -7554,7 +7841,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "update_homepage_section", "summary": "Update Homepage section", "description": "### Update a homepage section definition.\n", @@ -7621,7 +7910,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "delete_homepage_section", "summary": "Delete Homepage section", "description": "### Delete a homepage section.\n", @@ -7668,7 +7959,9 @@ }, "/primary_homepage_sections": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -7710,7 +8003,9 @@ }, "/integration_hubs": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -7750,7 +8045,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -7817,7 +8114,9 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -7862,7 +8161,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -7929,7 +8230,9 @@ "x-looker-rate-limited": true }, "delete": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -7975,7 +8278,9 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -8021,7 +8326,9 @@ }, "/integrations": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -8070,7 +8377,9 @@ }, "/integrations/{integration_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -8114,7 +8423,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -8181,7 +8492,9 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -8238,7 +8551,9 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -8283,7 +8598,9 @@ }, "/internal_help_resources_content": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -8311,7 +8628,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -8364,7 +8683,9 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -8394,7 +8715,9 @@ }, "/internal_help_resources": { "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -8447,7 +8770,9 @@ }, "/ldap_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -8469,7 +8794,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -8516,7 +8843,9 @@ }, "/ldap_config/test_connection": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -8563,7 +8892,9 @@ }, "/ldap_config/test_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -8610,7 +8941,9 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -8657,7 +8990,9 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -8704,7 +9039,9 @@ }, "/legacy_features": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -8737,7 +9074,9 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -8775,7 +9114,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -8836,7 +9177,9 @@ }, "/locales": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -8869,7 +9212,9 @@ }, "/looks": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -8909,7 +9254,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -8975,7 +9322,9 @@ }, "/looks/search": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -9119,7 +9468,9 @@ }, "/looks/{look_id}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -9164,7 +9515,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -9230,7 +9583,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -9276,11 +9631,18 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "look_id", @@ -9423,7 +9785,9 @@ }, "/lookml_models": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -9463,7 +9827,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -9522,7 +9888,9 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -9566,7 +9934,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -9624,7 +9994,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -9669,7 +10041,9 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -9722,7 +10096,9 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -9768,7 +10144,9 @@ }, "/merge_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -9834,7 +10212,9 @@ }, "/model_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -9935,7 +10315,9 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -9980,7 +10362,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -10024,7 +10408,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -10085,7 +10471,9 @@ }, "/model_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -10119,7 +10507,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -10172,7 +10562,9 @@ }, "/oidc_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -10194,7 +10586,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -10241,7 +10635,9 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -10272,7 +10668,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -10311,7 +10709,9 @@ }, "/oidc_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -10358,7 +10758,9 @@ }, "/password_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -10386,7 +10788,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -10439,7 +10843,9 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -10481,7 +10887,9 @@ }, "/permissions": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -10514,7 +10922,9 @@ }, "/permission_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10615,7 +11025,9 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -10660,7 +11072,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -10710,7 +11124,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -10777,7 +11193,9 @@ }, "/permission_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -10817,7 +11235,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -10876,7 +11296,9 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -10944,7 +11366,9 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -10998,7 +11422,9 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -11052,7 +11478,9 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -11106,7 +11534,9 @@ }, "/projects": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -11146,7 +11576,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -11205,7 +11637,9 @@ }, "/projects/{project_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -11249,7 +11683,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -11328,7 +11764,9 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -11367,11 +11805,15 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", - "produces": ["text/plain"], + "produces": [ + "text/plain" + ], "parameters": [ { "name": "project_id", @@ -11423,11 +11865,15 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", - "produces": ["text/plain"], + "produces": [ + "text/plain" + ], "parameters": [ { "name": "project_id", @@ -11463,7 +11909,9 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -11519,7 +11967,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -11568,7 +12018,9 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -11614,7 +12066,9 @@ }, "/projects/{project_id}/files": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -11663,7 +12117,9 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -11716,7 +12172,9 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -11765,7 +12223,9 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -11837,7 +12297,9 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -11886,7 +12348,9 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -11961,7 +12425,9 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -12051,7 +12517,9 @@ }, "/render_tasks/lookml_dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_lookml_dashboard_render_task", "summary": "Create Lookml Dashboard Render Task", "description": "### Create a new task to render a lookml dashboard to a document or image.\n\n# DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12162,7 +12630,9 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12250,7 +12720,9 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12338,7 +12810,9 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12449,7 +12923,9 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -12495,11 +12971,17 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", - "produces": ["image/jpeg", "image/png", "application/pdf"], + "produces": [ + "image/jpeg", + "image/png", + "application/pdf" + ], "parameters": [ { "name": "render_task_id", @@ -12538,7 +13020,9 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -12609,7 +13093,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -12661,7 +13147,9 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -12703,7 +13191,9 @@ }, "/roles": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -12755,7 +13245,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -12814,7 +13306,9 @@ }, "/roles/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -12908,7 +13402,9 @@ }, "/roles/{role_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -12946,7 +13442,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -12996,7 +13494,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -13063,7 +13563,9 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -13111,7 +13613,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -13178,7 +13682,9 @@ }, "/roles/{role_id}/users": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -13233,7 +13739,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -13312,7 +13820,9 @@ }, "/running_queries": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -13339,7 +13849,9 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -13384,7 +13896,9 @@ }, "/saml_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -13406,7 +13920,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -13453,7 +13969,9 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -13484,7 +14002,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -13523,7 +14043,9 @@ }, "/saml_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -13570,11 +14092,15 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", - "consumes": ["text/plain"], + "consumes": [ + "text/plain" + ], "parameters": [ { "name": "body", @@ -13612,11 +14138,15 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", - "consumes": ["text/plain"], + "consumes": [ + "text/plain" + ], "parameters": [ { "name": "body", @@ -13654,7 +14184,9 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -13704,7 +14236,9 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -13748,7 +14282,9 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -13807,7 +14343,9 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -13854,7 +14392,9 @@ }, "/scheduled_plans": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -13911,7 +14451,9 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -13974,7 +14516,9 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -14034,7 +14578,9 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14099,7 +14645,9 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14164,7 +14712,9 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -14228,7 +14778,9 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -14296,7 +14848,9 @@ }, "/session_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -14324,7 +14878,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -14377,7 +14933,9 @@ }, "/session": { "get": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -14405,7 +14963,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -14458,7 +15018,9 @@ }, "/smtp_settings": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -14521,7 +15083,9 @@ }, "/spaces/search": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "search_spaces", "summary": "Search Spaces", "description": "### Search Spaces\n\n Returns an **array of space objects** that match the given search criteria.\n\n If multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\n Get a **single space** by id with [Space](#!/Space/space)\n", @@ -14646,7 +15210,9 @@ }, "/spaces/{space_id}": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space", "summary": "Get Space", "description": "### Get information about the space with a specific id.", @@ -14691,7 +15257,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "delete_space", "summary": "Delete Space", "description": "### Delete the space with a specific id including any children spaces.\n**DANGER** this will delete all looks and dashboards in the space.\n", @@ -14735,7 +15303,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "update_space", "summary": "Update Space", "description": "### Update the space with a specific id.", @@ -14796,7 +15366,9 @@ }, "/spaces": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "all_spaces", "summary": "Get All Spaces", "description": "### Get information about all spaces.\n\nIn API 3.x, this will not return empty personal spaces, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal spaces will be returned.\n\n", @@ -14837,7 +15409,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "create_space", "summary": "Create Space", "description": "### Create a space with specified information.\n\nCaller must have permission to edit the parent space and to create spaces, otherwise the request\nreturns 404 Not Found.\n", @@ -14897,7 +15471,9 @@ }, "/spaces/{space_id}/children": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_children", "summary": "Get Space Children", "description": "### Get the children of a space.", @@ -14970,7 +15546,9 @@ }, "/spaces/{space_id}/children/search": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_children_search", "summary": "Search Space Children", "description": "### Search the children of a space", @@ -15034,7 +15612,9 @@ }, "/spaces/{space_id}/parent": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_parent", "summary": "Get Space Parent", "description": "### Get the parent of a space", @@ -15081,7 +15661,9 @@ }, "/spaces/{space_id}/ancestors": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_ancestors", "summary": "Get Space Ancestors", "description": "### Get the ancestors of a space", @@ -15131,7 +15713,9 @@ }, "/spaces/{space_id}/looks": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_looks", "summary": "Get Space Looks", "description": "### Get all looks in a space.\nIn API 3.x, this will return all looks in a space, including looks in the trash.\nIn API 4.0+, all looks in a space will be returned, excluding looks in the trash.\n", @@ -15181,7 +15765,9 @@ }, "/spaces/{space_id}/dashboards": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_dashboards", "summary": "Get Space Dashboards", "description": "### Get the dashboards in a space", @@ -15231,7 +15817,9 @@ }, "/folders/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -15355,7 +15943,9 @@ }, "/folders/{folder_id}": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -15399,7 +15989,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -15442,7 +16034,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -15502,7 +16096,9 @@ }, "/folders": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -15542,7 +16138,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -15601,7 +16199,9 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -15673,7 +16273,9 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -15736,7 +16338,9 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -15782,7 +16386,9 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -15831,7 +16437,9 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -15880,7 +16488,9 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -15929,7 +16539,9 @@ }, "/sql_queries/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -15968,7 +16580,9 @@ }, "/sql_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -16027,11 +16641,18 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "slug", @@ -16093,7 +16714,9 @@ }, "/themes": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16133,7 +16756,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16192,7 +16817,9 @@ }, "/themes/search": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16295,7 +16922,9 @@ }, "/themes/default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -16333,7 +16962,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16384,7 +17015,9 @@ }, "/themes/active": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -16441,7 +17074,9 @@ }, "/themes/theme_or_default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16488,7 +17123,9 @@ }, "/themes/validate": { "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16553,7 +17190,9 @@ }, "/themes/{theme_id}": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16597,7 +17236,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16655,7 +17296,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -16700,7 +17343,9 @@ }, "/timezones": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -16733,7 +17378,9 @@ }, "/user_attributes": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -16780,7 +17427,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -16846,7 +17495,9 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -16891,7 +17542,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -16957,7 +17610,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -17003,7 +17658,9 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -17051,7 +17708,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -17124,7 +17783,9 @@ }, "/user_login_lockouts": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -17166,7 +17827,9 @@ }, "/user_login_lockouts/search": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -17266,7 +17929,9 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -17311,7 +17976,9 @@ }, "/user": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -17344,7 +18011,9 @@ }, "/users": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -17419,7 +18088,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -17479,7 +18150,9 @@ }, "/users/search": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -17617,7 +18290,9 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -17732,7 +18407,9 @@ }, "/users/{user_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -17777,7 +18454,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -17837,7 +18516,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -17883,7 +18564,9 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -17936,7 +18619,9 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -17981,7 +18666,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18053,7 +18740,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18119,7 +18808,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -18165,7 +18856,9 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -18210,7 +18903,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -18282,7 +18977,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -18328,7 +19025,9 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -18373,7 +19072,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -18419,7 +19120,9 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -18464,7 +19167,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -18510,7 +19215,9 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -18555,7 +19262,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -18601,7 +19310,9 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -18646,7 +19357,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -18692,7 +19405,9 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -18745,7 +19460,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -18799,7 +19516,9 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -18847,7 +19566,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -18921,7 +19642,9 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -18974,7 +19697,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -19028,7 +19753,9 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -19078,7 +19805,9 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -19123,7 +19852,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -19169,7 +19900,9 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -19222,7 +19955,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -19276,7 +20011,9 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -19326,7 +20063,9 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -19380,7 +20119,9 @@ }, "/users/{user_id}/roles": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -19435,7 +20176,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -19497,7 +20240,9 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -19567,7 +20312,9 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -19628,7 +20375,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -19673,11 +20422,15 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": ["image/svg+xml"], + "produces": [ + "image/svg+xml" + ], "parameters": [ { "name": "type", @@ -19728,7 +20481,9 @@ }, "/versions": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -19767,7 +20522,9 @@ }, "/whitelabel_configuration": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -19804,7 +20561,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -19857,7 +20616,9 @@ }, "/workspaces": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -19890,7 +20651,9 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -19946,7 +20709,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "DashboardBase": { "properties": { @@ -20167,7 +20933,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "CreateSpace": { "properties": { @@ -20183,7 +20951,10 @@ } }, "x-looker-status": "stable", - "required": ["name", "parent_id"] + "required": [ + "name", + "parent_id" + ] }, "UpdateSpace": { "properties": { @@ -20323,7 +21094,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "Homepage": { "properties": { @@ -20710,7 +21483,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "ValidationErrorDetail": { "properties": { @@ -20741,7 +21517,9 @@ } }, "x-looker-status": "stable", - "required": ["documentation_url"] + "required": [ + "documentation_url" + ] }, "AccessToken": { "properties": { @@ -21031,7 +21809,10 @@ "permission_type": { "type": "string", "readOnly": true, - "x-looker-values": ["view", "edit"], + "x-looker-values": [ + "view", + "edit" + ], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "x-looker-nullable": true }, @@ -21273,7 +22054,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "ContentValidationFolder": { "properties": { @@ -21290,7 +22073,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "ContentValidationLook": { "properties": { @@ -22706,7 +23491,12 @@ } }, "x-looker-status": "stable", - "required": ["dashboard_id", "name", "title", "type"] + "required": [ + "dashboard_id", + "name", + "title", + "type" + ] }, "DashboardLayoutComponent": { "properties": { @@ -23601,6 +24391,12 @@ "description": "(Read/Write) SQL Dialect name", "x-looker-nullable": true }, + "supports_data_studio_link": { + "type": "boolean", + "readOnly": true, + "description": "Database connection has the ability to support open data studio from explore", + "x-looker-nullable": false + }, "created_at": { "type": "string", "readOnly": true, @@ -24154,7 +24950,9 @@ } }, "x-looker-status": "stable", - "required": ["target_url"] + "required": [ + "target_url" + ] }, "EmbedUrlResponse": { "properties": { @@ -24202,7 +25000,11 @@ }, "ssl_version": { "type": "string", - "x-looker-values": ["TLSv1_1", "SSLv23", "TLSv1_2"], + "x-looker-values": [ + "TLSv1_1", + "SSLv23", + "TLSv1_2" + ], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "x-looker-nullable": true } @@ -24314,7 +25116,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "CreateFolder": { "properties": { @@ -24330,7 +25134,10 @@ } }, "x-looker-status": "stable", - "required": ["name", "parent_id"] + "required": [ + "name", + "parent_id" + ] }, "UpdateFolder": { "properties": { @@ -24470,7 +25277,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "GitBranch": { "properties": { @@ -24956,7 +25765,12 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["cell", "query", "dashboard", "none"], + "x-looker-values": [ + "cell", + "query", + "dashboard", + "none" + ], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "x-looker-nullable": false }, @@ -24966,7 +25780,10 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["formatted", "unformatted"], + "x-looker-values": [ + "formatted", + "unformatted" + ], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "x-looker-nullable": false }, @@ -24976,7 +25793,10 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["apply", "noapply"], + "x-looker-values": [ + "apply", + "noapply" + ], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "x-looker-nullable": false }, @@ -24986,7 +25806,10 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["push", "url"], + "x-looker-values": [ + "push", + "url" + ], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "x-looker-nullable": false }, @@ -27091,7 +27914,10 @@ "align": { "type": "string", "readOnly": true, - "x-looker-values": ["left", "right"], + "x-looker-values": [ + "left", + "right" + ], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "x-looker-nullable": false }, @@ -27104,7 +27930,12 @@ "category": { "type": "string", "readOnly": true, - "x-looker-values": ["parameter", "filter", "measure", "dimension"], + "x-looker-values": [ + "parameter", + "filter", + "measure", + "dimension" + ], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "x-looker-nullable": true }, @@ -27156,7 +27987,10 @@ "fill_style": { "type": "string", "readOnly": true, - "x-looker-values": ["enumeration", "range"], + "x-looker-values": [ + "enumeration", + "range" + ], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "x-looker-nullable": true }, @@ -27577,7 +28411,10 @@ "format": { "type": "string", "readOnly": true, - "x-looker-values": ["topojson", "vector_tile_region"], + "x-looker-values": [ + "topojson", + "vector_tile_region" + ], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "x-looker-nullable": false }, @@ -28721,7 +29558,12 @@ }, "pull_request_mode": { "type": "string", - "x-looker-values": ["off", "links", "recommended", "required"], + "x-looker-values": [ + "off", + "links", + "recommended", + "required" + ], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "x-looker-nullable": false }, @@ -29165,7 +30007,10 @@ } }, "x-looker-status": "stable", - "required": ["model", "view"] + "required": [ + "model", + "view" + ] }, "CreateQueryTask": { "properties": { @@ -29224,7 +30069,10 @@ } }, "x-looker-status": "stable", - "required": ["query_id", "result_format"] + "required": [ + "query_id", + "result_format" + ] }, "QueryTask": { "properties": { @@ -31937,4 +32785,4 @@ "x-looker-status": "stable" } } -} +} \ No newline at end of file diff --git a/spec/Looker.3.1.oas.json b/spec/Looker.3.1.oas.json index 57e43cc8e..e1f80a6b5 100644 --- a/spec/Looker.3.1.oas.json +++ b/spec/Looker.3.1.oas.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "version": "3.1.0", - "x-looker-release-version": "22.12.83", + "x-looker-release-version": "22.14.71", "title": "Looker API 3.1 Reference", "description": "### Authorization\n\nThe classic method of API authorization uses Looker **API3** credentials for authorization and access control.\nLooker admins can create API3 credentials on Looker's **Admin/Users** page.\n\nAPI 4.0 adds additional ways to authenticate API requests, including OAuth and CORS requests.\n\nFor details, see [Looker API Authorization](https://docs.looker.com/r/api/authorization).\n\n\n### API Explorer\n\nThe API Explorer is a Looker-provided utility with many new and unique features for learning and using the Looker API and SDKs.\n\nFor details, see the [API Explorer documentation](https://docs.looker.com/r/api/explorer).\n\n\n### Looker Language SDKs\n\nThe Looker API is a RESTful system that should be usable by any programming language capable of making\nHTTPS requests. SDKs for a variety of programming languages are also provided to streamline using the API. Looker\nhas an OpenSource [sdk-codegen project](https://github.com/looker-open-source/sdk-codegen) that provides several\nlanguage SDKs. Language SDKs generated by `sdk-codegen` have an Authentication manager that can automatically\nauthenticate API requests when needed.\n\nFor details on available Looker SDKs, see [Looker API Client SDKs](https://docs.looker.com/r/api/client_sdks).\n\n\n### API Versioning\n\nFuture releases of Looker expand the latest API version release-by-release to securely expose more and more of the core\npower of the Looker platform to API client applications. API endpoints marked as \"beta\" may receive breaking changes without\nwarning (but we will try to avoid doing that). Stable (non-beta) API endpoints should not receive breaking\nchanges in future releases.\n\nFor details, see [Looker API Versioning](https://docs.looker.com/r/api/versioning).\n\n\n### 3.1 Legacy API\n\nAPI 3.1 is now **deprecated**. API 4.0 should be used instead.\n\nThe text below is retained for reference purposes.\n\nThe following are a few examples of noteworthy items that have changed between API 3.0 and API 3.1.\nFor more comprehensive coverage of API changes, please see the release notes for your Looker release.\n\n### Examples of new things added in API 3.1 (compared to API 3.0):\n\n* [Dashboard construction](#!/3.1/Dashboard/) APIs\n* [Themes](#!/3.1/Theme/) and [custom color collections](#!/3.1/ColorCollection) APIs\n* Create and run [SQL Runner](#!/3.1/Query/run_sql_query) queries\n* Create and run [merged results](#!/3.1/Query/create_merge_query) queries\n* Create and modify [dashboard filters](#!/3.1/Dashboard/create_dashboard_filter)\n* Create and modify [password requirements](#!/3.1/Auth/password_config)\n\n### Deprecated in API 3.0\n\nThe following functions and properties have been deprecated in API 3.0. They continue to exist and work in API 3.0\nfor the next several Looker releases but they have not been carried forward to API 3.1:\n\n* Dashboard Prefetch functions\n* User access_filter functions\n* User API 1.0 credentials functions\n* Space.is_root and Space.is_user_root properties. Use Space.is_shared_root and Space.is_users_root instead.\n\n### Semantic changes in API 3.1:\n\n* [all_looks()](#!/3.1/Look/all_looks) no longer includes soft-deleted looks, matching [all_dashboards()](#!/3.1/Dashboard/all_dashboards) behavior.\nYou can find soft-deleted looks using [search_looks()](#!/3.1/Look/search_looks) with the `deleted` param set to True.\n* [all_spaces()](#!/3.1/Space/all_spaces) no longer includes duplicate items\n* [search_users()](#!/3.1/User/search_users) no longer accepts Y,y,1,0,N,n for Boolean params, only \"true\" and \"false\".\n* For greater client and network compatibility, [render_task_results](#!/3.1/RenderTask/render_task_results) now returns\nHTTP status **202 Accepted** instead of HTTP status **102 Processing**\n* [all_running_queries()](#!/3.1/Query/all_running_queries) and [kill_query](#!/3.1/Query/kill_query) functions have moved into the [Query](#!/3.1/Query/) function group.\n\nThe API Explorer can be used to [interactively compare](https://docs.looker.com/r/api/explorer#comparing_api_versions) the differences between API 3.1 and 4.0.\n\n\n### API and SDK Support Policies\n\nLooker API versions and language SDKs have varying support levels. Please read the API and SDK\n[support policies](https://docs.looker.com/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -127,7 +127,9 @@ "paths": { "/query_tasks": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -332,7 +334,9 @@ }, "/query_tasks/multi_results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -393,7 +397,9 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -455,7 +461,9 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", @@ -538,7 +546,9 @@ }, "/queries/{query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -601,7 +611,9 @@ }, "/queries/slug/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -663,7 +675,9 @@ }, "/queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -757,7 +771,9 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1026,7 +1042,9 @@ }, "/queries/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1296,7 +1314,9 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1462,7 +1482,9 @@ }, "/login": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", @@ -1524,7 +1546,9 @@ }, "/login/{user_id}": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1587,7 +1611,9 @@ }, "/logout": { "delete": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1629,7 +1655,9 @@ }, "/backup_configuration": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "backup_configuration", "summary": "Get Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1670,7 +1698,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_backup_configuration", "summary": "Update Backup Configuration", "description": "### WARNING: The Looker internal database backup function has been deprecated.\n", @@ -1734,7 +1764,9 @@ }, "/cloud_storage": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -1774,7 +1806,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -1837,7 +1871,9 @@ }, "/color_collections": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1891,7 +1927,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1984,7 +2022,9 @@ }, "/color_collections/custom": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2040,7 +2080,9 @@ }, "/color_collections/standard": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2096,7 +2138,9 @@ }, "/color_collections/default": { "put": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2167,7 +2211,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -2209,7 +2255,9 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2269,7 +2317,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2361,7 +2411,9 @@ } }, "delete": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2437,7 +2489,9 @@ }, "/content_favorite/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -2581,7 +2635,9 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -2642,7 +2698,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -2706,7 +2764,9 @@ }, "/content_favorite": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -2789,7 +2849,9 @@ }, "/content_metadata": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -2855,7 +2917,9 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -2938,7 +3002,9 @@ } }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -3001,7 +3067,9 @@ }, "/content_metadata_access": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -3094,7 +3162,9 @@ } }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -3160,7 +3230,9 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -3243,7 +3315,9 @@ } }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -3307,7 +3381,9 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -3422,7 +3498,9 @@ }, "/content_validation": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -3495,7 +3573,9 @@ }, "/content_view/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3665,7 +3745,9 @@ }, "/custom_welcome_email": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -3705,7 +3787,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -3789,7 +3873,9 @@ }, "/custom_welcome_email_test": { "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -3862,7 +3948,9 @@ }, "/dashboards": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -3916,7 +4004,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -3999,7 +4089,9 @@ }, "/dashboards/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -4204,7 +4296,9 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -4326,7 +4420,9 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -4423,7 +4519,9 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -4494,7 +4592,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -4586,7 +4686,9 @@ } }, "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -4648,7 +4750,9 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -4701,7 +4805,9 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -4754,7 +4860,9 @@ }, "/dashboard_elements/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4866,7 +4974,9 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -4926,7 +5036,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -4987,7 +5099,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -5080,7 +5194,9 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -5145,7 +5261,9 @@ }, "/dashboard_elements": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -5248,7 +5366,9 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -5308,7 +5428,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -5369,7 +5491,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -5462,7 +5586,9 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -5527,7 +5653,9 @@ }, "/dashboard_filters": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -5621,7 +5749,9 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -5681,7 +5811,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -5774,7 +5906,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -5839,7 +5973,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -5899,7 +6035,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -5970,7 +6108,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -6063,7 +6203,9 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -6128,7 +6270,9 @@ }, "/dashboard_layouts": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -6222,7 +6366,9 @@ }, "/data_actions": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -6275,7 +6421,9 @@ }, "/data_actions/form": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -6341,7 +6489,9 @@ }, "/datagroups": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -6386,7 +6536,9 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -6437,7 +6589,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -6531,7 +6685,9 @@ }, "/connections": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -6585,7 +6741,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -6668,7 +6826,9 @@ }, "/connections/{connection_name}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -6728,7 +6888,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -6810,7 +6972,9 @@ } }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -6873,7 +7037,9 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -6955,7 +7121,9 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -7046,7 +7214,9 @@ }, "/connections/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -7129,7 +7299,9 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -7200,7 +7372,9 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -7271,7 +7445,9 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -7369,7 +7545,9 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -7422,7 +7600,9 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -7484,7 +7664,9 @@ }, "/dialect_info": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -7540,7 +7722,9 @@ }, "/digest_emails_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -7580,7 +7764,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -7653,7 +7839,9 @@ }, "/digest_email_send": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -7706,7 +7894,9 @@ }, "/embed/sso_url": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -7789,7 +7979,9 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -7845,7 +8037,9 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -7896,7 +8090,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -7988,7 +8184,9 @@ } }, "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -8072,7 +8270,9 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -8132,7 +8332,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -8204,7 +8406,9 @@ }, "/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -8321,7 +8525,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -8415,7 +8621,9 @@ }, "/groups/search": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -8555,7 +8763,9 @@ }, "/groups/{group_id}": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -8616,7 +8826,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -8708,7 +8920,9 @@ } }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -8782,7 +8996,9 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -8846,7 +9062,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -8921,7 +9139,9 @@ }, "/groups/{group_id}/users": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -9014,7 +9234,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -9089,7 +9311,9 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -9156,7 +9380,9 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -9223,7 +9449,9 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -9306,7 +9534,9 @@ } }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -9363,7 +9593,9 @@ }, "/homepages": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_homepages", "summary": "Get All Homepages", "description": "### Get information about all homepages.\n", @@ -9418,7 +9650,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "create_homepage", "summary": "Create Homepage", "description": "### Create a new homepage.\n", @@ -9513,7 +9747,9 @@ }, "/homepages/search": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "search_homepages", "summary": "Search Homepages", "description": "### Search Homepages\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -9682,7 +9918,9 @@ }, "/homepages/{homepage_id}": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "homepage", "summary": "Get Homepage", "description": "### Get information about a homepage.\n", @@ -9744,7 +9982,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "update_homepage", "summary": "Update Homepage", "description": "### Update a homepage definition.\n", @@ -9837,7 +10077,9 @@ } }, "delete": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "delete_homepage", "summary": "Delete Homepage", "description": "### Delete a homepage.\n", @@ -9902,7 +10144,9 @@ }, "/homepage_items": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_homepage_items", "summary": "Get All Homepage Items", "description": "### Get information about all homepage items.\n", @@ -9975,7 +10219,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "create_homepage_item", "summary": "Create Homepage Item", "description": "### Create a new homepage item.\n", @@ -10070,7 +10316,9 @@ }, "/homepage_items/{homepage_item_id}": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "homepage_item", "summary": "Get Homepage Item", "description": "### Get information about a homepage item.\n", @@ -10132,7 +10380,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "update_homepage_item", "summary": "Update Homepage Item", "description": "### Update a homepage item definition.\n", @@ -10225,7 +10475,9 @@ } }, "delete": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "delete_homepage_item", "summary": "Delete Homepage Item", "description": "### Delete a homepage item.\n", @@ -10290,7 +10542,9 @@ }, "/homepage_sections": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_homepage_sections", "summary": "Get All Homepage sections", "description": "### Get information about all homepage sections.\n", @@ -10354,7 +10608,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "create_homepage_section", "summary": "Create Homepage section", "description": "### Create a new homepage section.\n", @@ -10449,7 +10705,9 @@ }, "/homepage_sections/{homepage_section_id}": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "homepage_section", "summary": "Get Homepage section", "description": "### Get information about a homepage section.\n", @@ -10511,7 +10769,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "update_homepage_section", "summary": "Update Homepage section", "description": "### Update a homepage section definition.\n", @@ -10604,7 +10864,9 @@ } }, "delete": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "delete_homepage_section", "summary": "Delete Homepage section", "description": "### Delete a homepage section.\n", @@ -10669,7 +10931,9 @@ }, "/primary_homepage_sections": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -10725,7 +10989,9 @@ }, "/integration_hubs": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -10779,7 +11045,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -10874,7 +11142,9 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -10935,7 +11205,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -11028,7 +11300,9 @@ } }, "delete": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -11092,7 +11366,9 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -11156,7 +11432,9 @@ }, "/integrations": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -11221,7 +11499,9 @@ }, "/integrations/{integration_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -11281,7 +11561,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -11374,7 +11656,9 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -11451,7 +11735,9 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -11514,7 +11800,9 @@ }, "/internal_help_resources_content": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -11554,7 +11842,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -11627,7 +11917,9 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -11669,7 +11961,9 @@ }, "/internal_help_resources": { "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -11742,7 +12036,9 @@ }, "/ldap_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -11772,7 +12068,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -11835,7 +12133,9 @@ }, "/ldap_config/test_connection": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -11898,7 +12198,9 @@ }, "/ldap_config/test_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -11961,7 +12263,9 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -12024,7 +12328,9 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -12087,7 +12393,9 @@ }, "/legacy_features": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -12132,7 +12440,9 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -12184,7 +12494,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -12269,7 +12581,9 @@ }, "/locales": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -12314,7 +12628,9 @@ }, "/looks": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -12368,7 +12684,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -12462,7 +12780,9 @@ }, "/looks/search": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -12648,7 +12968,9 @@ }, "/looks/{look_id}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -12709,7 +13031,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -12801,7 +13125,9 @@ } }, "delete": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -12865,7 +13191,9 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -13134,7 +13462,9 @@ }, "/lookml_models": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -13188,7 +13518,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -13271,7 +13603,9 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -13331,7 +13665,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -13413,7 +13749,9 @@ } }, "delete": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -13476,7 +13814,9 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -13547,7 +13887,9 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -13609,7 +13951,9 @@ }, "/merge_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -13703,7 +14047,9 @@ }, "/model_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -13834,7 +14180,9 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -13895,7 +14243,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -13957,7 +14307,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -14042,7 +14394,9 @@ }, "/model_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -14086,7 +14440,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -14159,7 +14515,9 @@ }, "/oidc_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -14189,7 +14547,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -14252,7 +14612,9 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -14293,7 +14655,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -14346,7 +14710,9 @@ }, "/oidc_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -14409,7 +14775,9 @@ }, "/password_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -14449,7 +14817,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -14522,7 +14892,9 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -14584,7 +14956,9 @@ }, "/permissions": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -14629,7 +15003,9 @@ }, "/permission_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -14760,7 +15136,9 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -14821,7 +15199,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -14893,7 +15273,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -14988,7 +15370,9 @@ }, "/permission_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -15042,7 +15426,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -15125,7 +15511,9 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -15219,7 +15607,9 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -15295,7 +15685,9 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -15371,7 +15763,9 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -15447,7 +15841,9 @@ }, "/projects": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -15501,7 +15897,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -15584,7 +15982,9 @@ }, "/projects/{project_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -15644,7 +16044,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -15757,7 +16159,9 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -15810,7 +16214,9 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", @@ -15891,7 +16297,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", @@ -15944,7 +16352,9 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -16024,7 +16434,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -16089,7 +16501,9 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -16151,7 +16565,9 @@ }, "/projects/{project_id}/files": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -16216,7 +16632,9 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -16287,7 +16705,9 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -16352,7 +16772,9 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -16452,7 +16874,9 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -16517,7 +16941,9 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -16620,7 +17046,9 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -16744,7 +17172,9 @@ }, "/render_tasks/lookml_dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_lookml_dashboard_render_task", "summary": "Create Lookml Dashboard Render Task", "description": "### Create a new task to render a lookml dashboard to a document or image.\n\n# DEPRECATED: Use [create_dashboard_render_task()](#!/RenderTask/create_dashboard_render_task) in API 4.0+\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -16895,7 +17325,9 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17017,7 +17449,9 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17139,7 +17573,9 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17290,7 +17726,9 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -17352,7 +17790,9 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", @@ -17438,7 +17878,9 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -17539,7 +17981,9 @@ } }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -17611,7 +18055,9 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -17667,7 +18113,9 @@ }, "/roles": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -17736,7 +18184,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -17819,7 +18269,9 @@ }, "/roles/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -17941,7 +18393,9 @@ }, "/roles/{role_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -17993,7 +18447,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -18065,7 +18521,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -18160,7 +18618,9 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -18224,7 +18684,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -18315,7 +18777,9 @@ }, "/roles/{role_id}/users": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -18388,7 +18852,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -18499,7 +18965,9 @@ }, "/running_queries": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -18534,7 +19002,9 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -18597,7 +19067,9 @@ }, "/saml_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -18627,7 +19099,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -18690,7 +19164,9 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -18731,7 +19207,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -18784,7 +19262,9 @@ }, "/saml_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -18847,7 +19327,9 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", @@ -18900,7 +19382,9 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", @@ -18953,7 +19437,9 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -19019,7 +19505,9 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -19081,7 +19569,9 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -19164,7 +19654,9 @@ } }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -19227,7 +19719,9 @@ }, "/scheduled_plans": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -19308,7 +19802,9 @@ } }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -19393,7 +19889,9 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -19477,7 +19975,9 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -19562,7 +20062,9 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -19647,7 +20149,9 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -19731,7 +20235,9 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -19827,7 +20333,9 @@ }, "/session_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -19867,7 +20375,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -19940,7 +20450,9 @@ }, "/session": { "get": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -19980,7 +20492,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -20053,7 +20567,9 @@ }, "/smtp_settings": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -20140,7 +20656,9 @@ }, "/spaces/search": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "search_spaces", "summary": "Search Spaces", "description": "### Search Spaces\n\n Returns an **array of space objects** that match the given search criteria.\n\n If multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n The parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\n Get a **single space** by id with [Space](#!/Space/space)\n", @@ -20301,7 +20819,9 @@ }, "/spaces/{space_id}": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space", "summary": "Get Space", "description": "### Get information about the space with a specific id.", @@ -20362,7 +20882,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "delete_space", "summary": "Delete Space", "description": "### Delete the space with a specific id including any children spaces.\n**DANGER** this will delete all looks and dashboards in the space.\n", @@ -20424,7 +20946,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "update_space", "summary": "Update Space", "description": "### Update the space with a specific id.", @@ -20509,7 +21033,9 @@ }, "/spaces": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "all_spaces", "summary": "Get All Spaces", "description": "### Get information about all spaces.\n\nIn API 3.x, this will not return empty personal spaces, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal spaces will be returned.\n\n", @@ -20564,7 +21090,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "create_space", "summary": "Create Space", "description": "### Create a space with specified information.\n\nCaller must have permission to edit the parent space and to create spaces, otherwise the request\nreturns 404 Not Found.\n", @@ -20648,7 +21176,9 @@ }, "/spaces/{space_id}/children": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_children", "summary": "Get Space Children", "description": "### Get the children of a space.", @@ -20743,7 +21273,9 @@ }, "/spaces/{space_id}/children/search": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_children_search", "summary": "Search Space Children", "description": "### Search the children of a space", @@ -20827,7 +21359,9 @@ }, "/spaces/{space_id}/parent": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_parent", "summary": "Get Space Parent", "description": "### Get the parent of a space", @@ -20890,7 +21424,9 @@ }, "/spaces/{space_id}/ancestors": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_ancestors", "summary": "Get Space Ancestors", "description": "### Get the ancestors of a space", @@ -20956,7 +21492,9 @@ }, "/spaces/{space_id}/looks": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_looks", "summary": "Get Space Looks", "description": "### Get all looks in a space.\nIn API 3.x, this will return all looks in a space, including looks in the trash.\nIn API 4.0+, all looks in a space will be returned, excluding looks in the trash.\n", @@ -21022,7 +21560,9 @@ }, "/spaces/{space_id}/dashboards": { "get": { - "tags": ["Space"], + "tags": [ + "Space" + ], "operationId": "space_dashboards", "summary": "Get Space Dashboards", "description": "### Get the dashboards in a space", @@ -21088,7 +21628,9 @@ }, "/folders/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -21248,7 +21790,9 @@ }, "/folders/{folder_id}": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -21308,7 +21852,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -21369,7 +21915,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -21453,7 +22001,9 @@ }, "/folders": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -21507,7 +22057,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -21590,7 +22142,9 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -21684,7 +22238,9 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -21767,7 +22323,9 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -21829,7 +22387,9 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -21894,7 +22454,9 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -21959,7 +22521,9 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -22024,7 +22588,9 @@ }, "/sql_queries/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -22077,7 +22643,9 @@ }, "/sql_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -22160,7 +22728,9 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", @@ -22326,7 +22896,9 @@ }, "/themes": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22380,7 +22952,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22463,7 +23037,9 @@ }, "/themes/search": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22596,7 +23172,9 @@ }, "/themes/default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -22648,7 +23226,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22721,7 +23301,9 @@ }, "/themes/active": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -22796,7 +23378,9 @@ }, "/themes/theme_or_default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22859,7 +23443,9 @@ }, "/themes/validate": { "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -22952,7 +23538,9 @@ }, "/themes/{theme_id}": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23012,7 +23600,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23094,7 +23684,9 @@ } }, "delete": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -23157,7 +23749,9 @@ }, "/timezones": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -23202,7 +23796,9 @@ }, "/user_attributes": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -23265,7 +23861,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -23359,7 +23957,9 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -23420,7 +24020,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -23512,7 +24114,9 @@ } }, "delete": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -23576,7 +24180,9 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -23640,7 +24246,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -23741,7 +24349,9 @@ }, "/user_login_lockouts": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -23797,7 +24407,9 @@ }, "/user_login_lockouts/search": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -23927,7 +24539,9 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -23990,7 +24604,9 @@ }, "/user": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -24033,7 +24649,9 @@ }, "/users": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -24131,7 +24749,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -24215,7 +24835,9 @@ }, "/users/search": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -24393,7 +25015,9 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -24542,7 +25166,9 @@ }, "/users/{user_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -24603,7 +25229,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -24685,7 +25313,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -24749,7 +25379,9 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -24820,7 +25452,9 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -24881,7 +25515,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -24983,7 +25619,9 @@ } }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -25075,7 +25713,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -25139,7 +25779,9 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -25200,7 +25842,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -25302,7 +25946,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -25366,7 +26012,9 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -25427,7 +26075,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -25491,7 +26141,9 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -25552,7 +26204,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -25616,7 +26270,9 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -25677,7 +26333,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -25741,7 +26399,9 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -25802,7 +26462,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -25866,7 +26528,9 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -25937,7 +26601,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26011,7 +26677,9 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26075,7 +26743,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -26179,7 +26849,9 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -26250,7 +26922,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -26324,7 +26998,9 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -26390,7 +27066,9 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -26451,7 +27129,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -26515,7 +27195,9 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -26586,7 +27268,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -26660,7 +27344,9 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -26726,7 +27412,9 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -26798,7 +27486,9 @@ }, "/users/{user_id}/roles": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -26871,7 +27561,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -26951,7 +27643,9 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -27040,7 +27734,9 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -27123,7 +27819,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -27180,7 +27878,9 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -27252,7 +27952,9 @@ }, "/versions": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -27305,7 +28007,9 @@ }, "/whitelabel_configuration": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -27356,7 +28060,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -27429,7 +28135,9 @@ }, "/workspaces": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -27474,7 +28182,9 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -27551,7 +28261,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "DashboardBase": { "properties": { @@ -27763,7 +28476,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "CreateSpace": { "properties": { @@ -27779,7 +28494,10 @@ } }, "x-looker-status": "stable", - "required": ["name", "parent_id"] + "required": [ + "name", + "parent_id" + ] }, "UpdateSpace": { "properties": { @@ -27919,7 +28637,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "Homepage": { "properties": { @@ -28306,7 +29026,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "ValidationErrorDetail": { "properties": { @@ -28337,7 +29060,9 @@ } }, "x-looker-status": "stable", - "required": ["documentation_url"] + "required": [ + "documentation_url" + ] }, "AccessToken": { "properties": { @@ -28621,7 +29346,10 @@ "permission_type": { "type": "string", "readOnly": true, - "enum": ["view", "edit"], + "enum": [ + "view", + "edit" + ], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "nullable": true }, @@ -28847,7 +29575,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "ContentValidationFolder": { "properties": { @@ -28864,7 +29594,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "ContentValidationLook": { "properties": { @@ -30257,7 +30989,12 @@ } }, "x-looker-status": "stable", - "required": ["dashboard_id", "name", "title", "type"] + "required": [ + "dashboard_id", + "name", + "title", + "type" + ] }, "DashboardLayoutComponent": { "properties": { @@ -31129,6 +31866,12 @@ "description": "(Read/Write) SQL Dialect name", "nullable": true }, + "supports_data_studio_link": { + "type": "boolean", + "readOnly": true, + "description": "Database connection has the ability to support open data studio from explore", + "nullable": false + }, "created_at": { "type": "string", "readOnly": true, @@ -31677,7 +32420,9 @@ } }, "x-looker-status": "stable", - "required": ["target_url"] + "required": [ + "target_url" + ] }, "EmbedUrlResponse": { "properties": { @@ -31725,7 +32470,11 @@ }, "ssl_version": { "type": "string", - "enum": ["TLSv1_1", "SSLv23", "TLSv1_2"], + "enum": [ + "TLSv1_1", + "SSLv23", + "TLSv1_2" + ], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "nullable": true } @@ -31837,7 +32586,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "CreateFolder": { "properties": { @@ -31853,7 +32604,10 @@ } }, "x-looker-status": "stable", - "required": ["name", "parent_id"] + "required": [ + "name", + "parent_id" + ] }, "UpdateFolder": { "properties": { @@ -31993,7 +32747,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "GitBranch": { "properties": { @@ -32479,7 +33235,12 @@ "type": "string" }, "readOnly": true, - "enum": ["cell", "query", "dashboard", "none"], + "enum": [ + "cell", + "query", + "dashboard", + "none" + ], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "nullable": false }, @@ -32489,7 +33250,10 @@ "type": "string" }, "readOnly": true, - "enum": ["formatted", "unformatted"], + "enum": [ + "formatted", + "unformatted" + ], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "nullable": false }, @@ -32499,7 +33263,10 @@ "type": "string" }, "readOnly": true, - "enum": ["apply", "noapply"], + "enum": [ + "apply", + "noapply" + ], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "nullable": false }, @@ -32509,7 +33276,10 @@ "type": "string" }, "readOnly": true, - "enum": ["push", "url"], + "enum": [ + "push", + "url" + ], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "nullable": false }, @@ -34566,7 +35336,10 @@ "align": { "type": "string", "readOnly": true, - "enum": ["left", "right"], + "enum": [ + "left", + "right" + ], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "nullable": false }, @@ -34579,7 +35352,12 @@ "category": { "type": "string", "readOnly": true, - "enum": ["parameter", "filter", "measure", "dimension"], + "enum": [ + "parameter", + "filter", + "measure", + "dimension" + ], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "nullable": true }, @@ -34631,7 +35409,10 @@ "fill_style": { "type": "string", "readOnly": true, - "enum": ["enumeration", "range"], + "enum": [ + "enumeration", + "range" + ], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "nullable": true }, @@ -35046,7 +35827,10 @@ "format": { "type": "string", "readOnly": true, - "enum": ["topojson", "vector_tile_region"], + "enum": [ + "topojson", + "vector_tile_region" + ], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "nullable": false }, @@ -36184,7 +36968,12 @@ }, "pull_request_mode": { "type": "string", - "enum": ["off", "links", "recommended", "required"], + "enum": [ + "off", + "links", + "recommended", + "required" + ], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "nullable": false }, @@ -36625,7 +37414,10 @@ } }, "x-looker-status": "stable", - "required": ["model", "view"] + "required": [ + "model", + "view" + ] }, "CreateQueryTask": { "properties": { @@ -36684,7 +37476,10 @@ } }, "x-looker-status": "stable", - "required": ["query_id", "result_format"] + "required": [ + "query_id", + "result_format" + ] }, "QueryTask": { "properties": { @@ -39339,4 +40134,4 @@ } } } -} +} \ No newline at end of file diff --git a/spec/Looker.4.0.json b/spec/Looker.4.0.json index 7e34717df..ffbbdde33 100644 --- a/spec/Looker.4.0.json +++ b/spec/Looker.4.0.json @@ -1,8 +1,8 @@ { "swagger": "2.0", "info": { - "version": "4.0.22.12", - "x-looker-release-version": "22.12.83", + "version": "4.0.22.14", + "x-looker-release-version": "22.14.71", "title": "Looker API 4.0 Reference", "description": "\nAPI 4.0 is the current release of the Looker API. API 3.1 is deprecated.\n\n### Authorization\n\nThe classic method of API authorization uses Looker **API3** credentials for authorization and access control.\nLooker admins can create API3 credentials on Looker's **Admin/Users** page.\n\nAPI 4.0 adds additional ways to authenticate API requests, including OAuth and CORS requests.\n\nFor details, see [Looker API Authorization](https://docs.looker.com/r/api/authorization).\n\n\n### API Explorer\n\nThe API Explorer is a Looker-provided utility with many new and unique features for learning and using the Looker API and SDKs.\n\nFor details, see the [API Explorer documentation](https://docs.looker.com/r/api/explorer).\n\n\n### Looker Language SDKs\n\nThe Looker API is a RESTful system that should be usable by any programming language capable of making\nHTTPS requests. SDKs for a variety of programming languages are also provided to streamline using the API. Looker\nhas an OpenSource [sdk-codegen project](https://github.com/looker-open-source/sdk-codegen) that provides several\nlanguage SDKs. Language SDKs generated by `sdk-codegen` have an Authentication manager that can automatically\nauthenticate API requests when needed.\n\nFor details on available Looker SDKs, see [Looker API Client SDKs](https://docs.looker.com/r/api/client_sdks).\n\n\n### API Versioning\n\nFuture releases of Looker expand the latest API version release-by-release to securely expose more and more of the core\npower of the Looker platform to API client applications. API endpoints marked as \"beta\" may receive breaking changes without\nwarning (but we will try to avoid doing that). Stable (non-beta) API endpoints should not receive breaking\nchanges in future releases.\n\nFor details, see [Looker API Versioning](https://docs.looker.com/r/api/versioning).\n\n\n### In This Release\n\nAPI 4.0 version was introduced to make adjustments to API functions, parameters, and response types to\nfix bugs and inconsistencies. These changes fall outside the bounds of non-breaking additive changes we can\nmake to the previous API 3.1.\n\nOne benefit of these type adjustments in API 4.0 is dramatically better support for strongly\ntyped languages like TypeScript, Kotlin, Swift, Go, C#, and more.\n\nSee the [API 4.0 GA announcement](https://developers.looker.com/api/advanced-usage/version-4-ga) for more information\nabout API 4.0.\n\nThe API Explorer can be used to [interactively compare](https://docs.looker.com/r/api/explorer#comparing_api_versions) the differences between API 3.1 and 4.0.\n\n\n### API and SDK Support Policies\n\nLooker API versions and language SDKs have varying support levels. Please read the API and SDK\n[support policies](https://docs.looker.com/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -15,10 +15,16 @@ } }, "basePath": "/api/4.0", - "consumes": ["application/json"], - "produces": ["application/json"], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], "host": "localhost:20000", - "schemes": ["https"], + "schemes": [ + "https" + ], "tags": [ { "name": "Alert", @@ -140,7 +146,9 @@ "paths": { "/query_tasks": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -295,7 +303,9 @@ }, "/query_tasks/multi_results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -342,7 +352,9 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -388,11 +400,16 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", - "produces": ["text", "application/json"], + "produces": [ + "text", + "application/json" + ], "parameters": [ { "name": "query_task_id", @@ -434,7 +451,9 @@ }, "/queries/{query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -480,7 +499,9 @@ }, "/queries/slug/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -526,7 +547,9 @@ }, "/queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -592,11 +615,18 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "query_id", @@ -745,11 +775,18 @@ }, "/queries/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "result_format", @@ -893,11 +930,18 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "model_name", @@ -959,11 +1003,15 @@ }, "/login": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", - "consumes": ["application/x-www-form-urlencoded"], + "consumes": [ + "application/x-www-form-urlencoded" + ], "parameters": [ { "name": "client_id", @@ -1006,7 +1054,9 @@ }, "/login/{user_id}": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1052,7 +1102,9 @@ }, "/logout": { "delete": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1082,7 +1134,9 @@ }, "/alerts/{alert_id}/follow": { "post": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "follow_alert", "summary": "Follow an alert", "description": "Follow an alert.", @@ -1116,7 +1170,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "unfollow_alert", "summary": "Unfollow an alert", "description": "Unfollow an alert.", @@ -1158,7 +1214,9 @@ }, "/alerts/search": { "get": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "search_alerts", "summary": "Search Alerts", "description": "### Search Alerts\n", @@ -1271,7 +1329,9 @@ }, "/alerts/{alert_id}": { "get": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "get_alert", "summary": "Get an alert", "description": "### Get an alert by a given alert ID\n", @@ -1308,7 +1368,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "update_alert_field", "summary": "Update select fields on an alert", "description": "### Update select alert fields\n# Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold`\n#\n", @@ -1372,7 +1434,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "update_alert", "summary": "Update an alert", "description": "### Update an alert\n# Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n#\n", @@ -1430,7 +1494,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "delete_alert", "summary": "Delete an alert", "description": "### Delete an alert by a given alert ID\n", @@ -1478,7 +1544,9 @@ }, "/alerts": { "post": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "create_alert", "summary": "Create an alert", "description": "### Create a new alert and return details of the newly created object\n\nRequired fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n\nExample Request:\nRun alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000\n```\n{\n \"cron\": \"0 5 * * *\",\n \"custom_title\": \"Alert when LA inventory is low\",\n \"dashboard_element_id\": 103,\n \"applied_dashboard_filters\": [\n {\n \"filter_title\": \"Warehouse Name\",\n \"field_name\": \"distribution_centers.name\",\n \"filter_value\": \"Los Angeles CA\",\n \"filter_description\": \"is Los Angeles CA\"\n }\n ],\n \"comparison_type\": \"LESS_THAN\",\n \"destinations\": [\n {\n \"destination_type\": \"EMAIL\",\n \"email_address\": \"test@test.com\"\n }\n ],\n \"field\": {\n \"title\": \"Number on Hand\",\n \"name\": \"inventory_items.number_on_hand\"\n },\n \"is_disabled\": false,\n \"is_public\": true,\n \"threshold\": 1000\n}\n```\n", @@ -1543,7 +1611,9 @@ }, "/alerts/{alert_id}/enqueue": { "post": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "enqueue_alert", "summary": "Enqueue an alert", "description": "### Enqueue an Alert by ID\n", @@ -1599,7 +1669,9 @@ }, "/alert_notifications": { "get": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "alert_notifications", "summary": "Alert Notifications", "description": "# Alert Notifications.\n The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user.\n\n", @@ -1650,7 +1722,9 @@ }, "/alert_notifications/{alert_notification_id}": { "patch": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "read_alert_notification", "summary": "Read a Notification", "description": "# Reads a Notification\n The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response.\n", @@ -1701,7 +1775,9 @@ }, "/cloud_storage": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -1729,7 +1805,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -1776,7 +1854,9 @@ }, "/color_collections": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1816,7 +1896,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1881,7 +1963,9 @@ }, "/color_collections/custom": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1923,7 +2007,9 @@ }, "/color_collections/standard": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -1965,7 +2051,9 @@ }, "/color_collections/default": { "put": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2014,7 +2102,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -2044,7 +2134,9 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2088,7 +2180,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2152,7 +2246,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2206,7 +2302,9 @@ }, "/content_favorite/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -2320,7 +2418,9 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -2364,7 +2464,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -2409,7 +2511,9 @@ }, "/content_favorite": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -2468,7 +2572,9 @@ }, "/content_metadata": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -2517,7 +2623,9 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -2575,7 +2683,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -2621,7 +2731,9 @@ }, "/content_metadata_access": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -2686,7 +2798,9 @@ "x-looker-rate-limited": true }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -2735,7 +2849,9 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -2793,7 +2909,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -2838,11 +2956,16 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": ["image/svg+xml", "image/png"], + "produces": [ + "image/svg+xml", + "image/png" + ], "parameters": [ { "name": "type", @@ -2915,7 +3038,9 @@ }, "/content_validation": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -2966,7 +3091,9 @@ }, "/content_view/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3094,7 +3221,9 @@ }, "/credentials_email/search": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_credentials_email", "summary": "Search CredentialsEmail", "description": "### Search email credentials\n\nReturns all credentials_email records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3187,7 +3316,9 @@ }, "/custom_welcome_email": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -3216,7 +3347,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -3277,7 +3410,9 @@ }, "/custom_welcome_email_test": { "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -3330,7 +3465,9 @@ }, "/dashboards": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -3370,7 +3507,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -3429,7 +3568,9 @@ }, "/dashboards/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -3603,7 +3744,9 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3689,7 +3832,9 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -3760,7 +3905,9 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -3809,7 +3956,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -3873,7 +4022,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -3919,7 +4070,9 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -3958,7 +4111,9 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -3997,7 +4152,9 @@ }, "/dashboards/{dashboard_id}/move": { "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "move_dashboard", "summary": "Move Dashboard", "description": "### Move an existing dashboard\n\nMoves a dashboard to a specified folder, and returns the moved dashboard.\n\n`dashboard_id` and `folder_id` are required.\n`dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -4061,7 +4218,9 @@ }, "/dashboards/lookml": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "import_dashboard_from_lookml", "summary": "Import Dashboard from LookML", "description": "### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard.\n\nIf a dashboard exists with the YAML-defined \"preferred_slug\", the new dashboard will overwrite it. Otherwise, a new\ndashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained.\n\nIf a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it\nIf the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards\nwill remain where they were\n\nLookML must contain valid LookML YAML code. It's recommended to use the LookML format returned\nfrom [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with \n).\n\nNote that the created dashboard is not linked to any LookML Dashboard,\ni.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method.\n", @@ -4126,7 +4285,9 @@ }, "/dashboards/from_lookml": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_from_lookml", "summary": "Create Dashboard from LookML", "description": "# DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml)\n", @@ -4191,7 +4352,9 @@ }, "/dashboards/{dashboard_id}/copy": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "copy_dashboard", "summary": "Copy Dashboard", "description": "### Copy an existing dashboard\n\nCreates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard.\n\n`dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified.\n`folder_id` will default to the existing folder.\n\nIf a dashboard with the same title already exists in the target folder, the copy will have '(copy)'\n or '(copy <# of copies>)' appended.\n", @@ -4261,7 +4424,9 @@ }, "/dashboard_elements/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4345,7 +4510,9 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -4389,7 +4556,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -4432,7 +4601,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -4499,7 +4670,9 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -4548,7 +4721,9 @@ }, "/dashboard_elements": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -4621,7 +4796,9 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -4665,7 +4842,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -4708,7 +4887,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -4775,7 +4956,9 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -4824,7 +5007,9 @@ }, "/dashboard_filters": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -4890,7 +5075,9 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -4934,7 +5121,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -5001,7 +5190,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -5050,7 +5241,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -5094,7 +5287,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -5143,7 +5338,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -5210,7 +5407,9 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -5259,7 +5458,9 @@ }, "/dashboard_layouts": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -5325,7 +5526,9 @@ }, "/data_actions": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -5366,7 +5569,9 @@ }, "/data_actions/form": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -5416,7 +5621,9 @@ }, "/datagroups": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -5449,7 +5656,9 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -5486,7 +5695,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -5552,7 +5763,9 @@ }, "/connections": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -5592,7 +5805,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -5651,7 +5866,9 @@ }, "/connections/{connection_name}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -5695,7 +5912,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -5753,7 +5972,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -5798,7 +6019,9 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -5856,7 +6079,9 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -5922,7 +6147,9 @@ }, "/connections/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -5984,7 +6211,9 @@ }, "/projects/{project_id}/manifest/lock_all": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "lock_all", "summary": "Lock All", "description": " ### Generate Lockfile for All LookML Dependencies\n\n Git must have been configured, must be in dev mode and deploy permission required\n\n Install_all is a two step process\n 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref.\n 2. The project will then write out a lockfile including each remote_dependency with its resolved ref.\n\n", @@ -6045,7 +6274,9 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -6098,7 +6329,9 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -6151,7 +6384,9 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -6225,7 +6460,9 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -6264,7 +6501,9 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -6310,7 +6549,9 @@ }, "/dialect_info": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -6352,7 +6593,9 @@ }, "/digest_emails_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -6380,7 +6623,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -6433,7 +6678,9 @@ }, "/digest_email_send": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -6470,7 +6717,9 @@ }, "/public_egress_ip_addresses": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "public_egress_ip_addresses", "summary": "Public Egress IP Addresses", "description": "### Get Egress IP Addresses\n\nReturns the list of public egress IP Addresses for a hosted customer's instance\n", @@ -6500,7 +6749,9 @@ }, "/embed_config/secrets": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_embed_secret", "summary": "Create Embed Secret", "description": "### Create an embed secret using the specified information.\n\nThe value of the `secret` field will be set by Looker and returned.\n", @@ -6559,7 +6810,9 @@ }, "/embed_config/secrets/{embed_secret_id}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_embed_secret", "summary": "Delete Embed Secret", "description": "### Delete an embed secret.\n", @@ -6604,7 +6857,9 @@ }, "/embed/sso_url": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -6663,7 +6918,9 @@ }, "/embed/token_url/me": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_embed_url_as_me", "summary": "Create Embed URL", "description": "### Create an Embed URL\n\nCreates an embed URL that runs as the Looker user making this API call. (\"Embed as me\")\nThis embed URL can then be used to instantiate a Looker embed session in a\n\"Powered by Looker\" (PBL) web application.\n\nThis is similar to Private Embedding (https://docs.looker.com/r/admin/embed/private-embed). Instead of\nof logging into the Web UI to authenticate, the user has already authenticated against the API to be able to\nmake this call. However, unlike Private Embed where the user has access to any other part of the Looker UI,\nthe embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to\ncontent visible under the `/embed` context.\n\nAn embed URL can only be used once, and must be used within 5 minutes of being created. After it\nhas been used to request a page from the Looker server, the URL is invalid. Future requests using\nthe same URL will fail. This is to prevent 'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with \"/embed\" and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar, insert \"/embed\" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request.\n\n#### Security Note\nProtect this embed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -6722,7 +6979,9 @@ }, "/external_oauth_applications": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_external_oauth_applications", "summary": "Get All External OAuth Applications", "description": "### Get all External OAuth Applications.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -6769,7 +7028,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_external_oauth_application", "summary": "Create External OAuth Application", "description": "### Create an OAuth Application using the specified configuration.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -6828,7 +7089,9 @@ }, "/external_oauth_applications/user_state": { "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_oauth_application_user_state", "summary": "Create Create OAuth user state.", "description": "### Create OAuth User state.\n", @@ -6887,7 +7150,9 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -6929,7 +7194,9 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -6966,7 +7233,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -7030,7 +7299,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -7090,7 +7361,9 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -7134,7 +7407,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -7186,7 +7461,9 @@ }, "/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -7292,7 +7569,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -7358,7 +7637,9 @@ }, "/groups/search": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7465,7 +7746,9 @@ }, "/groups/search/with_roles": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups_with_roles", "summary": "Search Groups with Roles", "description": "### Search groups include roles\n\nReturns all group records that match the given search criteria, and attaches any associated roles.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7572,7 +7855,9 @@ }, "/groups/search/with_hierarchy": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups_with_hierarchy", "summary": "Search Groups with Hierarchy", "description": "### Search groups include hierarchy\n\nReturns all group records that match the given search criteria, and attaches\nassociated role_ids and parent group_ids.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -7679,7 +7964,9 @@ }, "/groups/{group_id}": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -7723,7 +8010,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -7788,7 +8077,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -7839,7 +8130,9 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -7886,7 +8179,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -7940,7 +8235,9 @@ }, "/groups/{group_id}/users": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -8028,7 +8325,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -8082,7 +8381,9 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -8131,7 +8432,9 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -8180,7 +8483,9 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -8239,7 +8544,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -8282,7 +8589,9 @@ }, "/boards": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "all_boards", "summary": "Get All Boards", "description": "### Get information about all boards.\n", @@ -8322,7 +8631,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "create_board", "summary": "Create Board", "description": "### Create a new board.\n", @@ -8388,7 +8699,9 @@ }, "/boards/search": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "search_boards", "summary": "Search Boards", "description": "### Search Boards\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -8487,6 +8800,13 @@ "description": "Combine given search criteria in a boolean OR expression", "required": false, "type": "boolean" + }, + { + "name": "permission", + "in": "query", + "description": "Filter results based on permission, either show (default) or update", + "required": false, + "type": "string" } ], "responses": { @@ -8518,7 +8838,9 @@ }, "/boards/{board_id}": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "board", "summary": "Get Board", "description": "### Get information about a board.\n", @@ -8562,7 +8884,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "update_board", "summary": "Update Board", "description": "### Update a board definition.\n", @@ -8627,7 +8951,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "delete_board", "summary": "Delete Board", "description": "### Delete a board.\n", @@ -8672,7 +8998,9 @@ }, "/board_items": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "all_board_items", "summary": "Get All Board Items", "description": "### Get information about all board items.\n", @@ -8726,7 +9054,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "create_board_item", "summary": "Create Board Item", "description": "### Create a new board item.\n", @@ -8792,7 +9122,9 @@ }, "/board_items/{board_item_id}": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "board_item", "summary": "Get Board Item", "description": "### Get information about a board item.\n", @@ -8836,7 +9168,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "update_board_item", "summary": "Update Board Item", "description": "### Update a board item definition.\n", @@ -8901,7 +9235,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "delete_board_item", "summary": "Delete Board Item", "description": "### Delete a board item.\n", @@ -8946,7 +9282,9 @@ }, "/primary_homepage_sections": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -8988,7 +9326,9 @@ }, "/board_sections": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "all_board_sections", "summary": "Get All Board sections", "description": "### Get information about all board sections.\n", @@ -9035,7 +9375,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "create_board_section", "summary": "Create Board section", "description": "### Create a new board section.\n", @@ -9101,7 +9443,9 @@ }, "/board_sections/{board_section_id}": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "board_section", "summary": "Get Board section", "description": "### Get information about a board section.\n", @@ -9145,7 +9489,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "update_board_section", "summary": "Update Board section", "description": "### Update a board section definition.\n", @@ -9210,7 +9556,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "delete_board_section", "summary": "Delete Board section", "description": "### Delete a board section.\n", @@ -9255,7 +9603,9 @@ }, "/integration_hubs": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -9295,7 +9645,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -9362,7 +9714,9 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -9406,7 +9760,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -9472,7 +9828,9 @@ "x-looker-rate-limited": true }, "delete": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -9517,7 +9875,9 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -9562,7 +9922,9 @@ }, "/integrations": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -9611,7 +9973,9 @@ }, "/integrations/{integration_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -9655,7 +10019,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -9722,7 +10088,9 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -9779,7 +10147,9 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -9824,7 +10194,9 @@ }, "/internal_help_resources_content": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -9852,7 +10224,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -9905,7 +10279,9 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -9935,7 +10311,9 @@ }, "/internal_help_resources": { "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -9988,7 +10366,9 @@ }, "/ldap_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -10010,7 +10390,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -10057,7 +10439,9 @@ }, "/ldap_config/test_connection": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -10104,7 +10488,9 @@ }, "/ldap_config/test_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -10151,7 +10537,9 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -10198,7 +10586,9 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -10245,7 +10635,9 @@ }, "/legacy_features": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -10278,7 +10670,9 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -10315,7 +10709,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -10375,7 +10771,9 @@ }, "/locales": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -10408,7 +10806,9 @@ }, "/looks": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -10448,7 +10848,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -10514,7 +10916,9 @@ }, "/looks/search": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -10681,7 +11085,9 @@ }, "/looks/{look_id}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -10725,7 +11131,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -10790,7 +11198,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -10835,11 +11245,18 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "look_id", @@ -10981,7 +11398,9 @@ }, "/looks/{look_id}/copy": { "post": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "copy_look", "summary": "Copy Look", "description": "### Copy an existing look\n\nCreates a copy of an existing look, in a specified folder, and returns the copied look.\n\n`look_id` and `folder_id` are required.\n\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -11051,7 +11470,9 @@ }, "/looks/{look_id}/move": { "patch": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "move_look", "summary": "Move Look", "description": "### Move an existing look\n\nMoves a look to a specified folder, and returns the moved look.\n\n`look_id` and `folder_id` are required.\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -11115,7 +11536,9 @@ }, "/lookml_models": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -11171,7 +11594,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -11230,7 +11655,9 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -11274,7 +11701,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -11332,7 +11761,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -11377,7 +11808,9 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -11430,7 +11863,9 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -11476,7 +11911,9 @@ }, "/merge_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -11542,7 +11979,9 @@ }, "/models/{model_name}/views/{view_name}/fields/{field_name}/suggestions": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "model_fieldname_suggestions", "summary": "Model field name suggestions", "description": "### Field name suggestions for a model and view\n\n`filters` is a string hash of values, with the key as the field name and the string value as the filter expression:\n\n```ruby\n{'users.age': '>=60'}\n```\n\nor\n\n```ruby\n{'users.age': '<30'}\n```\n\nor\n\n```ruby\n{'users.age': '=50'}\n```\n", @@ -11612,7 +12051,9 @@ }, "/models/{model_name}": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "get_model", "summary": "Get a single model", "description": "### Get a single model\n\n", @@ -11651,7 +12092,9 @@ }, "/connections/{connection_name}/databases": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_databases", "summary": "List accessible databases to this connection", "description": "### List databases available to this connection\n\nCertain dialects can support multiple databases per single connection.\nIf this connection supports multiple databases, the database names will be returned in an array.\n\nConnections using dialects that do not support multiple databases will return an empty array.\n\n**Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports\nmultiple databases.\n", @@ -11699,7 +12142,9 @@ }, "/connections/{connection_name}/features": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_features", "summary": "Metadata features supported by this connection", "description": "### Retrieve metadata features for this connection\n\nReturns a list of feature names with `true` (available) or `false` (not available)\n\n", @@ -11758,7 +12203,9 @@ }, "/connections/{connection_name}/schemas": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_schemas", "summary": "Get schemas for a connection", "description": "### Get the list of schemas and tables for a connection\n\n", @@ -11833,7 +12280,9 @@ }, "/connections/{connection_name}/tables": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_tables", "summary": "Get tables for a connection", "description": "### Get the list of tables for a schema\n\nFor dialects that support multiple databases, optionally identify which to use. If not provided, the default\ndatabase for the connection will be used.\n\nFor dialects that do **not** support multiple databases, **do not use** the database parameter\n", @@ -11930,7 +12379,9 @@ }, "/connections/{connection_name}/columns": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_columns", "summary": "Get columns for a connection", "description": "### Get the columns (and therefore also the tables) in a specific schema\n\n", @@ -12027,7 +12478,9 @@ }, "/connections/{connection_name}/search_columns": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_search_columns", "summary": "Search a connection for columns", "description": "### Search a connection for columns matching the specified name\n\n**Note**: `column_name` must be a valid column name. It is not a search pattern.\n", @@ -12096,7 +12549,9 @@ }, "/connections/{connection_name}/cost_estimate": { "post": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_cost_estimate", "summary": "Estimate costs for a connection", "description": "### Connection cost estimating\n\nAssign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}`\n\n**Note**: If the connection's dialect has no support for cost estimates, an error will be returned\n", @@ -12164,7 +12619,9 @@ }, "/mobile/settings": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "mobile_settings", "summary": "Get Mobile_Settings", "description": "### Get all mobile settings.\n", @@ -12194,7 +12651,9 @@ }, "/mobile/device": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "register_mobile_device", "summary": "Register Mobile Device", "description": "### Registers a mobile device.\n# Required fields: [:device_token, :device_type]\n", @@ -12253,7 +12712,9 @@ }, "/mobile/device/{device_id}": { "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_mobile_device_registration", "summary": "Update Mobile Device Registration", "description": "### Updates the mobile device registration\n", @@ -12302,7 +12763,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "deregister_mobile_device", "summary": "Deregister Mobile Device", "description": "### Deregister a mobile device.\n", @@ -12344,7 +12807,9 @@ }, "/model_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -12444,7 +12909,9 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -12488,7 +12955,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -12531,7 +13000,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -12591,7 +13062,9 @@ }, "/model_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -12625,7 +13098,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -12678,7 +13153,9 @@ }, "/oauth_client_apps": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "all_oauth_client_apps", "summary": "Get All OAuth Client Apps", "description": "### List All OAuth Client Apps\n\nLists all applications registered to use OAuth2 login with this Looker instance, including\nenabled and disabled apps.\n\nResults are filtered to include only the apps that the caller (current user)\nhas permission to see.\n", @@ -12720,7 +13197,9 @@ }, "/oauth_client_apps/{client_guid}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oauth_client_app", "summary": "Get OAuth Client App", "description": "### Get Oauth Client App\n\nReturns the registered app client with matching client_guid.\n", @@ -12764,7 +13243,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_oauth_client_app", "summary": "Delete OAuth Client App", "description": "### Delete OAuth Client App\n\nDeletes the registration info of the app with the matching client_guid.\nAll active sessions and tokens issued for this app will immediately become invalid.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the\nindicated resource does not exist.\n\n### Note: this deletion cannot be undone.\n", @@ -12807,7 +13288,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "register_oauth_client_app", "summary": "Register OAuth App", "description": "### Register an OAuth2 Client App\n\nRegisters details identifying an external web app or native app as an OAuth2 login client of the Looker instance.\nThe app registration must provide a unique client_guid and redirect_uri that the app will present\nin OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match\nthe app details registered with the Looker instance, the request is assumed to be a forgery and is rejected.\n", @@ -12878,7 +13361,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_oauth_client_app", "summary": "Update OAuth App", "description": "### Update OAuth2 Client App Details\n\nModifies the details a previously registered OAuth2 login client app.\n", @@ -12945,7 +13430,9 @@ }, "/oauth_client_apps/{client_guid}/tokens": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "invalidate_tokens", "summary": "Invalidate Tokens", "description": "### Invalidate All Issued Tokens\n\nImmediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for\nthis app for ALL USERS of this app.\n", @@ -12990,7 +13477,9 @@ }, "/oauth_client_apps/{client_guid}/users/{user_id}": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "activate_app_user", "summary": "Activate OAuth App User", "description": "### Activate an app for a user\n\nActivates a user for a given oauth client app. This indicates the user has been informed that\nthe app will have access to the user's looker data, and that the user has accepted and allowed\nthe app to use their Looker account.\n\nActivating a user for an app that the user is already activated with returns a success response.\n", @@ -13056,7 +13545,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "deactivate_app_user", "summary": "Deactivate OAuth App User", "description": "### Deactivate an app for a user\n\nDeactivate a user for a given oauth client app. All tokens issued to the app for\nthis user will be invalid immediately. Before the user can use the app with their\nLooker account, the user will have to read and accept an account use disclosure statement for the app.\n\nAdmin users can deactivate other users, but non-admin users can only deactivate themselves.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the indicated\nresource (app or user) does not exist or has already been deactivated.\n", @@ -13115,7 +13606,9 @@ }, "/oidc_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -13137,7 +13630,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -13184,7 +13679,9 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -13215,7 +13712,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -13254,7 +13753,9 @@ }, "/oidc_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -13301,7 +13802,9 @@ }, "/password_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -13329,7 +13832,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -13382,7 +13887,9 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -13424,7 +13931,9 @@ }, "/permissions": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -13457,7 +13966,9 @@ }, "/permission_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -13557,7 +14068,9 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -13601,7 +14114,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -13650,7 +14165,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -13716,7 +14233,9 @@ }, "/permission_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -13756,7 +14275,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -13815,7 +14336,9 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -13883,7 +14406,9 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -13937,7 +14462,9 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -13991,7 +14518,9 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -14045,7 +14574,9 @@ }, "/projects": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -14085,7 +14616,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -14144,7 +14677,9 @@ }, "/projects/{project_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -14188,7 +14723,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -14267,7 +14804,9 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -14306,11 +14845,15 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", - "produces": ["text/plain"], + "produces": [ + "text/plain" + ], "parameters": [ { "name": "project_id", @@ -14362,11 +14905,15 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", - "produces": ["text/plain"], + "produces": [ + "text/plain" + ], "parameters": [ { "name": "project_id", @@ -14402,7 +14949,9 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -14458,7 +15007,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -14507,7 +15058,9 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -14553,7 +15106,9 @@ }, "/projects/{project_id}/files": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -14602,7 +15157,9 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -14655,7 +15212,9 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -14704,7 +15263,9 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -14776,7 +15337,9 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -14825,7 +15388,9 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -14900,7 +15465,9 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -14990,7 +15557,9 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15077,7 +15646,9 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15164,7 +15735,9 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15281,7 +15854,9 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15327,11 +15902,17 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", - "produces": ["image/jpeg", "image/png", "application/pdf"], + "produces": [ + "image/jpeg", + "image/png", + "application/pdf" + ], "parameters": [ { "name": "render_task_id", @@ -15370,7 +15951,9 @@ }, "/render_tasks/dashboard_elements/{dashboard_element_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_dashboard_element_render_task", "summary": "Create Dashboard Element Render Task", "description": "### Create a new task to render a dashboard element to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -15457,7 +16040,9 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -15528,7 +16113,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -15580,7 +16167,9 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -15622,7 +16211,9 @@ }, "/roles": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -15673,7 +16264,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -15732,7 +16325,9 @@ }, "/roles/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -15825,7 +16420,9 @@ }, "/roles/search/with_user_count": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_roles_with_user_count", "summary": "Search Roles with User Count", "description": "### Search roles include user count\n\nReturns all role records that match the given search criteria, and attaches\nassociated user counts.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -15918,7 +16515,9 @@ }, "/roles/{role_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -15955,7 +16554,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -16004,7 +16605,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -16070,7 +16673,9 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -16117,7 +16722,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -16183,7 +16790,9 @@ }, "/roles/{role_id}/users": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -16237,7 +16846,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -16315,7 +16926,9 @@ }, "/running_queries": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -16342,7 +16955,9 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -16387,7 +17002,9 @@ }, "/saml_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -16409,7 +17026,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -16456,7 +17075,9 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -16487,7 +17108,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -16526,7 +17149,9 @@ }, "/saml_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -16573,11 +17198,15 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", - "consumes": ["text/plain"], + "consumes": [ + "text/plain" + ], "parameters": [ { "name": "body", @@ -16615,11 +17244,15 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", - "consumes": ["text/plain"], + "consumes": [ + "text/plain" + ], "parameters": [ { "name": "body", @@ -16657,7 +17290,9 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -16706,7 +17341,9 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -16749,7 +17386,9 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -16807,7 +17446,9 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -16853,7 +17494,9 @@ }, "/scheduled_plans": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -16910,7 +17553,9 @@ "x-looker-activity-type": "db_query" }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -16972,7 +17617,9 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -17032,7 +17679,9 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17095,7 +17744,9 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17158,7 +17809,9 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -17221,7 +17874,9 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -17288,7 +17943,9 @@ }, "/session_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -17316,7 +17973,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -17369,7 +18028,9 @@ }, "/session": { "get": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -17397,7 +18058,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -17450,7 +18113,9 @@ }, "/setting": { "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "set_setting", "summary": "Set Setting", "description": "### Configure Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\nSee the `Setting` type for more information on the specific values that can be configured.\n", @@ -17514,7 +18179,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "get_setting", "summary": "Get Setting", "description": "### Get Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\n", @@ -17565,7 +18232,9 @@ }, "/smtp_settings": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -17628,7 +18297,9 @@ }, "/smtp_status": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "smtp_status", "summary": "Get SMTP Status", "description": "### Get current SMTP status.\n", @@ -17667,7 +18338,9 @@ }, "/folders/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -17792,7 +18465,9 @@ }, "/folders/{folder_id}": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -17836,7 +18511,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -17879,7 +18556,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -17939,7 +18618,9 @@ }, "/folders": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -17979,7 +18660,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -18038,7 +18721,9 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -18128,7 +18813,9 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -18191,7 +18878,9 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -18237,7 +18926,9 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -18286,7 +18977,9 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -18335,7 +19028,9 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -18384,7 +19079,9 @@ }, "/sql_queries/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -18423,7 +19120,9 @@ }, "/sql_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -18482,11 +19181,18 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", - "produces": ["text", "application/json", "image/png", "image/jpeg"], + "produces": [ + "text", + "application/json", + "image/png", + "image/jpeg" + ], "parameters": [ { "name": "slug", @@ -18548,7 +19254,9 @@ }, "/support_access/allowlist": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "get_support_access_allowlist_entries", "summary": "Get Support Access Allowlist Users", "description": "### Get Support Access Allowlist Users\n\nReturns the users that have been added to the Support Access Allowlist\n", @@ -18588,7 +19296,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "add_support_access_allowlist_entries", "summary": "Add Support Access Allowlist Users", "description": "### Add Support Access Allowlist Users\n\nAdds a list of emails to the Allowlist, using the provided reason\n", @@ -18644,7 +19354,9 @@ }, "/support_access/allowlist/{entry_id}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_support_access_allowlist_entry", "summary": "Delete Support Access Allowlist Entry", "description": "### Delete Support Access Allowlist User\n\nDeletes the specified Allowlist Entry Id\n", @@ -18689,7 +19401,9 @@ }, "/support_access/enable": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "enable_support_access", "summary": "Enable Support Access", "description": "### Enable Support Access\n\nEnables Support Access for the provided duration\n", @@ -18748,7 +19462,9 @@ }, "/support_access/disable": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "disable_support_access", "summary": "Disable Support Access", "description": "### Disable Support Access\n\nDisables Support Access immediately\n", @@ -18784,7 +19500,9 @@ }, "/support_access/status": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "support_access_status", "summary": "Support Access Status", "description": "### Support Access Status\n\nReturns the current Support Access Status\n", @@ -18814,7 +19532,9 @@ }, "/themes": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -18854,7 +19574,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -18913,7 +19635,9 @@ }, "/themes/search": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19015,7 +19739,9 @@ }, "/themes/default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -19053,7 +19779,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19104,7 +19832,9 @@ }, "/themes/active": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -19161,7 +19891,9 @@ }, "/themes/theme_or_default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19208,7 +19940,9 @@ }, "/themes/validate": { "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19273,7 +20007,9 @@ }, "/themes/{theme_id}": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19317,7 +20053,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19375,7 +20113,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -19420,7 +20160,9 @@ }, "/timezones": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -19453,7 +20195,9 @@ }, "/ssh_servers": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_ssh_servers", "summary": "Get All SSH Servers", "description": "### Get information about all SSH Servers.\n", @@ -19493,7 +20237,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_ssh_server", "summary": "Create SSH Server", "description": "### Create an SSH Server.\n", @@ -19552,7 +20298,9 @@ }, "/ssh_server/{ssh_server_id}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "ssh_server", "summary": "Get SSH Server", "description": "### Get information about an SSH Server.\n", @@ -19589,7 +20337,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_ssh_server", "summary": "Update SSH Server", "description": "### Update an SSH Server.\n", @@ -19647,7 +20397,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_ssh_server", "summary": "Delete SSH Server", "description": "### Delete an SSH Server.\n", @@ -19692,7 +20444,9 @@ }, "/ssh_server/{ssh_server_id}/test": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_ssh_server", "summary": "Test SSH Server", "description": "### Test the SSH Server\n", @@ -19731,7 +20485,9 @@ }, "/ssh_tunnels": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_ssh_tunnels", "summary": "Get All SSH Tunnels", "description": "### Get information about all SSH Tunnels.\n", @@ -19771,7 +20527,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_ssh_tunnel", "summary": "Create SSH Tunnel", "description": "### Create an SSH Tunnel\n", @@ -19830,7 +20588,9 @@ }, "/ssh_tunnel/{ssh_tunnel_id}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "ssh_tunnel", "summary": "Get SSH Tunnel", "description": "### Get information about an SSH Tunnel.\n", @@ -19867,7 +20627,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_ssh_tunnel", "summary": "Update SSH Tunnel", "description": "### Update an SSH Tunnel\n", @@ -19925,7 +20687,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_ssh_tunnel", "summary": "Delete SSH Tunnel", "description": "### Delete an SSH Tunnel\n", @@ -19970,7 +20734,9 @@ }, "/ssh_tunnel/{ssh_tunnel_id}/test": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_ssh_tunnel", "summary": "Test SSH Tunnel", "description": "### Test the SSH Tunnel\n", @@ -20009,7 +20775,9 @@ }, "/ssh_public_key": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "ssh_public_key", "summary": "Get SSH Public Key", "description": "### Get the SSH public key\n\nGet the public key created for this instance to identify itself to a remote SSH server.\n", @@ -20039,7 +20807,9 @@ }, "/user_attributes": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -20086,7 +20856,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -20152,7 +20924,9 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -20196,7 +20970,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -20261,7 +21037,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -20306,7 +21084,9 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -20353,7 +21133,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -20425,7 +21207,9 @@ }, "/user_login_lockouts": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -20467,7 +21251,9 @@ }, "/user_login_lockouts/search": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -20585,7 +21371,9 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -20630,7 +21418,9 @@ }, "/user": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -20663,7 +21453,9 @@ }, "/users": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -20755,7 +21547,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -20815,7 +21609,9 @@ }, "/users/search": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -20968,7 +21764,9 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -21100,7 +21898,9 @@ }, "/users/{user_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -21144,7 +21944,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -21203,7 +22005,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -21248,7 +22052,9 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -21301,7 +22107,9 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -21345,7 +22153,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -21416,7 +22226,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -21481,7 +22293,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -21526,7 +22340,9 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -21570,7 +22386,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -21641,7 +22459,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -21686,7 +22506,9 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -21730,7 +22552,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -21775,7 +22599,9 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -21819,7 +22645,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -21864,7 +22692,9 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -21908,7 +22738,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -21953,7 +22785,9 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -21997,7 +22831,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -22042,7 +22878,9 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -22093,7 +22931,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -22145,7 +22985,9 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -22192,7 +23034,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -22256,7 +23100,9 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -22307,7 +23153,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -22359,7 +23207,9 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -22408,7 +23258,9 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -22452,7 +23304,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -22497,7 +23351,9 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -22548,7 +23404,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -22600,7 +23458,9 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -22649,7 +23509,9 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -22702,7 +23564,9 @@ }, "/users/{user_id}/roles": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -22756,7 +23620,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -22817,7 +23683,9 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -22885,7 +23753,9 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -22944,7 +23814,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -22987,7 +23859,9 @@ }, "/users/{user_id}/credentials_email/send_password_reset": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "send_user_credentials_email_password_reset", "summary": "Send Password Reset Token", "description": "### Send a password reset token.\nThis will send a password reset email to the user. If a password reset token does not already exist\nfor this user, it will create one and then send it.\nIf the user has not yet set up their account, it will send a setup email to the user.\nThe URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object.\nPassword reset URLs will expire in 60 minutes.\nThis method can be called with an empty body.\n", @@ -23033,7 +23907,9 @@ }, "/users/{user_id}/update_emails": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "wipeout_user_emails", "summary": "Wipeout User Emails", "description": "### Change a disabled user's email addresses\n\nAllows the admin to change the email addresses for all the user's\nassociated credentials. Will overwrite all associated email addresses with\nthe value supplied in the 'email' body param.\nThe user's 'is_disabled' status must be true.\n", @@ -23106,7 +23982,9 @@ }, "/users/embed_user": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_embed_user", "summary": "Create an embed user from an external user ID", "description": "Create an embed user from an external user ID\n", @@ -23147,11 +24025,15 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", - "produces": ["image/svg+xml"], + "produces": [ + "image/svg+xml" + ], "parameters": [ { "name": "type", @@ -23202,7 +24084,9 @@ }, "/versions": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -23241,7 +24125,9 @@ }, "/api_spec/{api_version}/{specification}": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "api_spec", "summary": "Get an API specification", "description": "### Get an API specification for this Looker instance.\n\nThe specification is returned as a JSON document in Swagger 2.x format\n", @@ -23288,7 +24174,9 @@ }, "/whitelabel_configuration": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -23326,7 +24214,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -23380,7 +24270,9 @@ }, "/workspaces": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -23413,7 +24305,9 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -23469,7 +24363,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "DashboardBase": { "properties": { @@ -23863,7 +24760,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "ValidationErrorDetail": { "properties": { @@ -23894,7 +24794,9 @@ } }, "x-looker-status": "stable", - "required": ["documentation_url"] + "required": [ + "documentation_url" + ] }, "AccessToken": { "properties": { @@ -23946,7 +24848,10 @@ } }, "x-looker-status": "beta", - "required": ["field_name", "field_value"] + "required": [ + "field_name", + "field_value" + ] }, "AlertAppliedDashboardFilter": { "properties": { @@ -23973,7 +24878,11 @@ } }, "x-looker-status": "beta", - "required": ["filter_title", "field_name", "filter_value"] + "required": [ + "filter_title", + "field_name", + "filter_value" + ] }, "AlertField": { "properties": { @@ -23997,7 +24906,10 @@ } }, "x-looker-status": "beta", - "required": ["title", "name"] + "required": [ + "title", + "name" + ] }, "AlertConditionState": { "properties": { @@ -24109,7 +25021,9 @@ }, "investigative_content_type": { "type": "string", - "x-looker-values": ["dashboard"], + "x-looker-values": [ + "dashboard" + ], "description": "The type of the investigative content Valid values are: \"dashboard\".", "x-looker-nullable": true }, @@ -24208,7 +25122,9 @@ } }, "x-looker-status": "beta", - "required": ["alert_id"] + "required": [ + "alert_id" + ] }, "AlertNotifications": { "properties": { @@ -24268,7 +25184,10 @@ "properties": { "destination_type": { "type": "string", - "x-looker-values": ["EMAIL", "ACTION_HUB"], + "x-looker-values": [ + "EMAIL", + "ACTION_HUB" + ], "description": "Type of destination that the alert will be sent to Valid values are: \"EMAIL\", \"ACTION_HUB\".", "x-looker-nullable": false }, @@ -24289,7 +25208,9 @@ } }, "x-looker-status": "beta", - "required": ["destination_type"] + "required": [ + "destination_type" + ] }, "AlertPatch": { "properties": { @@ -24913,7 +25834,10 @@ "permission_type": { "type": "string", "readOnly": true, - "x-looker-values": ["view", "edit"], + "x-looker-values": [ + "view", + "edit" + ], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "x-looker-nullable": true }, @@ -25143,7 +26067,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "ContentValidationLook": { "properties": { @@ -25551,7 +26477,9 @@ } }, "x-looker-status": "stable", - "required": ["external_user_id"] + "required": [ + "external_user_id" + ] }, "CreateOAuthApplicationUserStateRequest": { "properties": { @@ -25606,7 +26534,10 @@ } }, "x-looker-status": "beta", - "required": ["user_id", "oauth_application_id"] + "required": [ + "user_id", + "oauth_application_id" + ] }, "CredentialsApi3": { "properties": { @@ -26719,7 +27650,12 @@ } }, "x-looker-status": "stable", - "required": ["dashboard_id", "name", "title", "type"] + "required": [ + "dashboard_id", + "name", + "title", + "type" + ] }, "DashboardLayoutComponent": { "properties": { @@ -27603,6 +28539,12 @@ "description": "(Read/Write) SQL Dialect name", "x-looker-nullable": true }, + "supports_data_studio_link": { + "type": "boolean", + "readOnly": true, + "description": "Database connection has the ability to support open data studio from explore", + "x-looker-nullable": false + }, "created_at": { "type": "string", "readOnly": true, @@ -28132,7 +29074,9 @@ } }, "x-looker-status": "beta", - "required": ["target_url"] + "required": [ + "target_url" + ] }, "EmbedSsoParams": { "properties": { @@ -28218,7 +29162,9 @@ } }, "x-looker-status": "stable", - "required": ["target_url"] + "required": [ + "target_url" + ] }, "EmbedSecret": { "properties": { @@ -28305,7 +29251,11 @@ }, "ssl_version": { "type": "string", - "x-looker-values": ["TLSv1_1", "SSLv23", "TLSv1_2"], + "x-looker-values": [ + "TLSv1_1", + "SSLv23", + "TLSv1_2" + ], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "x-looker-nullable": true } @@ -28463,7 +29413,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "CreateFolder": { "properties": { @@ -28479,7 +29431,10 @@ } }, "x-looker-status": "stable", - "required": ["name", "parent_id"] + "required": [ + "name", + "parent_id" + ] }, "UpdateFolder": { "properties": { @@ -28617,7 +29572,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "GitBranch": { "properties": { @@ -29229,7 +30186,12 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["cell", "query", "dashboard", "none"], + "x-looker-values": [ + "cell", + "query", + "dashboard", + "none" + ], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "x-looker-nullable": false }, @@ -29239,7 +30201,10 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["formatted", "unformatted"], + "x-looker-values": [ + "formatted", + "unformatted" + ], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "x-looker-nullable": false }, @@ -29249,7 +30214,10 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["apply", "noapply"], + "x-looker-values": [ + "apply", + "noapply" + ], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "x-looker-nullable": false }, @@ -29259,7 +30227,10 @@ "type": "string" }, "readOnly": true, - "x-looker-values": ["push", "url"], + "x-looker-values": [ + "push", + "url" + ], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "x-looker-nullable": false }, @@ -31284,7 +32255,10 @@ "align": { "type": "string", "readOnly": true, - "x-looker-values": ["left", "right"], + "x-looker-values": [ + "left", + "right" + ], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "x-looker-nullable": false }, @@ -31297,7 +32271,12 @@ "category": { "type": "string", "readOnly": true, - "x-looker-values": ["parameter", "filter", "measure", "dimension"], + "x-looker-values": [ + "parameter", + "filter", + "measure", + "dimension" + ], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "x-looker-nullable": true }, @@ -31349,7 +32328,10 @@ "fill_style": { "type": "string", "readOnly": true, - "x-looker-values": ["enumeration", "range"], + "x-looker-values": [ + "enumeration", + "range" + ], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "x-looker-nullable": true }, @@ -31783,7 +32765,10 @@ "format": { "type": "string", "readOnly": true, - "x-looker-values": ["topojson", "vector_tile_region"], + "x-looker-values": [ + "topojson", + "vector_tile_region" + ], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "x-looker-nullable": false }, @@ -32296,13 +33281,19 @@ }, "device_type": { "type": "string", - "x-looker-values": ["android", "ios"], + "x-looker-values": [ + "android", + "ios" + ], "description": "Specifies type of device. Valid values are: \"android\", \"ios\".", "x-looker-nullable": false } }, "x-looker-status": "beta", - "required": ["device_token", "device_type"] + "required": [ + "device_token", + "device_type" + ] }, "ModelSet": { "properties": { @@ -33023,7 +34014,12 @@ }, "pull_request_mode": { "type": "string", - "x-looker-values": ["off", "links", "recommended", "required"], + "x-looker-values": [ + "off", + "links", + "recommended", + "required" + ], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "x-looker-nullable": false }, @@ -33465,7 +34461,10 @@ } }, "x-looker-status": "stable", - "required": ["model", "view"] + "required": [ + "model", + "view" + ] }, "CreateQueryTask": { "properties": { @@ -33522,7 +34521,10 @@ } }, "x-looker-status": "stable", - "required": ["query_id", "result_format"] + "required": [ + "query_id", + "result_format" + ] }, "QueryTask": { "properties": { @@ -36051,7 +37053,9 @@ } }, "x-looker-status": "beta", - "required": ["duration_in_seconds"] + "required": [ + "duration_in_seconds" + ] }, "SupportAccessStatus": { "properties": { @@ -36297,7 +37301,11 @@ } }, "x-looker-status": "stable", - "required": ["name", "label", "type"] + "required": [ + "name", + "label", + "type" + ] }, "UserAttributeGroupValue": { "properties": { @@ -36433,7 +37441,9 @@ } }, "x-looker-status": "stable", - "required": ["email"] + "required": [ + "email" + ] }, "UserLoginLockout": { "properties": { @@ -37087,4 +38097,4 @@ "x-looker-status": "stable" } } -} +} \ No newline at end of file diff --git a/spec/Looker.4.0.oas.json b/spec/Looker.4.0.oas.json index 032364303..f174af348 100644 --- a/spec/Looker.4.0.oas.json +++ b/spec/Looker.4.0.oas.json @@ -1,8 +1,8 @@ { "openapi": "3.0.0", "info": { - "version": "4.0.22.12", - "x-looker-release-version": "22.12.83", + "version": "4.0.22.14", + "x-looker-release-version": "22.14.71", "title": "Looker API 4.0 Reference", "description": "\nAPI 4.0 is the current release of the Looker API. API 3.1 is deprecated.\n\n### Authorization\n\nThe classic method of API authorization uses Looker **API3** credentials for authorization and access control.\nLooker admins can create API3 credentials on Looker's **Admin/Users** page.\n\nAPI 4.0 adds additional ways to authenticate API requests, including OAuth and CORS requests.\n\nFor details, see [Looker API Authorization](https://docs.looker.com/r/api/authorization).\n\n\n### API Explorer\n\nThe API Explorer is a Looker-provided utility with many new and unique features for learning and using the Looker API and SDKs.\n\nFor details, see the [API Explorer documentation](https://docs.looker.com/r/api/explorer).\n\n\n### Looker Language SDKs\n\nThe Looker API is a RESTful system that should be usable by any programming language capable of making\nHTTPS requests. SDKs for a variety of programming languages are also provided to streamline using the API. Looker\nhas an OpenSource [sdk-codegen project](https://github.com/looker-open-source/sdk-codegen) that provides several\nlanguage SDKs. Language SDKs generated by `sdk-codegen` have an Authentication manager that can automatically\nauthenticate API requests when needed.\n\nFor details on available Looker SDKs, see [Looker API Client SDKs](https://docs.looker.com/r/api/client_sdks).\n\n\n### API Versioning\n\nFuture releases of Looker expand the latest API version release-by-release to securely expose more and more of the core\npower of the Looker platform to API client applications. API endpoints marked as \"beta\" may receive breaking changes without\nwarning (but we will try to avoid doing that). Stable (non-beta) API endpoints should not receive breaking\nchanges in future releases.\n\nFor details, see [Looker API Versioning](https://docs.looker.com/r/api/versioning).\n\n\n### In This Release\n\nAPI 4.0 version was introduced to make adjustments to API functions, parameters, and response types to\nfix bugs and inconsistencies. These changes fall outside the bounds of non-breaking additive changes we can\nmake to the previous API 3.1.\n\nOne benefit of these type adjustments in API 4.0 is dramatically better support for strongly\ntyped languages like TypeScript, Kotlin, Swift, Go, C#, and more.\n\nSee the [API 4.0 GA announcement](https://developers.looker.com/api/advanced-usage/version-4-ga) for more information\nabout API 4.0.\n\nThe API Explorer can be used to [interactively compare](https://docs.looker.com/r/api/explorer#comparing_api_versions) the differences between API 3.1 and 4.0.\n\n\n### API and SDK Support Policies\n\nLooker API versions and language SDKs have varying support levels. Please read the API and SDK\n[support policies](https://docs.looker.com/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -135,7 +135,9 @@ "paths": { "/query_tasks": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query_task", "summary": "Run Query Async", "description": "### Create an async query task\n\nCreates a query task (job) to run a previously created query asynchronously. Returns a Query Task ID.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task.\nAfter the query task status reaches \"Complete\", use [query_task_results(query_task_id)](#!/Query/query_task_results) to fetch the results of the query.\n", @@ -342,7 +344,9 @@ }, "/query_tasks/multi_results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_multi_results", "summary": "Get Multiple Async Query Results", "description": "### Fetch results of multiple async queries\n\nReturns the results of multiple async queries in one request.\n\nFor Query Tasks that are not completed, the response will include the execution status of the Query Task but will not include query results.\nQuery Tasks whose results have expired will have a status of 'expired'.\nIf the user making the API request does not have sufficient privileges to view a Query Task result, the result will have a status of 'missing'\n", @@ -404,7 +408,9 @@ }, "/query_tasks/{query_task_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task", "summary": "Get Async Query Info", "description": "### Get Query Task details\n\nUse this function to check the status of an async query task. After the status\nreaches \"Complete\", you can call [query_task_results(query_task_id)](#!/Query/query_task_results) to\nretrieve the results of the query.\n\nUse [create_query_task()](#!/Query/create_query_task) to create an async query task.\n", @@ -466,7 +472,9 @@ }, "/query_tasks/{query_task_id}/results": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_task_results", "summary": "Get Async Query Results", "description": "### Get Async Query Results\n\nReturns the results of an async query task if the query has completed.\n\nIf the query task is still running or waiting to run, this function returns 204 No Content.\n\nIf the query task ID is invalid or the cached results of the query task have expired, this function returns 404 Not Found.\n\nUse [query_task(query_task_id)](#!/Query/query_task) to check the execution status of the query task\nCall query_task_results only after the query task status reaches \"Complete\".\n\nYou can also use [query_task_multi_results()](#!/Query/query_task_multi_results) retrieve the\nresults of multiple async query tasks at the same time.\n\n#### SQL Error Handling:\nIf the query fails due to a SQL db error, how this is communicated depends on the result_format you requested in `create_query_task()`.\n\nFor `json_detail` result_format: `query_task_results()` will respond with HTTP status '200 OK' and db SQL error info\nwill be in the `errors` property of the response object. The 'data' property will be empty.\n\nFor all other result formats: `query_task_results()` will respond with HTTP status `400 Bad Request` and some db SQL error info\nwill be in the message of the 400 error response, but not as detailed as expressed in `json_detail.errors`.\nThese data formats can only carry row data, and error info is not row data.\n", @@ -549,7 +557,9 @@ }, "/queries/{query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query", "summary": "Get Query", "description": "### Get a previously created query by id.\n\nA Looker query object includes the various parameters that define a database query that has been run or\ncould be run in the future. These parameters include: model, view, fields, filters, pivots, etc.\nQuery *results* are not part of the query object.\n\nQuery objects are unique and immutable. Query objects are created automatically in Looker as users explore data.\nLooker does not delete them; they become part of the query history. When asked to create a query for\nany given set of parameters, Looker will first try to find an existing query object with matching\nparameters and will only create a new object when an appropriate object can not be found.\n\nThis 'get' method is used to get the details about a query for a given id. See the other methods here\nto 'create' and 'run' queries.\n\nNote that some fields like 'filter_config' and 'vis_config' etc are specific to how the Looker UI\nbuilds queries and visualizations and are not generally useful for API use. They are not required when\ncreating new queries and can usually just be ignored.\n\n", @@ -611,7 +621,9 @@ }, "/queries/slug/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "query_for_slug", "summary": "Get Query for Slug", "description": "### Get the query for a given query slug.\n\nThis returns the query for the 'slug' in a query share URL.\n\nThe 'slug' is a randomly chosen short string that is used as an alternative to the query's id value\nfor use in URLs etc. This method exists as a convenience to help you use the API to 'find' queries that\nhave been created using the Looker UI.\n\nYou can use the Looker explore page to build a query and then choose the 'Share' option to\nshow the share url for the query. Share urls generally look something like 'https://looker.yourcompany/x/vwGSbfc'.\nThe trailing 'vwGSbfc' is the share slug. You can pass that string to this api method to get details about the query.\nThose details include the 'id' that you can use to run the query. Or, you can copy the query body\n(perhaps with your own modification) and use that as the basis to make/run new queries.\n\nThis will also work with slugs from Looker explore urls like\n'https://looker.yourcompany/explore/ecommerce/orders?qid=aogBgL6o3cKK1jN3RoZl5s'. In this case\n'aogBgL6o3cKK1jN3RoZl5s' is the slug.\n", @@ -673,7 +685,9 @@ }, "/queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_query", "summary": "Create Query", "description": "### Create a query.\n\nThis allows you to create a new query that you can later run. Looker queries are immutable once created\nand are not deleted. If you create a query that is exactly like an existing query then the existing query\nwill be returned and no new query will be created. Whether a new query is created or not, you can use\nthe 'id' in the returned query with the 'run' method.\n\nThe query parameters are passed as json in the body of the request.\n\n", @@ -767,7 +781,9 @@ }, "/queries/{query_id}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_query", "summary": "Run Query", "description": "### Run a saved query.\n\nThis runs a previously saved query. You can use this on a query that was generated in the Looker UI\nor one that you have explicitly created using the API. You can also use a query 'id' from a saved 'Look'.\n\nThe 'result_format' parameter specifies the desired structure and format of the response.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1044,7 +1060,9 @@ }, "/queries/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_inline_query", "summary": "Run Inline Query", "description": "### Run the query that is specified inline in the posted body.\n\nThis allows running a query as defined in json in the posted body. This combines\nthe two actions of posting & running a query into one step.\n\nHere is an example body in json:\n```\n{\n \"model\":\"thelook\",\n \"view\":\"inventory_items\",\n \"fields\":[\"category.name\",\"inventory_items.days_in_inventory_tier\",\"products.count\"],\n \"filters\":{\"category.name\":\"socks\"},\n \"sorts\":[\"products.count desc 0\"],\n \"limit\":\"500\",\n \"query_timezone\":\"America/Los_Angeles\"\n}\n```\n\nWhen using the Ruby SDK this would be passed as a Ruby hash like:\n```\n{\n :model=>\"thelook\",\n :view=>\"inventory_items\",\n :fields=>\n [\"category.name\",\n \"inventory_items.days_in_inventory_tier\",\n \"products.count\"],\n :filters=>{:\"category.name\"=>\"socks\"},\n :sorts=>[\"products.count desc 0\"],\n :limit=>\"500\",\n :query_timezone=>\"America/Los_Angeles\",\n}\n```\n\nThis will return the result of running the query in the format specified by the 'result_format' parameter.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1314,7 +1332,9 @@ }, "/queries/models/{model_name}/views/{view_name}/run/{result_format}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_url_encoded_query", "summary": "Run Url Encoded Query", "description": "### Run an URL encoded query.\n\nThis requires the caller to encode the specifiers for the query into the URL query part using\nLooker-specific syntax as explained below.\n\nGenerally, you would want to use one of the methods that takes the parameters as json in the POST body\nfor creating and/or running queries. This method exists for cases where one really needs to encode the\nparameters into the URL of a single 'GET' request. This matches the way that the Looker UI formats\n'explore' URLs etc.\n\nThe parameters here are very similar to the json body formatting except that the filter syntax is\ntricky. Unfortunately, this format makes this method not currently callable via the 'Try it out!' button\nin this documentation page. But, this is callable when creating URLs manually or when using the Looker SDK.\n\nHere is an example inline query URL:\n\n```\nhttps://looker.mycompany.com:19999/api/3.0/queries/models/thelook/views/inventory_items/run/json?fields=category.name,inventory_items.days_in_inventory_tier,products.count&f[category.name]=socks&sorts=products.count+desc+0&limit=500&query_timezone=America/Los_Angeles\n```\n\nWhen invoking this endpoint with the Ruby SDK, pass the query parameter parts as a hash. The hash to match the above would look like:\n\n```ruby\nquery_params =\n{\n fields: \"category.name,inventory_items.days_in_inventory_tier,products.count\",\n :\"f[category.name]\" => \"socks\",\n sorts: \"products.count desc 0\",\n limit: \"500\",\n query_timezone: \"America/Los_Angeles\"\n}\nresponse = ruby_sdk.run_url_encoded_query('thelook','inventory_items','json', query_params)\n\n```\n\nAgain, it is generally easier to use the variant of this method that passes the full query in the POST body.\nThis method is available for cases where other alternatives won't fit the need.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -1480,7 +1500,9 @@ }, "/login": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login", "summary": "Login", "description": "### Present client credentials to obtain an authorization token\n\nLooker API implements the OAuth2 [Resource Owner Password Credentials Grant](https://docs.looker.com/r/api/outh2_resource_owner_pc) pattern.\nThe client credentials required for this login must be obtained by creating an API3 key on a user account\nin the Looker Admin console. The API3 key consists of a public `client_id` and a private `client_secret`.\n\nThe access token returned by `login` must be used in the HTTP Authorization header of subsequent\nAPI requests, like this:\n```\nAuthorization: token 4QDkCyCtZzYgj4C2p2cj3csJH7zqS5RzKs2kTnG4\n```\nReplace \"4QDkCy...\" with the `access_token` value returned by `login`.\nThe word `token` is a string literal and must be included exactly as shown.\n\nThis function can accept `client_id` and `client_secret` parameters as URL query params or as www-form-urlencoded params in the body of the HTTP request. Since there is a small risk that URL parameters may be visible to intermediate nodes on the network route (proxies, routers, etc), passing credentials in the body of the request is considered more secure than URL params.\n\nExample of passing credentials in the HTTP request body:\n````\nPOST HTTP /login\nContent-Type: application/x-www-form-urlencoded\n\nclient_id=CGc9B7v7J48dQSJvxxx&client_secret=nNVS9cSS3xNpSC9JdsBvvvvv\n````\n\n### Best Practice:\nAlways pass credentials in body params. Pass credentials in URL query params **only** when you cannot pass body params due to application, tool, or other limitations.\n\nFor more information and detailed examples of Looker API authorization, see [How to Authenticate to Looker API3](https://github.com/looker/looker-sdk-ruby/blob/master/authentication.md).\n", @@ -1542,7 +1564,9 @@ }, "/login/{user_id}": { "post": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "login_user", "summary": "Login user", "description": "### Create an access token that runs as a given user.\n\nThis can only be called by an authenticated admin user. It allows that admin to generate a new\nauthentication token for the user with the given user id. That token can then be used for subsequent\nAPI calls - which are then performed *as* that target user.\n\nThe target user does *not* need to have a pre-existing API client_id/client_secret pair. And, no such\ncredentials are created by this call.\n\nThis allows for building systems where api user authentication for an arbitrary number of users is done\noutside of Looker and funneled through a single 'service account' with admin permissions. Note that a\nnew access token is generated on each call. If target users are going to be making numerous API\ncalls in a short period then it is wise to cache this authentication token rather than call this before\neach of those API calls.\n\nSee 'login' for more detail on the access token and how to use it.\n", @@ -1604,7 +1628,9 @@ }, "/logout": { "delete": { - "tags": ["ApiAuth"], + "tags": [ + "ApiAuth" + ], "operationId": "logout", "summary": "Logout", "description": "### Logout of the API and invalidate the current access token.\n", @@ -1646,7 +1672,9 @@ }, "/alerts/{alert_id}/follow": { "post": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "follow_alert", "summary": "Follow an alert", "description": "Follow an alert.", @@ -1690,7 +1718,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "unfollow_alert", "summary": "Unfollow an alert", "description": "Unfollow an alert.", @@ -1746,7 +1776,9 @@ }, "/alerts/search": { "get": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "search_alerts", "summary": "Search Alerts", "description": "### Search Alerts\n", @@ -1895,7 +1927,9 @@ }, "/alerts/{alert_id}": { "get": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "get_alert", "summary": "Get an alert", "description": "### Get an alert by a given alert ID\n", @@ -1946,7 +1980,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "update_alert_field", "summary": "Update select fields on an alert", "description": "### Update select alert fields\n# Available fields: `owner_id`, `is_disabled`, `disabled_reason`, `is_public`, `threshold`\n#\n", @@ -2038,7 +2074,9 @@ } }, "put": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "update_alert", "summary": "Update an alert", "description": "### Update an alert\n# Required fields: `owner_id`, `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n#\n", @@ -2120,7 +2158,9 @@ } }, "delete": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "delete_alert", "summary": "Delete an alert", "description": "### Delete an alert by a given alert ID\n", @@ -2186,7 +2226,9 @@ }, "/alerts": { "post": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "create_alert", "summary": "Create an alert", "description": "### Create a new alert and return details of the newly created object\n\nRequired fields: `field`, `destinations`, `comparison_type`, `threshold`, `cron`\n\nExample Request:\nRun alert on dashboard element '103' at 5am every day. Send an email to 'test@test.com' if inventory for Los Angeles (using dashboard filter `Warehouse Name`) is lower than 1,000\n```\n{\n \"cron\": \"0 5 * * *\",\n \"custom_title\": \"Alert when LA inventory is low\",\n \"dashboard_element_id\": 103,\n \"applied_dashboard_filters\": [\n {\n \"filter_title\": \"Warehouse Name\",\n \"field_name\": \"distribution_centers.name\",\n \"filter_value\": \"Los Angeles CA\",\n \"filter_description\": \"is Los Angeles CA\"\n }\n ],\n \"comparison_type\": \"LESS_THAN\",\n \"destinations\": [\n {\n \"destination_type\": \"EMAIL\",\n \"email_address\": \"test@test.com\"\n }\n ],\n \"field\": {\n \"title\": \"Number on Hand\",\n \"name\": \"inventory_items.number_on_hand\"\n },\n \"is_disabled\": false,\n \"is_public\": true,\n \"threshold\": 1000\n}\n```\n", @@ -2279,7 +2321,9 @@ }, "/alerts/{alert_id}/enqueue": { "post": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "enqueue_alert", "summary": "Enqueue an alert", "description": "### Enqueue an Alert by ID\n", @@ -2355,7 +2399,9 @@ }, "/alert_notifications": { "get": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "alert_notifications", "summary": "Alert Notifications", "description": "# Alert Notifications.\n The endpoint returns all the alert notifications received by the user on email in the past 7 days. It also returns whether the notifications have been read by the user.\n\n", @@ -2422,7 +2468,9 @@ }, "/alert_notifications/{alert_notification_id}": { "patch": { - "tags": ["Alert"], + "tags": [ + "Alert" + ], "operationId": "read_alert_notification", "summary": "Read a Notification", "description": "# Reads a Notification\n The endpoint marks a given alert notification as read by the user, in case it wasn't already read. The AlertNotification model is updated for this purpose. It returns the notification as a response.\n", @@ -2495,7 +2543,9 @@ }, "/cloud_storage": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "cloud_storage_configuration", "summary": "Get Cloud Storage", "description": "Get the current Cloud Storage Configuration.\n", @@ -2535,7 +2585,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_cloud_storage_configuration", "summary": "Update Cloud Storage", "description": "Update the current Cloud Storage Configuration.\n", @@ -2598,7 +2650,9 @@ }, "/color_collections": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "all_color_collections", "summary": "Get all Color Collections", "description": "### Get an array of all existing Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2652,7 +2706,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "create_color_collection", "summary": "Create ColorCollection", "description": "### Create a custom color collection with the specified information\n\nCreates a new custom color collection object, returning the details, including the created id.\n\n**Update** an existing color collection with [Update Color Collection](#!/ColorCollection/update_color_collection)\n\n**Permanently delete** an existing custom color collection with [Delete Color Collection](#!/ColorCollection/delete_color_collection)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2745,7 +2801,9 @@ }, "/color_collections/custom": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_custom", "summary": "Get all Custom Color Collections", "description": "### Get an array of all existing **Custom** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2801,7 +2859,9 @@ }, "/color_collections/standard": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collections_standard", "summary": "Get all Standard Color Collections", "description": "### Get an array of all existing **Standard** Color Collections\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2857,7 +2917,9 @@ }, "/color_collections/default": { "put": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "set_default_color_collection", "summary": "Set Default Color Collection", "description": "### Set the global default Color Collection by ID\n\nReturns the new specified default Color Collection object.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -2928,7 +2990,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "default_color_collection", "summary": "Get Default Color Collection", "description": "### Get the default color collection\n\nUse this to retrieve the default Color Collection.\n\nSet the default color collection with [ColorCollection](#!/ColorCollection/set_default_color_collection)\n", @@ -2970,7 +3034,9 @@ }, "/color_collections/{collection_id}": { "get": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "color_collection", "summary": "Get Color Collection by ID", "description": "### Get a Color Collection by ID\n\nUse this to retrieve a specific Color Collection.\nGet a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection)\n\nGet all **standard** color collections with [ColorCollection](#!/ColorCollection/color_collections_standard)\n\nGet all **custom** color collections with [ColorCollection](#!/ColorCollection/color_collections_custom)\n\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -3030,7 +3096,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "update_color_collection", "summary": "Update Custom Color collection", "description": "### Update a custom color collection by id.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -3122,7 +3190,9 @@ } }, "delete": { - "tags": ["ColorCollection"], + "tags": [ + "ColorCollection" + ], "operationId": "delete_color_collection", "summary": "Delete ColorCollection", "description": "### Delete a custom color collection by id\n\nThis operation permanently deletes the identified **Custom** color collection.\n\n**Standard** color collections cannot be deleted\n\nBecause multiple color collections can have the same label, they must be deleted by ID, not name.\n**Note**: Only an API user with the Admin role can call this endpoint. Unauthorized requests will return `Not Found` (404) errors.\n\n", @@ -3198,7 +3268,9 @@ }, "/content_favorite/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_favorites", "summary": "Search Favorite Contents", "description": "### Search Favorite Content\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -3346,7 +3418,9 @@ }, "/content_favorite/{content_favorite_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_favorite", "summary": "Get Favorite Content", "description": "### Get favorite content by its id", @@ -3406,7 +3480,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_favorite", "summary": "Delete Favorite Content", "description": "### Delete favorite content", @@ -3469,7 +3545,9 @@ }, "/content_favorite": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_favorite", "summary": "Create Favorite Content", "description": "### Create favorite content", @@ -3552,7 +3630,9 @@ }, "/content_metadata": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadatas", "summary": "Get All Content Metadatas", "description": "### Get information about all content metadata in a space.\n", @@ -3617,7 +3697,9 @@ }, "/content_metadata/{content_metadata_id}": { "patch": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata", "summary": "Update Content Metadata", "description": "### Move a piece of content.\n", @@ -3699,7 +3781,9 @@ } }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_metadata", "summary": "Get Content Metadata", "description": "### Get information about an individual content metadata record.\n", @@ -3761,7 +3845,9 @@ }, "/content_metadata_access": { "post": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "create_content_metadata_access", "summary": "Create Content Metadata Access", "description": "### Create content metadata access.\n", @@ -3854,7 +3940,9 @@ } }, "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "all_content_metadata_accesses", "summary": "Get All Content Metadata Accesses", "description": "### All content metadata access records for a content metadata item.\n", @@ -3919,7 +4007,9 @@ }, "/content_metadata_access/{content_metadata_access_id}": { "put": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "update_content_metadata_access", "summary": "Update Content Metadata Access", "description": "### Update type of access for content metadata.\n", @@ -4001,7 +4091,9 @@ } }, "delete": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "delete_content_metadata_access", "summary": "Delete Content Metadata Access", "description": "### Remove content metadata access.\n", @@ -4064,7 +4156,9 @@ }, "/content_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_thumbnail", "summary": "Get Content Thumbnail", "description": "### Get an image representing the contents of a dashboard or look.\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -4179,7 +4273,9 @@ }, "/content_validation": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "content_validation", "summary": "Validate Content", "description": "### Validate All Content\n\nPerforms validation of all looks and dashboards\nReturns a list of errors found as well as metadata about the content validation run.\n", @@ -4252,7 +4348,9 @@ }, "/content_view/search": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "search_content_views", "summary": "Search Content Views", "description": "### Search Content Views\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4418,7 +4516,9 @@ }, "/credentials_email/search": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_credentials_email", "summary": "Search CredentialsEmail", "description": "### Search email credentials\n\nReturns all credentials_email records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -4539,7 +4639,9 @@ }, "/custom_welcome_email": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "custom_welcome_email", "summary": "Get Custom Welcome Email", "description": "### Get the current status and content of custom welcome emails\n", @@ -4580,7 +4682,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email", "summary": "Update Custom Welcome Email Content", "description": "Update custom welcome email setting and values. Optionally send a test email with the new content to the currently logged in user.\n", @@ -4665,7 +4769,9 @@ }, "/custom_welcome_email_test": { "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_custom_welcome_email_test", "summary": "Send a test welcome email to the currently logged in user with the supplied content ", "description": "Requests to this endpoint will send a welcome email with the custom content provided in the body to the currently logged in user.\n", @@ -4738,7 +4844,9 @@ }, "/dashboards": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "all_dashboards", "summary": "Get All Dashboards", "description": "### Get information about all active dashboards.\n\nReturns an array of **abbreviated dashboard objects**. Dashboards marked as deleted are excluded from this list.\n\nGet the **full details** of a specific dashboard by id with [dashboard()](#!/Dashboard/dashboard)\n\nFind **deleted dashboards** with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -4792,7 +4900,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard", "summary": "Create Dashboard", "description": "### Create a new dashboard\n\nCreates a new dashboard object and returns the details of the newly created dashboard.\n\n`Title` and `space_id` are required fields.\n`Space_id` must contain the id of an existing space.\nA dashboard's `title` must be unique within the space in which it resides.\n\nIf you receive a 422 error response when creating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n\nYou can **update** an existing dashboard with [update_dashboard()](#!/Dashboard/update_dashboard)\n\nYou can **permanently delete** an existing dashboard with [delete_dashboard()](#!/Dashboard/delete_dashboard)\n", @@ -4875,7 +4985,9 @@ }, "/dashboards/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboards", "summary": "Search Dashboards", "description": "### Search Dashboards\n\nReturns an **array of dashboard objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nThe parameters `limit`, and `offset` are recommended for fetching results in page-size chunks.\n\nGet a **single dashboard** by id with [dashboard()](#!/Dashboard/dashboard)\n", @@ -5099,7 +5211,9 @@ }, "/dashboards/{lookml_dashboard_id}/import/{space_id}": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "import_lookml_dashboard", "summary": "Import LookML Dashboard", "description": "### Import a LookML dashboard to a space as a UDD\nCreates a UDD (a dashboard which exists in the Looker database rather than as a LookML file) from the LookML dashboard\nand places it in the space specified. The created UDD will have a lookml_link_id which links to the original LookML dashboard.\n\nTo give the imported dashboard specify a (e.g. title: \"my title\") in the body of your request, otherwise the imported\ndashboard will have the same title as the original LookML dashboard.\n\nFor this operation to succeed the user must have permission to see the LookML dashboard in question, and have permission to\ncreate content in the space the dashboard is being imported to.\n\n**Sync** a linked UDD with [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard)\n**Unlink** a linked UDD by setting lookml_link_id to null with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -5221,7 +5335,9 @@ }, "/dashboards/{lookml_dashboard_id}/sync": { "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "sync_lookml_dashboard", "summary": "Sync LookML Dashboard", "description": "### Update all linked dashboards to match the specified LookML dashboard.\n\nAny UDD (a dashboard which exists in the Looker database rather than as a LookML file) which has a `lookml_link_id`\nproperty value referring to a LookML dashboard's id (model::dashboardname) will be updated so that it matches the current state of the LookML dashboard.\n\nFor this operation to succeed the user must have permission to view the LookML dashboard, and only linked dashboards\nthat the user has permission to update will be synced.\n\nTo **link** or **unlink** a UDD set the `lookml_link_id` property with [update_dashboard()](#!/Dashboard/update_dashboard)\n", @@ -5318,7 +5434,9 @@ }, "/dashboards/{dashboard_id}": { "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard", "summary": "Delete Dashboard", "description": "### Delete the dashboard with the specified id\n\nPermanently **deletes** a dashboard. (The dashboard cannot be recovered after this operation.)\n\n\"Soft\" delete or hide a dashboard by setting its `deleted` status to `True` with [update_dashboard()](#!/Dashboard/update_dashboard).\n\nNote: When a dashboard is deleted in the UI, it is soft deleted. Use this API call to permanently remove it, if desired.\n", @@ -5389,7 +5507,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard", "summary": "Update Dashboard", "description": "### Update a dashboard\n\nYou can use this function to change the string and integer properties of\na dashboard. Nested objects such as filters, dashboard elements, or dashboard layout components\ncannot be modified by this function - use the update functions for the respective\nnested object types (like [update_dashboard_filter()](#!/3.1/Dashboard/update_dashboard_filter) to change a filter)\nto modify nested objects referenced by a dashboard.\n\nIf you receive a 422 error response when updating a dashboard, be sure to look at the\nresponse body for information about exactly which fields are missing or contain invalid data.\n", @@ -5481,7 +5601,9 @@ } }, "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard", "summary": "Get Dashboard", "description": "### Get information about a dashboard\n\nReturns the full details of the identified dashboard object\n\nGet a **summary list** of all active dashboards with [all_dashboards()](#!/Dashboard/all_dashboards)\n\nYou can **Search** for dashboards with [search_dashboards()](#!/Dashboard/search_dashboards)\n", @@ -5543,7 +5665,9 @@ }, "/dashboards/aggregate_table_lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_aggregate_table_lookml", "summary": "Get Aggregate Table LookML for a dashboard", "description": "### Get Aggregate Table LookML for Each Query on a Dahboard\n\nReturns a JSON object that contains the dashboard id and Aggregate Table lookml\n\n", @@ -5596,7 +5720,9 @@ }, "/dashboards/lookml/{dashboard_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_lookml", "summary": "Get lookml of a UDD", "description": "### Get lookml of a UDD\n\nReturns a JSON object that contains the dashboard id and the full lookml\n\n", @@ -5649,7 +5775,9 @@ }, "/dashboards/{dashboard_id}/move": { "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "move_dashboard", "summary": "Move Dashboard", "description": "### Move an existing dashboard\n\nMoves a dashboard to a specified folder, and returns the moved dashboard.\n\n`dashboard_id` and `folder_id` are required.\n`dashboard_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -5741,7 +5869,9 @@ }, "/dashboards/lookml": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "import_dashboard_from_lookml", "summary": "Import Dashboard from LookML", "description": "### Creates a dashboard object based on LookML Dashboard YAML, and returns the details of the newly created dashboard.\n\nIf a dashboard exists with the YAML-defined \"preferred_slug\", the new dashboard will overwrite it. Otherwise, a new\ndashboard will be created. Note that when a dashboard is overwritten, alerts will not be maintained.\n\nIf a folder_id is specified: new dashboards will be placed in that folder, and overwritten dashboards will be moved to it\nIf the folder_id isn't specified: new dashboards will be placed in the caller's personal folder, and overwritten dashboards\nwill remain where they were\n\nLookML must contain valid LookML YAML code. It's recommended to use the LookML format returned\nfrom [dashboard_lookml()](#!/Dashboard/dashboard_lookml) as the input LookML (newlines replaced with \n).\n\nNote that the created dashboard is not linked to any LookML Dashboard,\ni.e. [sync_lookml_dashboard()](#!/Dashboard/sync_lookml_dashboard) will not update dashboards created by this method.\n", @@ -5834,7 +5964,9 @@ }, "/dashboards/from_lookml": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_from_lookml", "summary": "Create Dashboard from LookML", "description": "# DEPRECATED: Use [import_dashboard_from_lookml()](#!/Dashboard/import_dashboard_from_lookml)\n", @@ -5927,7 +6059,9 @@ }, "/dashboards/{dashboard_id}/copy": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "copy_dashboard", "summary": "Copy Dashboard", "description": "### Copy an existing dashboard\n\nCreates a copy of an existing dashboard, in a specified folder, and returns the copied dashboard.\n\n`dashboard_id` is required, `dashboard_id` and `folder_id` must already exist if specified.\n`folder_id` will default to the existing folder.\n\nIf a dashboard with the same title already exists in the target folder, the copy will have '(copy)'\n or '(copy <# of copies>)' appended.\n", @@ -6029,7 +6163,9 @@ }, "/dashboard_elements/search": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "search_dashboard_elements", "summary": "Search Dashboard Elements", "description": "### Search Dashboard Elements\n\nReturns an **array of DashboardElement objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -6139,7 +6275,9 @@ }, "/dashboard_elements/{dashboard_element_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_element", "summary": "Get DashboardElement", "description": "### Get information about the dashboard element with a specific id.", @@ -6199,7 +6337,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_element", "summary": "Delete DashboardElement", "description": "### Delete a dashboard element with a specific id.", @@ -6260,7 +6400,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_element", "summary": "Update DashboardElement", "description": "### Update the dashboard element with a specific id.", @@ -6353,7 +6495,9 @@ }, "/dashboards/{dashboard_id}/dashboard_elements": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_elements", "summary": "Get All DashboardElements", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -6418,7 +6562,9 @@ }, "/dashboard_elements": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_element", "summary": "Create DashboardElement", "description": "### Create a dashboard element on the dashboard with a specific id.", @@ -6521,7 +6667,9 @@ }, "/dashboard_filters/{dashboard_filter_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_filter", "summary": "Get Dashboard Filter", "description": "### Get information about the dashboard filters with a specific id.", @@ -6581,7 +6729,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_filter", "summary": "Delete Dashboard Filter", "description": "### Delete a dashboard filter with a specific id.", @@ -6642,7 +6792,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_filter", "summary": "Update Dashboard Filter", "description": "### Update the dashboard filter with a specific id.", @@ -6735,7 +6887,9 @@ }, "/dashboards/{dashboard_id}/dashboard_filters": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_filters", "summary": "Get All Dashboard Filters", "description": "### Get information about all the dashboard filters on a dashboard with a specific id.", @@ -6800,7 +6954,9 @@ }, "/dashboard_filters": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_filter", "summary": "Create Dashboard Filter", "description": "### Create a dashboard filter on the dashboard with a specific id.", @@ -6894,7 +7050,9 @@ }, "/dashboard_layout_components/{dashboard_layout_component_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_component", "summary": "Get DashboardLayoutComponent", "description": "### Get information about the dashboard elements with a specific id.", @@ -6954,7 +7112,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout_component", "summary": "Update DashboardLayoutComponent", "description": "### Update the dashboard element with a specific id.", @@ -7047,7 +7207,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout_dashboard_layout_components", "summary": "Get All DashboardLayoutComponents", "description": "### Get information about all the dashboard layout components for a dashboard layout with a specific id.", @@ -7112,7 +7274,9 @@ }, "/dashboard_layouts/{dashboard_layout_id}": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_layout", "summary": "Get DashboardLayout", "description": "### Get information about the dashboard layouts with a specific id.", @@ -7172,7 +7336,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "delete_dashboard_layout", "summary": "Delete DashboardLayout", "description": "### Delete a dashboard layout with a specific id.", @@ -7243,7 +7409,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "update_dashboard_layout", "summary": "Update DashboardLayout", "description": "### Update the dashboard layout with a specific id.", @@ -7336,7 +7504,9 @@ }, "/dashboards/{dashboard_id}/dashboard_layouts": { "get": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "dashboard_dashboard_layouts", "summary": "Get All DashboardLayouts", "description": "### Get information about all the dashboard elements on a dashboard with a specific id.", @@ -7401,7 +7571,9 @@ }, "/dashboard_layouts": { "post": { - "tags": ["Dashboard"], + "tags": [ + "Dashboard" + ], "operationId": "create_dashboard_layout", "summary": "Create DashboardLayout", "description": "### Create a dashboard layout on the dashboard with a specific id.", @@ -7495,7 +7667,9 @@ }, "/data_actions": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "perform_data_action", "summary": "Send a Data Action", "description": "Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action.", @@ -7548,7 +7722,9 @@ }, "/data_actions/form": { "post": { - "tags": ["DataAction"], + "tags": [ + "DataAction" + ], "operationId": "fetch_remote_data_action_form", "summary": "Fetch Remote Data Action Form", "description": "For some data actions, the remote server may supply a form requesting further user input. This endpoint takes a data action, asks the remote server to generate a form for it, and returns that form to you for presentation to the user.", @@ -7614,7 +7790,9 @@ }, "/datagroups": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "all_datagroups", "summary": "Get All Datagroups", "description": "### Get information about all datagroups.\n", @@ -7659,7 +7837,9 @@ }, "/datagroups/{datagroup_id}": { "get": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "datagroup", "summary": "Get Datagroup", "description": "### Get information about a datagroup.\n", @@ -7710,7 +7890,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Datagroup"], + "tags": [ + "Datagroup" + ], "operationId": "update_datagroup", "summary": "Update Datagroup", "description": "### Update a datagroup using the specified params.\n", @@ -7804,7 +7986,9 @@ }, "/connections": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_connections", "summary": "Get All Connections", "description": "### Get information about all connections.\n", @@ -7858,7 +8042,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_connection", "summary": "Create Connection", "description": "### Create a connection using the specified configuration.\n", @@ -7941,7 +8127,9 @@ }, "/connections/{connection_name}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "connection", "summary": "Get Connection", "description": "### Get information about a connection.\n", @@ -8001,7 +8189,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_connection", "summary": "Update Connection", "description": "### Update a connection using the specified configuration.\n", @@ -8083,7 +8273,9 @@ } }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection", "summary": "Delete Connection", "description": "### Delete a connection.\n", @@ -8146,7 +8338,9 @@ }, "/connections/{connection_name}/connection_override/{override_context}": { "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_connection_override", "summary": "Delete Connection Override", "description": "### Delete a connection override.\n", @@ -8228,7 +8422,9 @@ }, "/connections/{connection_name}/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection", "summary": "Test Connection", "description": "### Test an existing connection.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -8319,7 +8515,9 @@ }, "/connections/test": { "put": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_connection_config", "summary": "Test Connection Configuration", "description": "### Test a connection configuration.\n\nNote that a connection's 'dialect' property has a 'connection_tests' property that lists the\nspecific types of tests that the connection supports.\n\nThis API is rate limited.\n\nUnsupported tests in the request will be ignored.\n", @@ -8402,7 +8600,9 @@ }, "/projects/{project_id}/manifest/lock_all": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "lock_all", "summary": "Lock All", "description": " ### Generate Lockfile for All LookML Dependencies\n\n Git must have been configured, must be in dev mode and deploy permission required\n\n Install_all is a two step process\n 1. For each remote_dependency in a project the dependency manager will resolve any ambiguous ref.\n 2. The project will then write out a lockfile including each remote_dependency with its resolved ref.\n\n", @@ -8487,7 +8687,9 @@ }, "/derived_table/graph/model/{model}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_model", "summary": "Get Derived Table graph for model", "description": "### Discover information about derived tables\n", @@ -8558,7 +8760,9 @@ }, "/derived_table/graph/view/{view}": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "graph_derived_tables_for_view", "summary": "Get subgraph of derived table and dependencies", "description": "### Get the subgraph representing this derived table and its dependencies.\n", @@ -8629,7 +8833,9 @@ }, "/derived_table/{model_name}/{view_name}/start": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "start_pdt_build", "summary": "Start a PDT materialization", "description": "Enqueue materialization for a PDT with the given model name and view name", @@ -8727,7 +8933,9 @@ }, "/derived_table/{materialization_id}/status": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "check_pdt_build", "summary": "Check status of a PDT materialization", "description": "Check status of PDT materialization", @@ -8780,7 +8988,9 @@ }, "/derived_table/{materialization_id}/stop": { "get": { - "tags": ["DerivedTable"], + "tags": [ + "DerivedTable" + ], "operationId": "stop_pdt_build", "summary": "Stop a PDT materialization", "description": "Stop a PDT materialization", @@ -8842,7 +9052,9 @@ }, "/dialect_info": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_dialect_infos", "summary": "Get All Dialect Infos", "description": "### Get information about all dialects.\n", @@ -8898,7 +9110,9 @@ }, "/digest_emails_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "digest_emails_enabled", "summary": "Get Digest_emails", "description": "### Retrieve the value for whether or not digest emails is enabled\n", @@ -8938,7 +9152,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_digest_emails_enabled", "summary": "Update Digest_emails", "description": "### Update the setting for enabling/disabling digest emails\n", @@ -9011,7 +9227,9 @@ }, "/digest_email_send": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "create_digest_email_send", "summary": "Deliver digest email contents", "description": "### Trigger the generation of digest email records and send them to Looker's internal system. This does not send\nany actual emails, it generates records containing content which may be of interest for users who have become inactive.\nEmails will be sent at a later time from Looker's internal system if the Digest Emails feature is enabled in settings.", @@ -9064,7 +9282,9 @@ }, "/public_egress_ip_addresses": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "public_egress_ip_addresses", "summary": "Public Egress IP Addresses", "description": "### Get Egress IP Addresses\n\nReturns the list of public egress IP Addresses for a hosted customer's instance\n", @@ -9106,7 +9326,9 @@ }, "/embed_config/secrets": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_embed_secret", "summary": "Create Embed Secret", "description": "### Create an embed secret using the specified information.\n\nThe value of the `secret` field will be set by Looker and returned.\n", @@ -9189,7 +9411,9 @@ }, "/embed_config/secrets/{embed_secret_id}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_embed_secret", "summary": "Delete Embed Secret", "description": "### Delete an embed secret.\n", @@ -9252,7 +9476,9 @@ }, "/embed/sso_url": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_sso_embed_url", "summary": "Create SSO Embed Url", "description": "### Create SSO Embed URL\n\nCreates an SSO embed URL and cryptographically signs it with an embed secret.\nThis signed URL can then be used to instantiate a Looker embed session in a PBL web application.\nDo not make any modifications to this URL - any change may invalidate the signature and\ncause the URL to fail to load a Looker embed session.\n\nA signed SSO embed URL can only be used once. After it has been used to request a page from the\nLooker server, the URL is invalid. Future requests using the same URL will fail. This is to prevent\n'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker UI page - scheme, hostname, path and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker URL would look like `https:/myname.looker.com/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar and paste it into the `target_url` property as a quoted string value in this API request.\n\nPermissions for the embed user are defined by the groups in which the embed user is a member (group_ids property)\nand the lists of models and permissions assigned to the embed user.\nAt a minimum, you must provide values for either the group_ids property, or both the models and permissions properties.\nThese properties are additive; an embed user can be a member of certain groups AND be granted access to models and permissions.\n\nThe embed user's access is the union of permissions granted by the group_ids, models, and permissions properties.\n\nThis function does not strictly require all group_ids, user attribute names, or model names to exist at the moment the\nSSO embed url is created. Unknown group_id, user attribute names or model names will be passed through to the output URL.\nTo diagnose potential problems with an SSO embed URL, you can copy the signed URL into the Embed URI Validator text box in `/admin/embed`.\n\nThe `secret_id` parameter is optional. If specified, its value must be the id of an active secret defined in the Looker instance.\nif not specified, the URL will be signed using the newest active secret defined in the Looker instance.\n\n#### Security Note\nProtect this signed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -9335,7 +9561,9 @@ }, "/embed/token_url/me": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_embed_url_as_me", "summary": "Create Embed URL", "description": "### Create an Embed URL\n\nCreates an embed URL that runs as the Looker user making this API call. (\"Embed as me\")\nThis embed URL can then be used to instantiate a Looker embed session in a\n\"Powered by Looker\" (PBL) web application.\n\nThis is similar to Private Embedding (https://docs.looker.com/r/admin/embed/private-embed). Instead of\nof logging into the Web UI to authenticate, the user has already authenticated against the API to be able to\nmake this call. However, unlike Private Embed where the user has access to any other part of the Looker UI,\nthe embed web session created by requesting the EmbedUrlResponse.url in a browser only has access to\ncontent visible under the `/embed` context.\n\nAn embed URL can only be used once, and must be used within 5 minutes of being created. After it\nhas been used to request a page from the Looker server, the URL is invalid. Future requests using\nthe same URL will fail. This is to prevent 'replay attacks'.\n\nThe `target_url` property must be a complete URL of a Looker Embedded UI page - scheme, hostname, path starting with \"/embed\" and query params.\nTo load a dashboard with id 56 and with a filter of `Date=1 years`, the looker Embed URL would look like `https://myname.looker.com/embed/dashboards/56?Date=1%20years`.\nThe best way to obtain this target_url is to navigate to the desired Looker page in your web browser,\ncopy the URL shown in the browser address bar, insert \"/embed\" after the host/port, and paste it into the `target_url` property as a quoted string value in this API request.\n\n#### Security Note\nProtect this embed URL as you would an access token or password credentials - do not write\nit to disk, do not pass it to a third party, and only pass it through a secure HTTPS\nencrypted transport.\n", @@ -9418,7 +9646,9 @@ }, "/external_oauth_applications": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_external_oauth_applications", "summary": "Get All External OAuth Applications", "description": "### Get all External OAuth Applications.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -9481,7 +9711,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_external_oauth_application", "summary": "Create External OAuth Application", "description": "### Create an OAuth Application using the specified configuration.\n\nThis is an OAuth Application which Looker uses to access external systems.\n", @@ -9564,7 +9796,9 @@ }, "/external_oauth_applications/user_state": { "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_oauth_application_user_state", "summary": "Create Create OAuth user state.", "description": "### Create OAuth User state.\n", @@ -9647,7 +9881,9 @@ }, "/projects/{project_id}/git_branches": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_branches", "summary": "Get All Git Branches", "description": "### Get All Git Branches\n\nReturns a list of git branches in the project repository\n", @@ -9703,7 +9939,9 @@ }, "/projects/{project_id}/git_branch": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_branch", "summary": "Get Active Git Branch", "description": "### Get the Current Git Branch\n\nReturns the git branch currently checked out in the given project repository\n", @@ -9754,7 +9992,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_branch", "summary": "Checkout New Git Branch", "description": "### Create and Checkout a Git Branch\n\nCreates and checks out a new branch in the given project repository\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nOptionally specify a branch name, tag name or commit SHA as the start point in the ref field.\n If no ref is specified, HEAD of the current branch will be used as the start point for the new branch.\n\n", @@ -9846,7 +10086,9 @@ } }, "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_git_branch", "summary": "Update Project Git Branch", "description": "### Checkout and/or reset --hard an existing Git Branch\n\nOnly allowed in development mode\n - Call `update_session` to select the 'dev' workspace.\n\nCheckout an existing branch if name field is different from the name of the currently checked out branch.\n\nOptionally specify a branch name, tag name or commit SHA to which the branch should be reset.\n **DANGER** hard reset will be force pushed to the remote. Unsaved changes and commits may be permanently lost.\n\n", @@ -9930,7 +10172,9 @@ }, "/projects/{project_id}/git_branch/{branch_name}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "find_git_branch", "summary": "Find a Git Branch", "description": "### Get the specified Git Branch\n\nReturns the git branch specified in branch_name path param if it exists in the given project repository\n", @@ -9990,7 +10234,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_git_branch", "summary": "Delete a Git Branch", "description": "### Delete the specified Git Branch\n\nDelete git branch specified in branch_name path param from local and remote of specified project repository\n", @@ -10062,7 +10308,9 @@ }, "/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_groups", "summary": "Get All Groups", "description": "### Get information about all groups.\n", @@ -10199,7 +10447,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "create_group", "summary": "Create Group", "description": "### Creates a new group (admin only).\n", @@ -10293,7 +10543,9 @@ }, "/groups/search": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups", "summary": "Search Groups", "description": "### Search groups\n\nReturns all group records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10432,7 +10684,9 @@ }, "/groups/search/with_roles": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups_with_roles", "summary": "Search Groups with Roles", "description": "### Search groups include roles\n\nReturns all group records that match the given search criteria, and attaches any associated roles.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10571,7 +10825,9 @@ }, "/groups/search/with_hierarchy": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "search_groups_with_hierarchy", "summary": "Search Groups with Hierarchy", "description": "### Search groups include hierarchy\n\nReturns all group records that match the given search criteria, and attaches\nassociated role_ids and parent group_ids.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -10710,7 +10966,9 @@ }, "/groups/{group_id}": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "group", "summary": "Get Group", "description": "### Get information about a group.\n", @@ -10770,7 +11028,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_group", "summary": "Update Group", "description": "### Updates the a group (admin only).", @@ -10861,7 +11121,9 @@ } }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group", "summary": "Delete Group", "description": "### Deletes a group (admin only).\n", @@ -10934,7 +11196,9 @@ }, "/groups/{group_id}/groups": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_groups", "summary": "Get All Groups in Group", "description": "### Get information about all the groups in a group\n", @@ -10997,7 +11261,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_group", "summary": "Add a Group to Group", "description": "### Adds a new group to a group.\n", @@ -11071,7 +11337,9 @@ }, "/groups/{group_id}/users": { "get": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "all_group_users", "summary": "Get All Users in Group", "description": "### Get information about all the users directly included in a group.\n", @@ -11185,7 +11453,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "add_group_user", "summary": "Add a User to Group", "description": "### Adds a new user to a group.\n", @@ -11259,7 +11529,9 @@ }, "/groups/{group_id}/users/{user_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_user", "summary": "Remove a User from Group", "description": "### Removes a user from a group.\n", @@ -11324,7 +11596,9 @@ }, "/groups/{group_id}/groups/{deleting_group_id}": { "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_group_from_group", "summary": "Deletes a Group from Group", "description": "### Removes a group from a group.\n", @@ -11389,7 +11663,9 @@ }, "/groups/{group_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "update_user_attribute_group_value", "summary": "Set User Attribute Group Value", "description": "### Set the value of a user attribute for a group.\n\nFor information about how user attribute values are calculated, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n", @@ -11470,7 +11746,9 @@ } }, "delete": { - "tags": ["Group"], + "tags": [ + "Group" + ], "operationId": "delete_user_attribute_group_value", "summary": "Delete User Attribute Group Value", "description": "### Remove a user attribute value from a group.\n", @@ -11525,7 +11803,9 @@ }, "/boards": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "all_boards", "summary": "Get All Boards", "description": "### Get information about all boards.\n", @@ -11579,7 +11859,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "create_board", "summary": "Create Board", "description": "### Create a new board.\n", @@ -11673,7 +11955,9 @@ }, "/boards/search": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "search_boards", "summary": "Search Boards", "description": "### Search Boards\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -11798,6 +12082,15 @@ "schema": { "type": "boolean" } + }, + { + "name": "permission", + "in": "query", + "description": "Filter results based on permission, either show (default) or update", + "required": false, + "schema": { + "type": "string" + } } ], "responses": { @@ -11841,7 +12134,9 @@ }, "/boards/{board_id}": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "board", "summary": "Get Board", "description": "### Get information about a board.\n", @@ -11901,7 +12196,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "update_board", "summary": "Update Board", "description": "### Update a board definition.\n", @@ -11992,7 +12289,9 @@ } }, "delete": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "delete_board", "summary": "Delete Board", "description": "### Delete a board.\n", @@ -12055,7 +12354,9 @@ }, "/board_items": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "all_board_items", "summary": "Get All Board Items", "description": "### Get information about all board items.\n", @@ -12127,7 +12428,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "create_board_item", "summary": "Create Board Item", "description": "### Create a new board item.\n", @@ -12221,7 +12524,9 @@ }, "/board_items/{board_item_id}": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "board_item", "summary": "Get Board Item", "description": "### Get information about a board item.\n", @@ -12281,7 +12586,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "update_board_item", "summary": "Update Board Item", "description": "### Update a board item definition.\n", @@ -12372,7 +12679,9 @@ } }, "delete": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "delete_board_item", "summary": "Delete Board Item", "description": "### Delete a board item.\n", @@ -12435,7 +12744,9 @@ }, "/primary_homepage_sections": { "get": { - "tags": ["Homepage"], + "tags": [ + "Homepage" + ], "operationId": "all_primary_homepage_sections", "summary": "Get All Primary homepage sections", "description": "### Get information about the primary homepage's sections.\n", @@ -12491,7 +12802,9 @@ }, "/board_sections": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "all_board_sections", "summary": "Get All Board sections", "description": "### Get information about all board sections.\n", @@ -12554,7 +12867,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "create_board_section", "summary": "Create Board section", "description": "### Create a new board section.\n", @@ -12648,7 +12963,9 @@ }, "/board_sections/{board_section_id}": { "get": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "board_section", "summary": "Get Board section", "description": "### Get information about a board section.\n", @@ -12708,7 +13025,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "update_board_section", "summary": "Update Board section", "description": "### Update a board section definition.\n", @@ -12799,7 +13118,9 @@ } }, "delete": { - "tags": ["Board"], + "tags": [ + "Board" + ], "operationId": "delete_board_section", "summary": "Delete Board section", "description": "### Delete a board section.\n", @@ -12862,7 +13183,9 @@ }, "/integration_hubs": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integration_hubs", "summary": "Get All Integration Hubs", "description": "### Get information about all Integration Hubs.\n", @@ -12916,7 +13239,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "create_integration_hub", "summary": "Create Integration Hub", "description": "### Create a new Integration Hub.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -13011,7 +13336,9 @@ }, "/integration_hubs/{integration_hub_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration_hub", "summary": "Get Integration Hub", "description": "### Get information about a Integration Hub.\n", @@ -13071,7 +13398,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration_hub", "summary": "Update Integration Hub", "description": "### Update a Integration Hub definition.\n\nThis API is rate limited to prevent it from being used for SSRF attacks\n", @@ -13163,7 +13492,9 @@ } }, "delete": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "delete_integration_hub", "summary": "Delete Integration Hub", "description": "### Delete a Integration Hub.\n", @@ -13226,7 +13557,9 @@ }, "/integration_hubs/{integration_hub_id}/accept_legal_agreement": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "accept_integration_hub_legal_agreement", "summary": "Accept Integration Hub Legal Agreement", "description": "Accepts the legal agreement for a given integration hub. This only works for integration hubs that have legal_agreement_required set to true and legal_agreement_signed set to false.", @@ -13289,7 +13622,9 @@ }, "/integrations": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "all_integrations", "summary": "Get All Integrations", "description": "### Get information about all Integrations.\n", @@ -13354,7 +13689,9 @@ }, "/integrations/{integration_id}": { "get": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "integration", "summary": "Get Integration", "description": "### Get information about a Integration.\n", @@ -13414,7 +13751,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "update_integration", "summary": "Update Integration", "description": "### Update parameters on a Integration.\n", @@ -13507,7 +13846,9 @@ }, "/integrations/{integration_id}/form": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "fetch_integration_form", "summary": "Fetch Remote Integration Form", "description": "Returns the Integration form for presentation to the user.", @@ -13584,7 +13925,9 @@ }, "/integrations/{integration_id}/test": { "post": { - "tags": ["Integration"], + "tags": [ + "Integration" + ], "operationId": "test_integration", "summary": "Test integration", "description": "Tests the integration to make sure all the settings are working.", @@ -13647,7 +13990,9 @@ }, "/internal_help_resources_content": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources_content", "summary": "Get Internal Help Resources Content", "description": "### Set the menu item name and content for internal help resources\n", @@ -13687,7 +14032,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources_content", "summary": "Update internal help resources content", "description": "Update internal help resources content\n", @@ -13760,7 +14107,9 @@ }, "/internal_help_resources_enabled": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "internal_help_resources", "summary": "Get Internal Help Resources", "description": "### Get and set the options for internal help resources\n", @@ -13802,7 +14151,9 @@ }, "/internal_help_resources": { "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_internal_help_resources", "summary": "Update internal help resources configuration", "description": "Update internal help resources settings\n", @@ -13875,7 +14226,9 @@ }, "/ldap_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "ldap_config", "summary": "Get LDAP Configuration", "description": "### Get the LDAP configuration.\n\nLooker can be optionally configured to authenticate users against an Active Directory or other LDAP directory server.\nLDAP setup requires coordination with an administrator of that directory server.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single LDAP configuration. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nLooker will never return an **auth_password** field. That value can be set, but never retrieved.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -13905,7 +14258,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_ldap_config", "summary": "Update LDAP Configuration", "description": "### Update the LDAP configuration.\n\nConfiguring LDAP impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the LDAP configuration.\n\nLDAP is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any LDAP setting changes be tested using the APIs below before being set globally.\n\nSee the [Looker LDAP docs](https://docs.looker.com/r/api/ldap_setup) for additional information.\n", @@ -13968,7 +14323,9 @@ }, "/ldap_config/test_connection": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_connection", "summary": "Test LDAP Connection", "description": "### Test the connection settings for an LDAP configuration.\n\nThis tests that the connection is possible given a connection_host and connection_port.\n\n**connection_host** and **connection_port** are required. **connection_tls** is optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true\n}\n```\n\nNo authentication to the LDAP server is attempted.\n\nThe active LDAP settings are not modified.\n", @@ -14031,7 +14388,9 @@ }, "/ldap_config/test_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_auth", "summary": "Test LDAP Auth", "description": "### Test the connection authentication settings for an LDAP configuration.\n\nThis tests that the connection is possible and that a 'server' account to be used by Looker can authenticate to the LDAP server given connection and authentication information.\n\n**connection_host**, **connection_port**, and **auth_username**, are required. **connection_tls** and **auth_password** are optional.\n\nExample:\n```json\n{\n \"connection_host\": \"ldap.example.com\",\n \"connection_port\": \"636\",\n \"connection_tls\": true,\n \"auth_username\": \"cn=looker,dc=example,dc=com\",\n \"auth_password\": \"secret\"\n}\n```\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\nThe active LDAP settings are not modified.\n\n", @@ -14094,7 +14453,9 @@ }, "/ldap_config/test_user_info": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_info", "summary": "Test LDAP User Info", "description": "### Test the user authentication settings for an LDAP configuration without authenticating the user.\n\nThis test will let you easily test the mapping for user properties and roles for any user without needing to authenticate as that user.\n\nThis test accepts a full LDAP configuration along with a username and attempts to find the full info for the user from the LDAP server without actually authenticating the user. So, user password is not required.The configuration is validated before attempting to contact the server.\n\n**test_ldap_user** is required.\n\nThe active LDAP settings are not modified.\n\n", @@ -14157,7 +14518,9 @@ }, "/ldap_config/test_user_auth": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "test_ldap_config_user_auth", "summary": "Test LDAP User Auth", "description": "### Test the user authentication settings for an LDAP configuration.\n\nThis test accepts a full LDAP configuration along with a username/password pair and attempts to authenticate the user with the LDAP server. The configuration is validated before attempting the authentication.\n\nLooker will never return an **auth_password**. If this request omits the **auth_password** field, then the **auth_password** value from the active config (if present) will be used for the test.\n\n**test_ldap_user** and **test_ldap_password** are required.\n\nThe active LDAP settings are not modified.\n\n", @@ -14220,7 +14583,9 @@ }, "/legacy_features": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_legacy_features", "summary": "Get All Legacy Features", "description": "### Get all legacy features.\n", @@ -14265,7 +14630,9 @@ }, "/legacy_features/{legacy_feature_id}": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "legacy_feature", "summary": "Get Legacy Feature", "description": "### Get information about the legacy feature with a specific id.\n", @@ -14316,7 +14683,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_legacy_feature", "summary": "Update Legacy Feature", "description": "### Update information about the legacy feature with a specific id.\n", @@ -14400,7 +14769,9 @@ }, "/locales": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_locales", "summary": "Get All Locales", "description": "### Get a list of locales that Looker supports.\n", @@ -14445,7 +14816,9 @@ }, "/looks": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "all_looks", "summary": "Get All Looks", "description": "### Get information about all active Looks\n\nReturns an array of **abbreviated Look objects** describing all the looks that the caller has access to. Soft-deleted Looks are **not** included.\n\nGet the **full details** of a specific look by id with [look(id)](#!/Look/look)\n\nFind **soft-deleted looks** with [search_looks()](#!/Look/search_looks)\n", @@ -14499,7 +14872,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "create_look", "summary": "Create Look", "description": "### Create a Look\n\nTo create a look to display query data, first create the query with [create_query()](#!/Query/create_query)\nthen assign the query's id to the `query_id` property in the call to `create_look()`.\n\nTo place the look into a particular space, assign the space's id to the `space_id` property\nin the call to `create_look()`.\n", @@ -14593,7 +14968,9 @@ }, "/looks/search": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "search_looks", "summary": "Search Looks", "description": "### Search Looks\n\nReturns an **array of Look objects** that match the specified search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single look** by id with [look(id)](#!/Look/look)\n", @@ -14808,7 +15185,9 @@ }, "/looks/{look_id}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "look", "summary": "Get Look", "description": "### Get a Look.\n\nReturns detailed information about a Look and its associated Query.\n\n", @@ -14868,7 +15247,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "update_look", "summary": "Update Look", "description": "### Modify a Look\n\nUse this function to modify parts of a look. Property values given in a call to `update_look` are\napplied to the existing look, so there's no need to include properties whose values are not changing.\nIt's best to specify only the properties you want to change and leave everything else out\nof your `update_look` call. **Look properties marked 'read-only' will be ignored.**\n\nWhen a user deletes a look in the Looker UI, the look data remains in the database but is\nmarked with a deleted flag (\"soft-deleted\"). Soft-deleted looks can be undeleted (by an admin)\nif the delete was in error.\n\nTo soft-delete a look via the API, use [update_look()](#!/Look/update_look) to change the look's `deleted` property to `true`.\nYou can undelete a look by calling `update_look` to change the look's `deleted` property to `false`.\n\nSoft-deleted looks are excluded from the results of [all_looks()](#!/Look/all_looks) and [search_looks()](#!/Look/search_looks), so they\nessentially disappear from view even though they still reside in the db.\nIn API 3.1 and later, you can pass `deleted: true` as a parameter to [search_looks()](#!/3.1/Look/search_looks) to list soft-deleted looks.\n\nNOTE: [delete_look()](#!/Look/delete_look) performs a \"hard delete\" - the look data is removed from the Looker\ndatabase and destroyed. There is no \"undo\" for `delete_look()`.\n", @@ -14959,7 +15340,9 @@ } }, "delete": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "delete_look", "summary": "Delete Look", "description": "### Permanently Delete a Look\n\nThis operation **permanently** removes a look from the Looker database.\n\nNOTE: There is no \"undo\" for this kind of delete.\n\nFor information about soft-delete (which can be undone) see [update_look()](#!/Look/update_look).\n", @@ -15022,7 +15405,9 @@ }, "/looks/{look_id}/run/{result_format}": { "get": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "run_look", "summary": "Run Look", "description": "### Run a Look\n\nRuns a given look's query and returns the results in the requested format.\n\nSupported formats:\n\n| result_format | Description\n| :-----------: | :--- |\n| json | Plain json\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| md | Simple markdown\n| xlsx | MS Excel spreadsheet\n| sql | Returns the generated SQL rather than running the query\n| png | A PNG image of the visualization of the query\n| jpg | A JPG image of the visualization of the query\n\n\n", @@ -15290,7 +15675,9 @@ }, "/looks/{look_id}/copy": { "post": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "copy_look", "summary": "Copy Look", "description": "### Copy an existing look\n\nCreates a copy of an existing look, in a specified folder, and returns the copied look.\n\n`look_id` and `folder_id` are required.\n\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -15392,7 +15779,9 @@ }, "/looks/{look_id}/move": { "patch": { - "tags": ["Look"], + "tags": [ + "Look" + ], "operationId": "move_look", "summary": "Move Look", "description": "### Move an existing look\n\nMoves a look to a specified folder, and returns the moved look.\n\n`look_id` and `folder_id` are required.\n`look_id` and `folder_id` must already exist, and `folder_id` must be different from the current `folder_id` of the dashboard.\n", @@ -15484,7 +15873,9 @@ }, "/lookml_models": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "all_lookml_models", "summary": "Get All LookML Models", "description": "### Get information about all lookml models.\n", @@ -15558,7 +15949,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "create_lookml_model", "summary": "Create LookML Model", "description": "### Create a lookml model using the specified configuration.\n", @@ -15641,7 +16034,9 @@ }, "/lookml_models/{lookml_model_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model", "summary": "Get LookML Model", "description": "### Get information about a lookml model.\n", @@ -15701,7 +16096,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "update_lookml_model", "summary": "Update LookML Model", "description": "### Update a lookml model using the specified configuration.\n", @@ -15783,7 +16180,9 @@ } }, "delete": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "delete_lookml_model", "summary": "Delete LookML Model", "description": "### Delete a lookml model.\n", @@ -15846,7 +16245,9 @@ }, "/lookml_models/{lookml_model_name}/explores/{explore_name}": { "get": { - "tags": ["LookmlModel"], + "tags": [ + "LookmlModel" + ], "operationId": "lookml_model_explore", "summary": "Get LookML Model Explore", "description": "### Get information about a lookml model explore.\n", @@ -15917,7 +16318,9 @@ }, "/merge_queries/{merge_query_id}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "merge_query", "summary": "Get Merge Query", "description": "### Get Merge Query\n\nReturns a merge query object given its id.\n", @@ -15979,7 +16382,9 @@ }, "/merge_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_merge_query", "summary": "Create Merge Query", "description": "### Create Merge Query\n\nCreates a new merge query object.\n\nA merge query takes the results of one or more queries and combines (merges) the results\naccording to field mapping definitions. The result is similar to a SQL left outer join.\n\nA merge query can merge results of queries from different SQL databases.\n\nThe order that queries are defined in the source_queries array property is significant. The\nfirst query in the array defines the primary key into which the results of subsequent\nqueries will be merged.\n\nLike model/view query objects, merge queries are immutable and have structural identity - if\nyou make a request to create a new merge query that is identical to an existing merge query,\nthe existing merge query will be returned instead of creating a duplicate. Conversely, any\nchange to the contents of a merge query will produce a new object with a new id.\n", @@ -16073,7 +16478,9 @@ }, "/models/{model_name}/views/{view_name}/fields/{field_name}/suggestions": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "model_fieldname_suggestions", "summary": "Model field name suggestions", "description": "### Field name suggestions for a model and view\n\n`filters` is a string hash of values, with the key as the field name and the string value as the filter expression:\n\n```ruby\n{'users.age': '>=60'}\n```\n\nor\n\n```ruby\n{'users.age': '<30'}\n```\n\nor\n\n```ruby\n{'users.age': '=50'}\n```\n", @@ -16165,7 +16572,9 @@ }, "/models/{model_name}": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "get_model", "summary": "Get a single model", "description": "### Get a single model\n\n", @@ -16218,7 +16627,9 @@ }, "/connections/{connection_name}/databases": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_databases", "summary": "List accessible databases to this connection", "description": "### List databases available to this connection\n\nCertain dialects can support multiple databases per single connection.\nIf this connection supports multiple databases, the database names will be returned in an array.\n\nConnections using dialects that do not support multiple databases will return an empty array.\n\n**Note**: [Connection Features](#!/Metadata/connection_features) can be used to determine if a connection supports\nmultiple databases.\n", @@ -16284,7 +16695,9 @@ }, "/connections/{connection_name}/features": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_features", "summary": "Metadata features supported by this connection", "description": "### Retrieve metadata features for this connection\n\nReturns a list of feature names with `true` (available) or `false` (not available)\n\n", @@ -16367,7 +16780,9 @@ }, "/connections/{connection_name}/schemas": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_schemas", "summary": "Get schemas for a connection", "description": "### Get the list of schemas and tables for a connection\n\n", @@ -16470,7 +16885,9 @@ }, "/connections/{connection_name}/tables": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_tables", "summary": "Get tables for a connection", "description": "### Get the list of tables for a schema\n\nFor dialects that support multiple databases, optionally identify which to use. If not provided, the default\ndatabase for the connection will be used.\n\nFor dialects that do **not** support multiple databases, **do not use** the database parameter\n", @@ -16601,7 +17018,9 @@ }, "/connections/{connection_name}/columns": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_columns", "summary": "Get columns for a connection", "description": "### Get the columns (and therefore also the tables) in a specific schema\n\n", @@ -16732,7 +17151,9 @@ }, "/connections/{connection_name}/search_columns": { "get": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_search_columns", "summary": "Search a connection for columns", "description": "### Search a connection for columns matching the specified name\n\n**Note**: `column_name` must be a valid column name. It is not a search pattern.\n", @@ -16827,7 +17248,9 @@ }, "/connections/{connection_name}/cost_estimate": { "post": { - "tags": ["Metadata"], + "tags": [ + "Metadata" + ], "operationId": "connection_cost_estimate", "summary": "Estimate costs for a connection", "description": "### Connection cost estimating\n\nAssign a `sql` statement to the body of the request. e.g., for Ruby, `{sql: 'select * from users'}`\n\n**Note**: If the connection's dialect has no support for cost estimates, an error will be returned\n", @@ -16921,7 +17344,9 @@ }, "/mobile/settings": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "mobile_settings", "summary": "Get Mobile_Settings", "description": "### Get all mobile settings.\n", @@ -16963,7 +17388,9 @@ }, "/mobile/device": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "register_mobile_device", "summary": "Register Mobile Device", "description": "### Registers a mobile device.\n# Required fields: [:device_token, :device_type]\n", @@ -17046,7 +17473,9 @@ }, "/mobile/device/{device_id}": { "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_mobile_device_registration", "summary": "Update Mobile Device Registration", "description": "### Updates the mobile device registration\n", @@ -17117,7 +17546,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "deregister_mobile_device", "summary": "Deregister Mobile Device", "description": "### Deregister a mobile device.\n", @@ -17173,7 +17604,9 @@ }, "/model_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_model_sets", "summary": "Search Model Sets", "description": "### Search model sets\nReturns all model set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -17303,7 +17736,9 @@ }, "/model_sets/{model_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "model_set", "summary": "Get Model Set", "description": "### Get information about the model set with a specific id.\n", @@ -17363,7 +17798,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_model_set", "summary": "Delete Model Set", "description": "### Delete the model set with a specific id.\n", @@ -17424,7 +17861,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_model_set", "summary": "Update Model Set", "description": "### Update information about the model set with a specific id.\n", @@ -17508,7 +17947,9 @@ }, "/model_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_model_sets", "summary": "Get All Model Sets", "description": "### Get information about all model sets.\n", @@ -17552,7 +17993,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_model_set", "summary": "Create Model Set", "description": "### Create a model set with the specified information. Model sets are used by Roles.\n", @@ -17625,7 +18068,9 @@ }, "/oauth_client_apps": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "all_oauth_client_apps", "summary": "Get All OAuth Client Apps", "description": "### List All OAuth Client Apps\n\nLists all applications registered to use OAuth2 login with this Looker instance, including\nenabled and disabled apps.\n\nResults are filtered to include only the apps that the caller (current user)\nhas permission to see.\n", @@ -17681,7 +18126,9 @@ }, "/oauth_client_apps/{client_guid}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oauth_client_app", "summary": "Get OAuth Client App", "description": "### Get Oauth Client App\n\nReturns the registered app client with matching client_guid.\n", @@ -17741,7 +18188,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_oauth_client_app", "summary": "Delete OAuth Client App", "description": "### Delete OAuth Client App\n\nDeletes the registration info of the app with the matching client_guid.\nAll active sessions and tokens issued for this app will immediately become invalid.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the\nindicated resource does not exist.\n\n### Note: this deletion cannot be undone.\n", @@ -17802,7 +18251,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "register_oauth_client_app", "summary": "Register OAuth App", "description": "### Register an OAuth2 Client App\n\nRegisters details identifying an external web app or native app as an OAuth2 login client of the Looker instance.\nThe app registration must provide a unique client_guid and redirect_uri that the app will present\nin OAuth login requests. If the client_guid and redirect_uri parameters in the login request do not match\nthe app details registered with the Looker instance, the request is assumed to be a forgery and is rejected.\n", @@ -17903,7 +18354,9 @@ } }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_oauth_client_app", "summary": "Update OAuth App", "description": "### Update OAuth2 Client App Details\n\nModifies the details a previously registered OAuth2 login client app.\n", @@ -17996,7 +18449,9 @@ }, "/oauth_client_apps/{client_guid}/tokens": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "invalidate_tokens", "summary": "Invalidate Tokens", "description": "### Invalidate All Issued Tokens\n\nImmediately invalidates all auth codes, sessions, access tokens and refresh tokens issued for\nthis app for ALL USERS of this app.\n", @@ -18059,7 +18514,9 @@ }, "/oauth_client_apps/{client_guid}/users/{user_id}": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "activate_app_user", "summary": "Activate OAuth App User", "description": "### Activate an app for a user\n\nActivates a user for a given oauth client app. This indicates the user has been informed that\nthe app will have access to the user's looker data, and that the user has accepted and allowed\nthe app to use their Looker account.\n\nActivating a user for an app that the user is already activated with returns a success response.\n", @@ -18151,7 +18608,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "deactivate_app_user", "summary": "Deactivate OAuth App User", "description": "### Deactivate an app for a user\n\nDeactivate a user for a given oauth client app. All tokens issued to the app for\nthis user will be invalid immediately. Before the user can use the app with their\nLooker account, the user will have to read and accept an account use disclosure statement for the app.\n\nAdmin users can deactivate other users, but non-admin users can only deactivate themselves.\n\nAs with most REST DELETE operations, this endpoint does not return an error if the indicated\nresource (app or user) does not exist or has already been deactivated.\n", @@ -18232,7 +18691,9 @@ }, "/oidc_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_config", "summary": "Get OIDC Configuration", "description": "### Get the OIDC configuration.\n\nLooker can be optionally configured to authenticate users against an OpenID Connect (OIDC)\nauthentication server. OIDC setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single OIDC configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n", @@ -18262,7 +18723,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_oidc_config", "summary": "Update OIDC Configuration", "description": "### Update the OIDC configuration.\n\nConfiguring OIDC impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the OIDC configuration.\n\nOIDC is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any OIDC setting changes be tested using the APIs below before being set globally.\n", @@ -18325,7 +18788,9 @@ }, "/oidc_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "oidc_test_config", "summary": "Get OIDC Test Configuration", "description": "### Get a OIDC test configuration by test_slug.\n", @@ -18366,7 +18831,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_oidc_test_config", "summary": "Delete OIDC Test Configuration", "description": "### Delete a OIDC test configuration.\n", @@ -18419,7 +18886,9 @@ }, "/oidc_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_oidc_test_config", "summary": "Create OIDC Test Configuration", "description": "### Create a OIDC test configuration.\n", @@ -18482,7 +18951,9 @@ }, "/password_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "password_config", "summary": "Get Password Config", "description": "### Get password config.\n", @@ -18522,7 +18993,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_password_config", "summary": "Update Password Config", "description": "### Update password config.\n", @@ -18595,7 +19068,9 @@ }, "/password_config/force_password_reset_at_next_login_for_all_users": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "force_password_reset_at_next_login_for_all_users", "summary": "Force password reset", "description": "### Force all credentials_email users to reset their login passwords upon their next login.\n", @@ -18657,7 +19132,9 @@ }, "/permissions": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permissions", "summary": "Get All Permissions", "description": "### Get all supported permissions.\n", @@ -18702,7 +19179,9 @@ }, "/permission_sets/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_permission_sets", "summary": "Search Permission Sets", "description": "### Search permission sets\nReturns all permission set records that match the given search criteria.\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -18832,7 +19311,9 @@ }, "/permission_sets/{permission_set_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "permission_set", "summary": "Get Permission Set", "description": "### Get information about the permission set with a specific id.\n", @@ -18892,7 +19373,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_permission_set", "summary": "Delete Permission Set", "description": "### Delete the permission set with a specific id.\n", @@ -18963,7 +19446,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_permission_set", "summary": "Update Permission Set", "description": "### Update information about the permission set with a specific id.\n", @@ -19057,7 +19542,9 @@ }, "/permission_sets": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_permission_sets", "summary": "Get All Permission Sets", "description": "### Get information about all permission sets.\n", @@ -19111,7 +19598,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_permission_set", "summary": "Create Permission Set", "description": "### Create a permission set with the specified information. Permission sets are used by Roles.\n", @@ -19194,7 +19683,9 @@ }, "/projects/{project_id}/deploy_ref_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_ref_to_production", "summary": "Deploy Remote Branch or Ref to Production", "description": "### Deploy a Remote Branch or Ref to Production\n\nGit must have been configured and deploy permission required.\n\nDeploy is a one/two step process\n1. If this is the first deploy of this project, create the production project with git repository.\n2. Pull the branch or ref into the production project.\n\nCan only specify either a branch or a ref.\n\n", @@ -19288,7 +19779,9 @@ }, "/projects/{project_id}/deploy_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "deploy_to_production", "summary": "Deploy To Production", "description": "### Deploy LookML from this Development Mode Project to Production\n\nGit must have been configured, must be in dev mode and deploy permission required\n\nDeploy is a two / three step process:\n\n1. Push commits in current branch of dev mode project to the production branch (origin/master).\n Note a. This step is skipped in read-only projects.\n Note b. If this step is unsuccessful for any reason (e.g. rejected non-fastforward because production branch has\n commits not in current branch), subsequent steps will be skipped.\n2. If this is the first deploy of this project, create the production project with git repository.\n3. Pull the production branch into the production project.\n\n", @@ -19364,7 +19857,9 @@ }, "/projects/{project_id}/reset_to_production": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_production", "summary": "Reset To Production", "description": "### Reset a project to the revision of the project that is in production.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -19440,7 +19935,9 @@ }, "/projects/{project_id}/reset_to_remote": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "reset_project_to_remote", "summary": "Reset To Remote", "description": "### Reset a project development branch to the revision of the project that is on the remote.\n\n**DANGER** this will delete any changes that have not been pushed to a remote repository.\n", @@ -19516,7 +20013,9 @@ }, "/projects": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_projects", "summary": "Get All Projects", "description": "### Get All Projects\n\nReturns all projects visible to the current user\n", @@ -19570,7 +20069,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_project", "summary": "Create Project", "description": "### Create A Project\n\ndev mode required.\n- Call `update_session` to select the 'dev' workspace.\n\n`name` is required.\n`git_remote_url` is not allowed. To configure Git for the newly created project, follow the instructions in `update_project`.\n\n", @@ -19653,7 +20154,9 @@ }, "/projects/{project_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project", "summary": "Get Project", "description": "### Get A Project\n\nReturns the project with the given project id\n", @@ -19713,7 +20216,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_project", "summary": "Update Project", "description": "### Update Project Configuration\n\nApply changes to a project's configuration.\n\n\n#### Configuring Git for a Project\n\nTo set up a Looker project with a remote git repository, follow these steps:\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `create_git_deploy_key` to create a new deploy key for the project\n1. Copy the deploy key text into the remote git repository's ssh key configuration\n1. Call `update_project` to set project's `git_remote_url` ()and `git_service_name`, if necessary).\n\nWhen you modify a project's `git_remote_url`, Looker connects to the remote repository to fetch\nmetadata. The remote git repository MUST be configured with the Looker-generated deploy\nkey for this project prior to setting the project's `git_remote_url`.\n\nTo set up a Looker project with a git repository residing on the Looker server (a 'bare' git repo):\n\n1. Call `update_session` to select the 'dev' workspace.\n1. Call `update_project` setting `git_remote_url` to null and `git_service_name` to \"bare\".\n\n", @@ -19826,7 +20331,9 @@ }, "/projects/{project_id}/manifest": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "manifest", "summary": "Get Manifest", "description": "### Get A Projects Manifest object\n\nReturns the project with the given project id\n", @@ -19879,7 +20386,9 @@ }, "/projects/{project_id}/git/deploy_key": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "create_git_deploy_key", "summary": "Create Deploy Key", "description": "### Create Git Deploy Key\n\nCreate a public/private key pair for authenticating ssh git requests from Looker to a remote git repository\nfor a particular Looker project.\n\nReturns the public key of the generated ssh key pair.\n\nCopy this public key to your remote git repository's ssh keys configuration so that the remote git service can\nvalidate and accept git requests from the Looker server.\n", @@ -19960,7 +20469,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "git_deploy_key", "summary": "Git Deploy Key", "description": "### Git Deploy Key\n\nReturns the ssh public key previously created for a project's git repository.\n", @@ -20013,7 +20524,9 @@ }, "/projects/{project_id}/validate": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "validate_project", "summary": "Validate Project", "description": "### Validate Project\n\nPerforms lint validation of all lookml files in the project.\nReturns a list of errors found, if any.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. For best performance, call `validate_project(project_id)` only\nwhen you really want to recompute project validation. To quickly display the results of\nthe most recent project validation (without recomputing), use `project_validation_results(project_id)`\n", @@ -20093,7 +20606,9 @@ "x-looker-activity-type": "non_query" }, "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_validation_results", "summary": "Cached Project Validation Results", "description": "### Get Cached Project Validation Results\n\nReturns the cached results of a previous project validation calculation, if any.\nReturns http status 204 No Content if no validation results exist.\n\nValidating the content of all the files in a project can be computationally intensive\nfor large projects. Use this API to simply fetch the results of the most recent\nproject validation rather than revalidating the entire project from scratch.\n\nA value of `\"stale\": true` in the response indicates that the project has changed since\nthe cached validation results were computed. The cached validation results may no longer\nreflect the current state of the project.\n", @@ -20158,7 +20673,9 @@ }, "/projects/{project_id}/current_workspace": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_workspace", "summary": "Get Project Workspace", "description": "### Get Project Workspace\n\nReturns information about the state of the project files in the currently selected workspace\n", @@ -20220,7 +20737,9 @@ }, "/projects/{project_id}/files": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_project_files", "summary": "Get All Project Files", "description": "### Get All Project Files\n\nReturns a list of the files in the project\n", @@ -20285,7 +20804,9 @@ }, "/projects/{project_id}/files/file": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "project_file", "summary": "Get Project File", "description": "### Get Project File Info\n\nReturns information about a file in the project\n", @@ -20356,7 +20877,9 @@ }, "/projects/{project_id}/git_connection_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_git_connection_tests", "summary": "Get All Git Connection Tests", "description": "### Get All Git Connection Tests\n\ndev mode required.\n - Call `update_session` to select the 'dev' workspace.\n\nReturns a list of tests which can be run against a project's (or the dependency project for the provided remote_url) git connection. Call [Run Git Connection Test](#!/Project/run_git_connection_test) to execute each test in sequence.\n\nTests are ordered by increasing specificity. Tests should be run in the order returned because later tests require functionality tested by tests earlier in the test list.\n\nFor example, a late-stage test for write access is meaningless if connecting to the git server (an early test) is failing.\n", @@ -20421,7 +20944,9 @@ }, "/projects/{project_id}/git_connection_tests/{test_id}": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_git_connection_test", "summary": "Run Git Connection Test", "description": "### Run a git connection test\n\nRun the named test on the git service used by this project (or the dependency project for the provided remote_url) and return the result. This\nis intended to help debug git connections when things do not work properly, to give\nmore helpful information about why a git url is not working with Looker.\n\nTests should be run in the order they are returned by [Get All Git Connection Tests](#!/Project/all_git_connection_tests).\n", @@ -20521,7 +21046,9 @@ }, "/projects/{project_id}/lookml_tests": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "all_lookml_tests", "summary": "Get All LookML Tests", "description": "### Get All LookML Tests\n\nReturns a list of tests which can be run to validate a project's LookML code and/or the underlying data,\noptionally filtered by the file id.\nCall [Run LookML Test](#!/Project/run_lookml_test) to execute tests.\n", @@ -20586,7 +21113,9 @@ }, "/projects/{project_id}/lookml_tests/run": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "run_lookml_test", "summary": "Run LookML Test", "description": "### Run LookML Tests\n\nRuns all tests in the project, optionally filtered by file, test, and/or model.\n", @@ -20689,7 +21218,9 @@ }, "/projects/{project_id}/tag": { "post": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "tag_ref", "summary": "Tag Ref", "description": "### Creates a tag for the most recent commit, or a specific ref is a SHA is provided\n\nThis is an internal-only, undocumented route.\n", @@ -20813,7 +21344,9 @@ }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_look_render_task", "summary": "Create Look Render Task", "description": "### Create a new task to render a look to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -20934,7 +21467,9 @@ }, "/render_tasks/queries/{query_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_query_render_task", "summary": "Create Query Render Task", "description": "### Create a new task to render an existing query to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21055,7 +21590,9 @@ }, "/render_tasks/dashboards/{dashboard_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_dashboard_render_task", "summary": "Create Dashboard Render Task", "description": "### Create a new task to render a dashboard to a document or image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21214,7 +21751,9 @@ }, "/render_tasks/{render_task_id}": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task", "summary": "Get Render Task", "description": "### Get information about a render task.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21276,7 +21815,9 @@ }, "/render_tasks/{render_task_id}/results": { "get": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "render_task_results", "summary": "Render Task Results", "description": "### Get the document or image produced by a completed render task.\n\nNote that the PDF or image result will be a binary blob in the HTTP response, as indicated by the\nContent-Type in the response headers. This may require specialized (or at least different) handling than text\nresponses such as JSON. You may need to tell your HTTP client that the response is binary so that it does not\nattempt to parse the binary data as text.\n\nIf the render task exists but has not finished rendering the results, the response HTTP status will be\n**202 Accepted**, the response body will be empty, and the response will have a Retry-After header indicating\nthat the caller should repeat the request at a later time.\n\nReturns 404 if the render task cannot be found, if the cached result has expired, or if the caller\ndoes not have permission to view the results.\n\nFor detailed information about the status of the render task, use [Render Task](#!/RenderTask/render_task).\nPolling loops waiting for completion of a render task would be better served by polling **render_task(id)** until\nthe task status reaches completion (or error) instead of polling **render_task_results(id)** alone.\n", @@ -21362,7 +21903,9 @@ }, "/render_tasks/dashboard_elements/{dashboard_element_id}/{result_format}": { "post": { - "tags": ["RenderTask"], + "tags": [ + "RenderTask" + ], "operationId": "create_dashboard_element_render_task", "summary": "Create Dashboard Element Render Task", "description": "### Create a new task to render a dashboard element to an image.\n\nReturns a render task object.\nTo check the status of a render task, pass the render_task.id to [Get Render Task](#!/RenderTask/get_render_task).\nOnce the render task is complete, you can download the resulting document or image using [Get Render Task Results](#!/RenderTask/get_render_task_results).\n\n", @@ -21483,7 +22026,9 @@ }, "/projects/{root_project_id}/credential/{credential_id}": { "put": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "update_repository_credential", "summary": "Create Repository Credential", "description": "### Configure Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n\n", @@ -21584,7 +22129,9 @@ } }, "delete": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "delete_repository_credential", "summary": "Delete Repository Credential", "description": "### Repository Credential for a remote dependency\n\nAdmin required.\n\n`root_project_id` is required.\n`credential_id` is required.\n", @@ -21656,7 +22203,9 @@ }, "/projects/{root_project_id}/credentials": { "get": { - "tags": ["Project"], + "tags": [ + "Project" + ], "operationId": "get_all_repository_credentials", "summary": "Get All Repository Credentials", "description": "### Get all Repository Credentials for a project\n\n`root_project_id` is required.\n", @@ -21712,7 +22261,9 @@ }, "/roles": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "all_roles", "summary": "Get All Roles", "description": "### Get information about all roles.\n", @@ -21780,7 +22331,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "create_role", "summary": "Create Role", "description": "### Create a role with the specified information.\n", @@ -21863,7 +22416,9 @@ }, "/roles/search": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_roles", "summary": "Search Roles", "description": "### Search roles\n\nReturns all role records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -21984,7 +22539,9 @@ }, "/roles/search/with_user_count": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "search_roles_with_user_count", "summary": "Search Roles with User Count", "description": "### Search roles include user count\n\nReturns all role records that match the given search criteria, and attaches\nassociated user counts.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n", @@ -22105,7 +22662,9 @@ }, "/roles/{role_id}": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role", "summary": "Get Role", "description": "### Get information about the role with a specific id.\n", @@ -22156,7 +22715,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "delete_role", "summary": "Delete Role", "description": "### Delete the role with a specific id.\n", @@ -22227,7 +22788,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "update_role", "summary": "Update Role", "description": "### Update information about the role with a specific id.\n", @@ -22321,7 +22884,9 @@ }, "/roles/{role_id}/groups": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_groups", "summary": "Get Role Groups", "description": "### Get information about all the groups with the role that has a specific id.\n", @@ -22384,7 +22949,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_groups", "summary": "Update Role Groups", "description": "### Set all groups for a role, removing all existing group associations from that role.\n", @@ -22474,7 +23041,9 @@ }, "/roles/{role_id}/users": { "get": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "role_users", "summary": "Get Role Users", "description": "### Get information about all the users with the role that has a specific id.\n", @@ -22546,7 +23115,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Role"], + "tags": [ + "Role" + ], "operationId": "set_role_users", "summary": "Update Role Users", "description": "### Set all the users of the role with a specific id.\n", @@ -22656,7 +23227,9 @@ }, "/running_queries": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "all_running_queries", "summary": "Get All Running Queries", "description": "Get information about all running queries.\n", @@ -22691,7 +23264,9 @@ }, "/running_queries/{query_task_id}": { "delete": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "kill_query", "summary": "Kill Running Query", "description": "Kill a query with a specific query_task_id.\n", @@ -22754,7 +23329,9 @@ }, "/saml_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_config", "summary": "Get SAML Configuration", "description": "### Get the SAML configuration.\n\nLooker can be optionally configured to authenticate users against a SAML authentication server.\nSAML setup requires coordination with an administrator of that server.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nLooker maintains a single SAML configuation. It can be read and updated. Updates only succeed if the new state will be valid (in the sense that all required fields are populated); it is up to you to ensure that the configuration is appropriate and correct).\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n", @@ -22784,7 +23361,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_saml_config", "summary": "Update SAML Configuration", "description": "### Update the SAML configuration.\n\nConfiguring SAML impacts authentication for all users. This configuration should be done carefully.\n\nOnly Looker administrators can read and update the SAML configuration.\n\nSAML is enabled or disabled for Looker using the **enabled** field.\n\nIt is **highly** recommended that any SAML setting changes be tested using the APIs below before being set globally.\n", @@ -22847,7 +23426,9 @@ }, "/saml_test_configs/{test_slug}": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "saml_test_config", "summary": "Get SAML Test Configuration", "description": "### Get a SAML test configuration by test_slug.\n", @@ -22888,7 +23469,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_saml_test_config", "summary": "Delete SAML Test Configuration", "description": "### Delete a SAML test configuration.\n", @@ -22941,7 +23524,9 @@ }, "/saml_test_configs": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "create_saml_test_config", "summary": "Create SAML Test Configuration", "description": "### Create a SAML test configuration.\n", @@ -23004,7 +23589,9 @@ }, "/parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "parse_saml_idp_metadata", "summary": "Parse SAML IdP XML", "description": "### Parse the given xml as a SAML IdP metadata document and return the result.\n", @@ -23057,7 +23644,9 @@ }, "/fetch_and_parse_saml_idp_metadata": { "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "fetch_and_parse_saml_idp_metadata", "summary": "Parse SAML IdP Url", "description": "### Fetch the given url and parse it as a SAML IdP metadata document and return the result.\nNote that this requires that the url be public or at least at a location where the Looker instance\ncan fetch it without requiring any special authentication.\n", @@ -23110,7 +23699,9 @@ }, "/scheduled_plans/space/{space_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_space", "summary": "Scheduled Plans for Space", "description": "### Get Scheduled Plans for a Space\n\nReturns scheduled plans owned by the caller for a given space id.\n", @@ -23175,7 +23766,9 @@ }, "/scheduled_plans/{scheduled_plan_id}": { "delete": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "delete_scheduled_plan", "summary": "Delete Scheduled Plan", "description": "### Delete a Scheduled Plan\n\nNormal users can only delete their own scheduled plans.\nAdmins can delete other users' scheduled plans.\nThis delete cannot be undone.\n", @@ -23236,7 +23829,9 @@ "x-looker-activity-type": "db_query" }, "patch": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "update_scheduled_plan", "summary": "Update Scheduled Plan", "description": "### Update a Scheduled Plan\n\nAdmins can update other users' Scheduled Plans.\n\nNote: Any scheduled plan destinations specified in an update will **replace** all scheduled plan destinations\ncurrently defined for the scheduled plan.\n\nFor Example: If a scheduled plan has destinations A, B, and C, and you call update on this scheduled plan\nspecifying only B in the destinations, then destinations A and C will be deleted by the update.\n\nUpdating a scheduled plan to assign null or an empty array to the scheduled_plan_destinations property is an error, as a scheduled plan must always have at least one destination.\n\nIf you omit the scheduled_plan_destinations property from the object passed to update, then the destinations\ndefined on the original scheduled plan will remain unchanged.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -23318,7 +23913,9 @@ } }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan", "summary": "Get Scheduled Plan", "description": "### Get Information About a Scheduled Plan\n\nAdmins can fetch information about other users' Scheduled Plans.\n", @@ -23380,7 +23977,9 @@ }, "/scheduled_plans": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "create_scheduled_plan", "summary": "Create Scheduled Plan", "description": "### Create a Scheduled Plan\n\nCreate a scheduled plan to render a Look or Dashboard on a recurring schedule.\n\nTo create a scheduled plan, you MUST provide values for the following fields:\n`name`\nand\n`look_id`, `dashboard_id`, `lookml_dashboard_id`, or `query_id`\nand\n`cron_tab` or `datagroup`\nand\nat least one scheduled_plan_destination\n\nA scheduled plan MUST have at least one scheduled_plan_destination defined.\n\nWhen `look_id` is set, `require_no_results`, `require_results`, and `require_change` are all required.\n\nIf `create_scheduled_plan` fails with a 422 error, be sure to look at the error messages in the response which will explain exactly what fields are missing or values that are incompatible.\n\nThe queries that provide the data for the look or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `false` or not specified, the queries that provide the data for the\nlook or dashboard are run in the context of user account that owns the scheduled plan.\n\nWhen `run_as_recipient` is `true` and all the email recipients are Looker user accounts, the\nqueries are run in the context of each recipient, so different recipients may see different\ndata from the same scheduled render of a look or dashboard. For more details, see [Run As Recipient](https://docs.looker.com/r/admin/run-as-recipient).\n\nAdmins can create and modify scheduled plans on behalf of other users by specifying a user id.\nNon-admin users may not create or modify scheduled plans by or for other users.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -23461,7 +24060,9 @@ } }, "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "all_scheduled_plans", "summary": "Get All Scheduled Plans", "description": "### List All Scheduled Plans\n\nReturns all scheduled plans which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -23545,7 +24146,9 @@ }, "/scheduled_plans/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once", "summary": "Run Scheduled Plan Once", "description": "### Run a Scheduled Plan Immediately\n\nCreate a scheduled plan that runs only once, and immediately.\n\nThis can be useful for testing a Scheduled Plan before committing to a production schedule.\n\nAdmins can create scheduled plans on behalf of other users by specifying a user id.\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n", @@ -23629,7 +24232,9 @@ }, "/scheduled_plans/look/{look_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_look", "summary": "Scheduled Plans for Look", "description": "### Get Scheduled Plans for a Look\n\nReturns all scheduled plans for a look which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -23712,7 +24317,9 @@ }, "/scheduled_plans/dashboard/{dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_dashboard", "summary": "Scheduled Plans for Dashboard", "description": "### Get Scheduled Plans for a Dashboard\n\nReturns all scheduled plans for a dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -23795,7 +24402,9 @@ }, "/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}": { "get": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plans_for_lookml_dashboard", "summary": "Scheduled Plans for LookML Dashboard", "description": "### Get Scheduled Plans for a LookML Dashboard\n\nReturns all scheduled plans for a LookML Dashboard which belong to the caller or given user.\n\nIf no user_id is provided, this function returns the scheduled plans owned by the caller.\n\n\nTo list all schedules for all users, pass `all_users=true`.\n\n\nThe caller must have `see_schedules` permission to see other users' scheduled plans.\n\n\n", @@ -23878,7 +24487,9 @@ }, "/scheduled_plans/{scheduled_plan_id}/run_once": { "post": { - "tags": ["ScheduledPlan"], + "tags": [ + "ScheduledPlan" + ], "operationId": "scheduled_plan_run_once_by_id", "summary": "Run Scheduled Plan Once by Id", "description": "### Run a Scheduled Plan By Id Immediately\nThis function creates a run-once schedule plan based on an existing scheduled plan,\napplies modifications (if any) to the new scheduled plan, and runs the new schedule plan immediately.\nThis can be useful for testing modifications to an existing scheduled plan before committing to a production schedule.\n\nThis function internally performs the following operations:\n\n1. Copies the properties of the existing scheduled plan into a new scheduled plan\n2. Copies any properties passed in the JSON body of this request into the new scheduled plan (replacing the original values)\n3. Creates the new scheduled plan\n4. Runs the new scheduled plan\n\nThe original scheduled plan is not modified by this operation.\nAdmins can create, modify, and run scheduled plans on behalf of other users by specifying a user id.\nNon-admins can only create, modify, and run their own scheduled plans.\n\n#### Email Permissions:\n\nFor details about permissions required to schedule delivery to email and the safeguards\nLooker offers to protect against sending to unauthorized email destinations, see [Email Domain Whitelist for Scheduled Looks](https://docs.looker.com/r/api/embed-permissions).\n\n\n#### Scheduled Plan Destination Formats\n\nScheduled plan destinations must specify the data format to produce and send to the destination.\n\nFormats:\n\n| format | Description\n| :-----------: | :--- |\n| json | A JSON object containing a `data` property which contains an array of JSON objects, one per row. No metadata.\n| json_detail | Row data plus metadata describing the fields, pivots, table calcs, and other aspects of the query\n| inline_json | Same as the JSON format, except that the `data` property is a string containing JSON-escaped row data. Additional properties describe the data operation. This format is primarily used to send data to web hooks so that the web hook doesn't have to re-encode the JSON row data in order to pass it on to its ultimate destination.\n| csv | Comma separated values with a header\n| txt | Tab separated values with a header\n| html | Simple html\n| xlsx | MS Excel spreadsheet\n| wysiwyg_pdf | Dashboard rendered in a tiled layout to produce a PDF document\n| assembled_pdf | Dashboard rendered in a single column layout to produce a PDF document\n| wysiwyg_png | Dashboard rendered in a tiled layout to produce a PNG image\n||\n\nValid formats vary by destination type and source object. `wysiwyg_pdf` is only valid for dashboards, for example.\n\n\n\nThis API is rate limited to prevent it from being used for relay spam or DoS attacks\n\n", @@ -23973,7 +24584,9 @@ }, "/session_config": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "session_config", "summary": "Get Session Config", "description": "### Get session config.\n", @@ -24013,7 +24626,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "update_session_config", "summary": "Update Session Config", "description": "### Update session config.\n", @@ -24086,7 +24701,9 @@ }, "/session": { "get": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "session", "summary": "Get Session", "description": "### Get API Session\n\nReturns information about the current API session, such as which workspace is selected for the session.\n", @@ -24126,7 +24743,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Session"], + "tags": [ + "Session" + ], "operationId": "update_session", "summary": "Update Session", "description": "### Update API Session\n\n#### API Session Workspace\n\nYou can use this endpoint to change the active workspace for the current API session.\n\nOnly one workspace can be active in a session. The active workspace can be changed\nany number of times in a session.\n\nThe default workspace for API sessions is the \"production\" workspace.\n\nAll Looker APIs that use projects or lookml models (such as running queries) will\nuse the version of project and model files defined by this workspace for the lifetime of the\ncurrent API session or until the session workspace is changed again.\n\nAn API session has the same lifetime as the access_token used to authenticate API requests. Each successful\nAPI login generates a new access_token and a new API session.\n\nIf your Looker API client application needs to work in a dev workspace across multiple\nAPI sessions, be sure to select the dev workspace after each login.\n", @@ -24199,7 +24818,9 @@ }, "/setting": { "patch": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "set_setting", "summary": "Set Setting", "description": "### Configure Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\nSee the `Setting` type for more information on the specific values that can be configured.\n", @@ -24291,7 +24912,9 @@ } }, "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "get_setting", "summary": "Get Setting", "description": "### Get Looker Settings\n\nAvailable settings are:\n - extension_framework_enabled\n - extension_load_url_enabled\n - marketplace_auto_install_enabled\n - marketplace_enabled\n - privatelabel_configuration\n - custom_welcome_email\n - onboarding_enabled\n\n", @@ -24364,7 +24987,9 @@ }, "/smtp_settings": { "post": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "set_smtp_settings", "summary": "Set SMTP Setting", "description": "### Configure SMTP Settings\n This API allows users to configure the SMTP settings on the Looker instance.\n This API is only supported in the OEM jar. Additionally, only admin users are authorised to call this API.\n", @@ -24451,7 +25076,9 @@ }, "/smtp_status": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "smtp_status", "summary": "Get SMTP Status", "description": "### Get current SMTP status.\n", @@ -24504,7 +25131,9 @@ }, "/folders/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "search_folders", "summary": "Search Folders", "description": "Search for folders by creator id, parent id, name, etc", @@ -24665,7 +25294,9 @@ }, "/folders/{folder_id}": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder", "summary": "Get Folder", "description": "### Get information about the folder with a specific id.", @@ -24725,7 +25356,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "delete_folder", "summary": "Delete Folder", "description": "### Delete the folder with a specific id including any children folders.\n**DANGER** this will delete all looks and dashboards in the folder.\n", @@ -24786,7 +25419,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "update_folder", "summary": "Update Folder", "description": "### Update the folder with a specific id.", @@ -24870,7 +25505,9 @@ }, "/folders": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "all_folders", "summary": "Get All Folders", "description": "### Get information about all folders.\n\nIn API 3.x, this will not return empty personal folders, unless they belong to the calling user,\nor if they contain soft-deleted content.\n\nIn API 4.0+, all personal folders will be returned.\n\n", @@ -24924,7 +25561,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "create_folder", "summary": "Create Folder", "description": "### Create a folder with specified information.\n\nCaller must have permission to edit the parent folder and to create folders, otherwise the request\nreturns 404 Not Found.\n", @@ -25007,7 +25646,9 @@ }, "/folders/{folder_id}/children": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children", "summary": "Get Folder Children", "description": "### Get the children of a folder.", @@ -25123,7 +25764,9 @@ }, "/folders/{folder_id}/children/search": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_children_search", "summary": "Search Folder Children", "description": "### Search the children of a folder", @@ -25206,7 +25849,9 @@ }, "/folders/{folder_id}/parent": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_parent", "summary": "Get Folder Parent", "description": "### Get the parent of a folder", @@ -25268,7 +25913,9 @@ }, "/folders/{folder_id}/ancestors": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_ancestors", "summary": "Get Folder Ancestors", "description": "### Get the ancestors of a folder", @@ -25333,7 +25980,9 @@ }, "/folders/{folder_id}/looks": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_looks", "summary": "Get Folder Looks", "description": "### Get all looks in a folder.\nIn API 3.x, this will return all looks in a folder, including looks in the trash.\nIn API 4.0+, all looks in a folder will be returned, excluding looks in the trash.\n", @@ -25398,7 +26047,9 @@ }, "/folders/{folder_id}/dashboards": { "get": { - "tags": ["Folder"], + "tags": [ + "Folder" + ], "operationId": "folder_dashboards", "summary": "Get Folder Dashboards", "description": "### Get the dashboards in a folder", @@ -25463,7 +26114,9 @@ }, "/sql_queries/{slug}": { "get": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "sql_query", "summary": "Get SQL Runner Query", "description": "Get a SQL Runner query.", @@ -25516,7 +26169,9 @@ }, "/sql_queries": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "create_sql_query", "summary": "Create SQL Runner Query", "description": "### Create a SQL Runner Query\n\nEither the `connection_name` or `model_name` parameter MUST be provided.\n", @@ -25599,7 +26254,9 @@ }, "/sql_queries/{slug}/run/{result_format}": { "post": { - "tags": ["Query"], + "tags": [ + "Query" + ], "operationId": "run_sql_query", "summary": "Run SQL Runner Query", "description": "Execute a SQL Runner query in a given result_format.", @@ -25765,7 +26422,9 @@ }, "/support_access/allowlist": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "get_support_access_allowlist_entries", "summary": "Get Support Access Allowlist Users", "description": "### Get Support Access Allowlist Users\n\nReturns the users that have been added to the Support Access Allowlist\n", @@ -25819,7 +26478,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "add_support_access_allowlist_entries", "summary": "Add Support Access Allowlist Users", "description": "### Add Support Access Allowlist Users\n\nAdds a list of emails to the Allowlist, using the provided reason\n", @@ -25895,7 +26556,9 @@ }, "/support_access/allowlist/{entry_id}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_support_access_allowlist_entry", "summary": "Delete Support Access Allowlist Entry", "description": "### Delete Support Access Allowlist User\n\nDeletes the specified Allowlist Entry Id\n", @@ -25958,7 +26621,9 @@ }, "/support_access/enable": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "enable_support_access", "summary": "Enable Support Access", "description": "### Enable Support Access\n\nEnables Support Access for the provided duration\n", @@ -26041,7 +26706,9 @@ }, "/support_access/disable": { "put": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "disable_support_access", "summary": "Disable Support Access", "description": "### Disable Support Access\n\nDisables Support Access immediately\n", @@ -26093,7 +26760,9 @@ }, "/support_access/status": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "support_access_status", "summary": "Support Access Status", "description": "### Support Access Status\n\nReturns the current Support Access Status\n", @@ -26135,7 +26804,9 @@ }, "/themes": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "all_themes", "summary": "Get All Themes", "description": "### Get an array of all existing themes\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\nThis method returns an array of all existing themes. The active time for the theme is not considered.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26189,7 +26860,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "create_theme", "summary": "Create Theme", "description": "### Create a theme\n\nCreates a new theme object, returning the theme details, including the created id.\n\nIf `settings` are not specified, the default theme settings will be copied into the new theme.\n\nThe theme `name` can only contain alphanumeric characters or underscores. Theme names should not contain any confidential information, such as customer names.\n\n**Update** an existing theme with [Update Theme](#!/Theme/update_theme)\n\n**Permanently delete** an existing theme with [Delete Theme](#!/Theme/delete_theme)\n\nFor more information, see [Creating and Applying Themes](https://docs.looker.com/r/admin/themes).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26272,7 +26945,9 @@ }, "/themes/search": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "search_themes", "summary": "Search Themes", "description": "### Search all themes for matching criteria.\n\nReturns an **array of theme objects** that match the specified search criteria.\n\n| Search Parameters | Description\n| :-------------------: | :------ |\n| `begin_at` only | Find themes active at or after `begin_at`\n| `end_at` only | Find themes active at or before `end_at`\n| both set | Find themes with an active inclusive period between `begin_at` and `end_at`\n\nNote: Range matching requires boolean AND logic.\nWhen using `begin_at` and `end_at` together, do not use `filter_or`=TRUE\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\nGet a **single theme** by id with [Theme](#!/Theme/theme)\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26404,7 +27079,9 @@ }, "/themes/default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "default_theme", "summary": "Get Default Theme", "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", @@ -26456,7 +27133,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "set_default_theme", "summary": "Set Default Theme", "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26529,7 +27208,9 @@ }, "/themes/active": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "active_themes", "summary": "Get Active Themes", "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n\n", @@ -26604,7 +27285,9 @@ }, "/themes/theme_or_default": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme_or_default", "summary": "Get Theme or Default", "description": "### Get the named theme if it's active. Otherwise, return the default theme\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\nNote: API users with `show` ability can call this function\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26667,7 +27350,9 @@ }, "/themes/validate": { "post": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "validate_theme", "summary": "Validate Theme", "description": "### Validate a theme with the specified information\n\nValidates all values set for the theme, returning any errors encountered, or 200 OK if valid\n\nSee [Create Theme](#!/Theme/create_theme) for constraints\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26760,7 +27445,9 @@ }, "/themes/{theme_id}": { "get": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "theme", "summary": "Get Theme", "description": "### Get a theme by ID\n\nUse this to retrieve a specific theme, whether or not it's currently active.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26820,7 +27507,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "update_theme", "summary": "Update Theme", "description": "### Update the theme by id.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26902,7 +27591,9 @@ } }, "delete": { - "tags": ["Theme"], + "tags": [ + "Theme" + ], "operationId": "delete_theme", "summary": "Delete Theme", "description": "### Delete a specific theme by id\n\nThis operation permanently deletes the identified theme from the database.\n\nBecause multiple themes can have the same name (with different activation time spans) themes can only be deleted by ID.\n\nAll IDs associated with a theme name can be retrieved by searching for the theme name with [Theme Search](#!/Theme/search).\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or help.looker.com to update your license for this feature.\n\n", @@ -26965,7 +27656,9 @@ }, "/timezones": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "all_timezones", "summary": "Get All Timezones", "description": "### Get a list of timezones that Looker supports (e.g. useful for scheduling tasks).\n", @@ -27010,7 +27703,9 @@ }, "/ssh_servers": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_ssh_servers", "summary": "Get All SSH Servers", "description": "### Get information about all SSH Servers.\n", @@ -27064,7 +27759,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_ssh_server", "summary": "Create SSH Server", "description": "### Create an SSH Server.\n", @@ -27147,7 +27844,9 @@ }, "/ssh_server/{ssh_server_id}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "ssh_server", "summary": "Get SSH Server", "description": "### Get information about an SSH Server.\n", @@ -27198,7 +27897,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_ssh_server", "summary": "Update SSH Server", "description": "### Update an SSH Server.\n", @@ -27280,7 +27981,9 @@ } }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_ssh_server", "summary": "Delete SSH Server", "description": "### Delete an SSH Server.\n", @@ -27343,7 +28046,9 @@ }, "/ssh_server/{ssh_server_id}/test": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_ssh_server", "summary": "Test SSH Server", "description": "### Test the SSH Server\n", @@ -27396,7 +28101,9 @@ }, "/ssh_tunnels": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "all_ssh_tunnels", "summary": "Get All SSH Tunnels", "description": "### Get information about all SSH Tunnels.\n", @@ -27450,7 +28157,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "create_ssh_tunnel", "summary": "Create SSH Tunnel", "description": "### Create an SSH Tunnel\n", @@ -27533,7 +28242,9 @@ }, "/ssh_tunnel/{ssh_tunnel_id}": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "ssh_tunnel", "summary": "Get SSH Tunnel", "description": "### Get information about an SSH Tunnel.\n", @@ -27584,7 +28295,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "update_ssh_tunnel", "summary": "Update SSH Tunnel", "description": "### Update an SSH Tunnel\n", @@ -27666,7 +28379,9 @@ } }, "delete": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "delete_ssh_tunnel", "summary": "Delete SSH Tunnel", "description": "### Delete an SSH Tunnel\n", @@ -27729,7 +28444,9 @@ }, "/ssh_tunnel/{ssh_tunnel_id}/test": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "test_ssh_tunnel", "summary": "Test SSH Tunnel", "description": "### Test the SSH Tunnel\n", @@ -27782,7 +28499,9 @@ }, "/ssh_public_key": { "get": { - "tags": ["Connection"], + "tags": [ + "Connection" + ], "operationId": "ssh_public_key", "summary": "Get SSH Public Key", "description": "### Get the SSH public key\n\nGet the public key created for this instance to identify itself to a remote SSH server.\n", @@ -27824,7 +28543,9 @@ }, "/user_attributes": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attributes", "summary": "Get All User Attributes", "description": "### Get information about all user attributes.\n", @@ -27887,7 +28608,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "create_user_attribute", "summary": "Create User Attribute", "description": "### Create a new user attribute\n\nPermission information for a user attribute is conveyed through the `can` and `user_can_edit` fields.\nThe `user_can_edit` field indicates whether an attribute is user-editable _anywhere_ in the application.\nThe `can` field gives more granular access information, with the `set_value` child field indicating whether\nan attribute's value can be set by [Setting the User Attribute User Value](#!/User/set_user_attribute_user_value).\n\nNote: `name` and `label` fields must be unique across all user attributes in the Looker instance.\nAttempting to create a new user attribute with a name or label that duplicates an existing\nuser attribute will fail with a 422 error.\n", @@ -27981,7 +28704,9 @@ }, "/user_attributes/{user_attribute_id}": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "user_attribute", "summary": "Get User Attribute", "description": "### Get information about a user attribute.\n", @@ -28041,7 +28766,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "update_user_attribute", "summary": "Update User Attribute", "description": "### Update a user attribute definition.\n", @@ -28132,7 +28859,9 @@ } }, "delete": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "delete_user_attribute", "summary": "Delete User Attribute", "description": "### Delete a user attribute (admin only).\n", @@ -28195,7 +28924,9 @@ }, "/user_attributes/{user_attribute_id}/group_values": { "get": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "all_user_attribute_group_values", "summary": "Get User Attribute Group Values", "description": "### Returns all values of a user attribute defined by user groups, in precedence order.\n\nA user may be a member of multiple groups which define different values for a given user attribute.\nThe order of group-values in the response determines precedence for selecting which group-value applies\nto a given user. For more information, see [Set User Attribute Group Values](#!/UserAttribute/set_user_attribute_group_values).\n\nResults will only include groups that the caller's user account has permission to see.\n", @@ -28258,7 +28989,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["UserAttribute"], + "tags": [ + "UserAttribute" + ], "operationId": "set_user_attribute_group_values", "summary": "Set User Attribute Group Values", "description": "### Define values for a user attribute across a set of groups, in priority order.\n\nThis function defines all values for a user attribute defined by user groups. This is a global setting, potentially affecting\nall users in the system. This function replaces any existing group value definitions for the indicated user attribute.\n\nThe value of a user attribute for a given user is determined by searching the following locations, in this order:\n\n1. the user's account settings\n2. the groups that the user is a member of\n3. the default value of the user attribute, if any\n\nThe user may be a member of multiple groups which define different values for that user attribute. The order of items in the group_values parameter\ndetermines which group takes priority for that user. Lowest array index wins.\n\nAn alternate method to indicate the selection precedence of group-values is to assign numbers to the 'rank' property of each\ngroup-value object in the array. Lowest 'rank' value wins. If you use this technique, you must assign a\nrank value to every group-value object in the array.\n\n To set a user attribute value for a single user, see [Set User Attribute User Value](#!/User/set_user_attribute_user_value).\nTo set a user attribute value for all members of a group, see [Set User Attribute Group Value](#!/Group/update_user_attribute_group_value).\n", @@ -28358,7 +29091,9 @@ }, "/user_login_lockouts": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "all_user_login_lockouts", "summary": "Get All User Login Lockouts", "description": "### Get currently locked-out users.\n", @@ -28414,7 +29149,9 @@ }, "/user_login_lockouts/search": { "get": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "search_user_login_lockouts", "summary": "Search User Login Lockouts", "description": "### Search currently locked-out users.\n", @@ -28566,7 +29303,9 @@ }, "/user_login_lockout/{key}": { "delete": { - "tags": ["Auth"], + "tags": [ + "Auth" + ], "operationId": "delete_user_login_lockout", "summary": "Delete User Login Lockout", "description": "### Removes login lockout for the associated user.\n", @@ -28629,7 +29368,9 @@ }, "/user": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "me", "summary": "Get Current User", "description": "### Get information about the current user; i.e. the user account currently calling the API.\n", @@ -28672,7 +29413,9 @@ }, "/users": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_users", "summary": "Get All Users", "description": "### Get information about all users.\n", @@ -28791,7 +29534,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user", "summary": "Create User", "description": "### Create a user with the specified information.\n", @@ -28875,7 +29620,9 @@ }, "/users/search": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users", "summary": "Search Users", "description": "### Search users\n\nReturns all* user records that match the given search criteria.\n\nIf multiple search params are given and `filter_or` is FALSE or not specified,\nsearch params are combined in a logical AND operation.\nOnly rows that match *all* search param criteria will be returned.\n\nIf `filter_or` is TRUE, multiple search params are combined in a logical OR operation.\nResults will include rows that match **any** of the search criteria.\n\nString search params use case-insensitive matching.\nString search params can contain `%` and '_' as SQL LIKE pattern match wildcard expressions.\nexample=\"dan%\" will match \"danger\" and \"Danzig\" but not \"David\"\nexample=\"D_m%\" will match \"Damage\" and \"dump\"\n\nInteger search params can accept a single value or a comma separated list of values. The multiple\nvalues will be combined under a logical OR operation - results will match at least one of\nthe given values.\n\nMost search params can accept \"IS NULL\" and \"NOT NULL\" as special expressions to match\nor exclude (respectively) rows where the column is null.\n\nBoolean search params accept only \"true\" and \"false\" as values.\n\n\n(*) Results are always filtered to the level of information the caller is permitted to view.\nLooker admins can see all user details; normal users in an open system can see\nnames of other users but no details; normal users in a closed system can only see\nnames of other users who are members of the same group as the user.\n\n", @@ -29072,7 +29819,9 @@ }, "/users/search/names/{pattern}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "search_users_names", "summary": "Search User Names", "description": "### Search for user accounts by name\n\nReturns all user accounts where `first_name` OR `last_name` OR `email` field values match a pattern.\nThe pattern can contain `%` and `_` wildcards as in SQL LIKE expressions.\n\nAny additional search params will be combined into a logical AND expression.\n", @@ -29242,7 +29991,9 @@ }, "/users/{user_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user", "summary": "Get User by Id", "description": "### Get information about the user with a specific id.\n\nIf the caller is an admin or the caller is the user being specified, then full user information will\nbe returned. Otherwise, a minimal 'public' variant of the user information will be returned. This contains\nThe user name and avatar url, but no sensitive information.\n", @@ -29302,7 +30053,9 @@ "x-looker-activity-type": "non_query" }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user", "summary": "Update User", "description": "### Update information about the user with a specific id.\n", @@ -29383,7 +30136,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user", "summary": "Delete User", "description": "### Delete the user with a specific id.\n\n**DANGER** this will delete the user and all looks and other information owned by the user.\n", @@ -29446,7 +30201,9 @@ }, "/users/credential/{credential_type}/{credential_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_for_credential", "summary": "Get User by Credential Id", "description": "### Get information about the user with a credential of given type with specific id.\n\nThis is used to do things like find users by their embed external_user_id. Or, find the user with\na given api3 client_id, etc. The 'credential_type' matches the 'type' name of the various credential\ntypes. It must be one of the values listed in the table below. The 'credential_id' is your unique Id\nfor the user and is specific to each type of credential.\n\nAn example using the Ruby sdk might look like:\n\n`sdk.user_for_credential('embed', 'customer-4959425')`\n\nThis table shows the supported 'Credential Type' strings. The right column is for reference; it shows\nwhich field in the given credential type is actually searched when finding a user with the supplied\n'credential_id'.\n\n| Credential Types | Id Field Matched |\n| ---------------- | ---------------- |\n| email | email |\n| google | google_user_id |\n| saml | saml_user_id |\n| oidc | oidc_user_id |\n| ldap | ldap_id |\n| api | token |\n| api3 | client_id |\n| embed | external_user_id |\n| looker_openid | email |\n\n**NOTE**: The 'api' credential type was only used with the legacy Looker query API and is no longer supported. The credential type for API you are currently looking at is 'api3'.\n\n", @@ -29517,7 +30274,9 @@ }, "/users/{user_id}/credentials_email": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_email", "summary": "Get Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -29577,7 +30336,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email", "summary": "Create Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -29678,7 +30439,9 @@ } }, "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "update_user_credentials_email", "summary": "Update Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -29769,7 +30532,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_email", "summary": "Delete Email/Password Credential", "description": "### Email/password login information for the specified user.", @@ -29832,7 +30597,9 @@ }, "/users/{user_id}/credentials_totp": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_totp", "summary": "Get Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -29892,7 +30659,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_totp", "summary": "Create Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -29993,7 +30762,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_totp", "summary": "Delete Two-Factor Credential", "description": "### Two-factor login information for the specified user.", @@ -30056,7 +30827,9 @@ }, "/users/{user_id}/credentials_ldap": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_ldap", "summary": "Get LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -30116,7 +30889,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_ldap", "summary": "Delete LDAP Credential", "description": "### LDAP login information for the specified user.", @@ -30179,7 +30954,9 @@ }, "/users/{user_id}/credentials_google": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_google", "summary": "Get Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -30239,7 +31016,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_google", "summary": "Delete Google Auth Credential", "description": "### Google authentication login information for the specified user.", @@ -30302,7 +31081,9 @@ }, "/users/{user_id}/credentials_saml": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_saml", "summary": "Get Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -30362,7 +31143,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_saml", "summary": "Delete Saml Auth Credential", "description": "### Saml authentication login information for the specified user.", @@ -30425,7 +31208,9 @@ }, "/users/{user_id}/credentials_oidc": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_oidc", "summary": "Get OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -30485,7 +31270,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_oidc", "summary": "Delete OIDC Auth Credential", "description": "### OpenID Connect (OIDC) authentication login information for the specified user.", @@ -30548,7 +31335,9 @@ }, "/users/{user_id}/credentials_api3/{credentials_api3_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_api3", "summary": "Get API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -30617,7 +31406,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_api3", "summary": "Delete API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -30689,7 +31480,9 @@ }, "/users/{user_id}/credentials_api3": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_api3s", "summary": "Get All API 3 Credentials", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -30752,7 +31545,9 @@ "x-looker-activity-type": "non_query" }, "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_api3", "summary": "Create API 3 Credential", "description": "### API 3 login information for the specified user. This is for the newer API keys that can be added for any user.", @@ -30844,7 +31639,9 @@ }, "/users/{user_id}/credentials_embed/{credentials_embed_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_embed", "summary": "Get Embedding Credential", "description": "### Embed login information for the specified user.", @@ -30913,7 +31710,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_embed", "summary": "Delete Embedding Credential", "description": "### Embed login information for the specified user.", @@ -30985,7 +31784,9 @@ }, "/users/{user_id}/credentials_embed": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_credentials_embeds", "summary": "Get All Embedding Credentials", "description": "### Embed login information for the specified user.", @@ -31050,7 +31851,9 @@ }, "/users/{user_id}/credentials_looker_openid": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_credentials_looker_openid", "summary": "Get Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -31110,7 +31913,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_credentials_looker_openid", "summary": "Delete Looker OpenId Credential", "description": "### Looker Openid login information for the specified user. Used by Looker Analysts.", @@ -31173,7 +31978,9 @@ }, "/users/{user_id}/sessions/{session_id}": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_session", "summary": "Get Web Login Session", "description": "### Web login session for the specified user.", @@ -31242,7 +32049,9 @@ "x-looker-activity-type": "non_query" }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_session", "summary": "Delete Web Login Session", "description": "### Web login session for the specified user.", @@ -31314,7 +32123,9 @@ }, "/users/{user_id}/sessions": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "all_user_sessions", "summary": "Get All Web Login Sessions", "description": "### Web login session for the specified user.", @@ -31379,7 +32190,9 @@ }, "/users/{user_id}/credentials_email/password_reset": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_user_credentials_email_password_reset", "summary": "Create Password Reset Token", "description": "### Create a password reset token.\nThis will create a cryptographically secure random password reset token for the user.\nIf the user already has a password reset token then this invalidates the old token and creates a new one.\nThe token is expressed as the 'password_reset_url' of the user's email/password credential object.\nThis takes an optional 'expires' param to indicate if the new token should be an expiring token.\nTokens that expire are typically used for self-service password resets for existing users.\nInvitation emails for new users typically are not set to expire.\nThe expire period is always 60 minutes when expires is enabled.\nThis method can be called with an empty body.\n", @@ -31450,7 +32263,9 @@ }, "/users/{user_id}/roles": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_roles", "summary": "Get User Roles", "description": "### Get information about roles of a given user\n", @@ -31522,7 +32337,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_roles", "summary": "Set User Roles", "description": "### Set roles of the user with a specific id.\n", @@ -31601,7 +32418,9 @@ }, "/users/{user_id}/attribute_values": { "get": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "user_attribute_user_values", "summary": "Get User Attribute Values", "description": "### Get user attribute values for a given user.\n\nReturns the values of specified user attributes (or all user attributes) for a certain user.\n\nA value for each user attribute is searched for in the following locations, in this order:\n\n1. in the user's account information\n1. in groups that the user is a member of\n1. the default value of the user attribute\n\nIf more than one group has a value defined for a user attribute, the group with the lowest rank wins.\n\nThe response will only include user attributes for which values were found. Use `include_unset=true` to include\nempty records for user attributes with no value.\n\nThe value of all hidden user attributes will be blank.\n", @@ -31688,7 +32507,9 @@ }, "/users/{user_id}/attribute_values/{user_attribute_id}": { "patch": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "set_user_attribute_user_value", "summary": "Set User Attribute User Value", "description": "### Store a custom value for a user attribute in a user's account settings.\n\nPer-user user attribute values take precedence over group or default values.\n", @@ -31769,7 +32590,9 @@ } }, "delete": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "delete_user_attribute_user_value", "summary": "Delete User Attribute User Value", "description": "### Delete a user attribute value from a user's account settings.\n\nAfter the user attribute value is deleted from the user's account settings, subsequent requests\nfor the user attribute value for this user will draw from the user's groups or the default\nvalue of the user attribute. See [Get User Attribute Values](#!/User/user_attribute_user_values) for more\ninformation about how user attribute values are resolved.\n", @@ -31824,7 +32647,9 @@ }, "/users/{user_id}/credentials_email/send_password_reset": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "send_user_credentials_email_password_reset", "summary": "Send Password Reset Token", "description": "### Send a password reset token.\nThis will send a password reset email to the user. If a password reset token does not already exist\nfor this user, it will create one and then send it.\nIf the user has not yet set up their account, it will send a setup email to the user.\nThe URL sent in the email is expressed as the 'password_reset_url' of the user's email/password credential object.\nPassword reset URLs will expire in 60 minutes.\nThis method can be called with an empty body.\n", @@ -31886,7 +32711,9 @@ }, "/users/{user_id}/update_emails": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "wipeout_user_emails", "summary": "Wipeout User Emails", "description": "### Change a disabled user's email addresses\n\nAllows the admin to change the email addresses for all the user's\nassociated credentials. Will overwrite all associated email addresses with\nthe value supplied in the 'email' body param.\nThe user's 'is_disabled' status must be true.\n", @@ -31989,7 +32816,9 @@ }, "/users/embed_user": { "post": { - "tags": ["User"], + "tags": [ + "User" + ], "operationId": "create_embed_user", "summary": "Create an embed user from an external user ID", "description": "Create an embed user from an external user ID\n", @@ -32042,7 +32871,9 @@ }, "/vector_thumbnail/{type}/{resource_id}": { "get": { - "tags": ["Content"], + "tags": [ + "Content" + ], "operationId": "vector_thumbnail", "summary": "Get Vector Thumbnail", "description": "### Get a vector image representing the contents of a dashboard or look.\n\n# DEPRECATED: Use [content_thumbnail()](#!/Content/content_thumbnail)\n\nThe returned thumbnail is an abstract representation of the contents of a dashbord or look and does not\nreflect the actual data displayed in the respective visualizations.\n", @@ -32114,7 +32945,9 @@ }, "/versions": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "versions", "summary": "Get ApiVersion", "description": "### Get information about all API versions supported by this Looker instance.\n", @@ -32167,7 +33000,9 @@ }, "/api_spec/{api_version}/{specification}": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "api_spec", "summary": "Get an API specification", "description": "### Get an API specification for this Looker instance.\n\nThe specification is returned as a JSON document in Swagger 2.x format\n", @@ -32230,7 +33065,9 @@ }, "/whitelabel_configuration": { "get": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "whitelabel_configuration", "summary": "Get Whitelabel configuration", "description": "### This feature is enabled only by special license.\n### Gets the whitelabel configuration, which includes hiding documentation links, custom favicon uploading, etc.\n", @@ -32282,7 +33119,9 @@ "x-looker-activity-type": "non_query" }, "put": { - "tags": ["Config"], + "tags": [ + "Config" + ], "operationId": "update_whitelabel_configuration", "summary": "Update Whitelabel configuration", "description": "### Update the whitelabel configuration\n", @@ -32356,7 +33195,9 @@ }, "/workspaces": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "all_workspaces", "summary": "Get All Workspaces", "description": "### Get All Workspaces\n\nReturns all workspaces available to the calling user.\n", @@ -32401,7 +33242,9 @@ }, "/workspaces/{workspace_id}": { "get": { - "tags": ["Workspace"], + "tags": [ + "Workspace" + ], "operationId": "workspace", "summary": "Get Workspace", "description": "### Get A Workspace\n\nReturns information about a workspace such as the git status and selected branches\nof all projects available to the caller's user account.\n\nA workspace defines which versions of project files will be used to evaluate expressions\nand operations that use model definitions - operations such as running queries or rendering dashboards.\nEach project has its own git repository, and each project in a workspace may be configured to reference\nparticular branch or revision within their respective repositories.\n\nThere are two predefined workspaces available: \"production\" and \"dev\".\n\nThe production workspace is shared across all Looker users. Models in the production workspace are read-only.\nChanging files in production is accomplished by modifying files in a git branch and using Pull Requests\nto merge the changes from the dev branch into the production branch, and then telling\nLooker to sync with production.\n\nThe dev workspace is local to each Looker user. Changes made to project/model files in the dev workspace only affect\nthat user, and only when the dev workspace is selected as the active workspace for the API session.\n(See set_session_workspace()).\n\nThe dev workspace is NOT unique to an API session. Two applications accessing the Looker API using\nthe same user account will see the same files in the dev workspace. To avoid collisions between\nAPI clients it's best to have each client login with API3 credentials for a different user account.\n\nChanges made to files in a dev workspace are persistent across API sessions. It's a good\nidea to commit any changes you've made to the git repository, but not strictly required. Your modified files\nreside in a special user-specific directory on the Looker server and will still be there when you login in again\nlater and use update_session(workspace_id: \"dev\") to select the dev workspace for the new API session.\n", @@ -32478,7 +33321,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "DashboardBase": { "properties": { @@ -32866,7 +33712,10 @@ } }, "x-looker-status": "stable", - "required": ["message", "documentation_url"] + "required": [ + "message", + "documentation_url" + ] }, "ValidationErrorDetail": { "properties": { @@ -32897,7 +33746,9 @@ } }, "x-looker-status": "stable", - "required": ["documentation_url"] + "required": [ + "documentation_url" + ] }, "AccessToken": { "properties": { @@ -32949,7 +33800,10 @@ } }, "x-looker-status": "beta", - "required": ["field_name", "field_value"] + "required": [ + "field_name", + "field_value" + ] }, "AlertAppliedDashboardFilter": { "properties": { @@ -32976,7 +33830,11 @@ } }, "x-looker-status": "beta", - "required": ["filter_title", "field_name", "filter_value"] + "required": [ + "filter_title", + "field_name", + "filter_value" + ] }, "AlertField": { "properties": { @@ -33000,7 +33858,10 @@ } }, "x-looker-status": "beta", - "required": ["title", "name"] + "required": [ + "title", + "name" + ] }, "AlertConditionState": { "properties": { @@ -33110,7 +33971,9 @@ }, "investigative_content_type": { "type": "string", - "enum": ["dashboard"], + "enum": [ + "dashboard" + ], "description": "The type of the investigative content Valid values are: \"dashboard\".", "nullable": true }, @@ -33206,7 +34069,9 @@ } }, "x-looker-status": "beta", - "required": ["alert_id"] + "required": [ + "alert_id" + ] }, "AlertNotifications": { "properties": { @@ -33263,7 +34128,10 @@ "properties": { "destination_type": { "type": "string", - "enum": ["EMAIL", "ACTION_HUB"], + "enum": [ + "EMAIL", + "ACTION_HUB" + ], "description": "Type of destination that the alert will be sent to Valid values are: \"EMAIL\", \"ACTION_HUB\".", "nullable": false }, @@ -33284,7 +34152,9 @@ } }, "x-looker-status": "beta", - "required": ["destination_type"] + "required": [ + "destination_type" + ] }, "AlertPatch": { "properties": { @@ -33902,7 +34772,10 @@ "permission_type": { "type": "string", "readOnly": true, - "enum": ["view", "edit"], + "enum": [ + "view", + "edit" + ], "description": "Type of permission: \"view\" or \"edit\" Valid values are: \"view\", \"edit\".", "nullable": true }, @@ -34116,7 +34989,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "ContentValidationLook": { "properties": { @@ -34518,7 +35393,9 @@ } }, "x-looker-status": "stable", - "required": ["external_user_id"] + "required": [ + "external_user_id" + ] }, "CreateOAuthApplicationUserStateRequest": { "properties": { @@ -34573,7 +35450,10 @@ } }, "x-looker-status": "beta", - "required": ["user_id", "oauth_application_id"] + "required": [ + "user_id", + "oauth_application_id" + ] }, "CredentialsApi3": { "properties": { @@ -35678,7 +36558,12 @@ } }, "x-looker-status": "stable", - "required": ["dashboard_id", "name", "title", "type"] + "required": [ + "dashboard_id", + "name", + "title", + "type" + ] }, "DashboardLayoutComponent": { "properties": { @@ -36542,6 +37427,12 @@ "description": "(Read/Write) SQL Dialect name", "nullable": true }, + "supports_data_studio_link": { + "type": "boolean", + "readOnly": true, + "description": "Database connection has the ability to support open data studio from explore", + "nullable": false + }, "created_at": { "type": "string", "readOnly": true, @@ -37066,7 +37957,9 @@ } }, "x-looker-status": "beta", - "required": ["target_url"] + "required": [ + "target_url" + ] }, "EmbedSsoParams": { "properties": { @@ -37152,7 +38045,9 @@ } }, "x-looker-status": "stable", - "required": ["target_url"] + "required": [ + "target_url" + ] }, "EmbedSecret": { "properties": { @@ -37239,7 +38134,11 @@ }, "ssl_version": { "type": "string", - "enum": ["TLSv1_1", "SSLv23", "TLSv1_2"], + "enum": [ + "TLSv1_1", + "SSLv23", + "TLSv1_2" + ], "description": "TLS version selected Valid values are: \"TLSv1_1\", \"SSLv23\", \"TLSv1_2\".", "nullable": true } @@ -37397,7 +38296,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "CreateFolder": { "properties": { @@ -37413,7 +38314,10 @@ } }, "x-looker-status": "stable", - "required": ["name", "parent_id"] + "required": [ + "name", + "parent_id" + ] }, "UpdateFolder": { "properties": { @@ -37551,7 +38455,9 @@ } }, "x-looker-status": "stable", - "required": ["name"] + "required": [ + "name" + ] }, "GitBranch": { "properties": { @@ -38163,7 +39069,12 @@ "type": "string" }, "readOnly": true, - "enum": ["cell", "query", "dashboard", "none"], + "enum": [ + "cell", + "query", + "dashboard", + "none" + ], "description": "A list of action types the integration supports. Valid values are: \"cell\", \"query\", \"dashboard\", \"none\".", "nullable": false }, @@ -38173,7 +39084,10 @@ "type": "string" }, "readOnly": true, - "enum": ["formatted", "unformatted"], + "enum": [ + "formatted", + "unformatted" + ], "description": "A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"formatted\", \"unformatted\".", "nullable": false }, @@ -38183,7 +39097,10 @@ "type": "string" }, "readOnly": true, - "enum": ["apply", "noapply"], + "enum": [ + "apply", + "noapply" + ], "description": "A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: \"apply\", \"noapply\".", "nullable": false }, @@ -38193,7 +39110,10 @@ "type": "string" }, "readOnly": true, - "enum": ["push", "url"], + "enum": [ + "push", + "url" + ], "description": "A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: \"push\", \"url\".", "nullable": false }, @@ -40191,7 +41111,10 @@ "align": { "type": "string", "readOnly": true, - "enum": ["left", "right"], + "enum": [ + "left", + "right" + ], "description": "The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: \"left\", \"right\".", "nullable": false }, @@ -40204,7 +41127,12 @@ "category": { "type": "string", "readOnly": true, - "enum": ["parameter", "filter", "measure", "dimension"], + "enum": [ + "parameter", + "filter", + "measure", + "dimension" + ], "description": "Field category Valid values are: \"parameter\", \"filter\", \"measure\", \"dimension\".", "nullable": true }, @@ -40256,7 +41184,10 @@ "fill_style": { "type": "string", "readOnly": true, - "enum": ["enumeration", "range"], + "enum": [ + "enumeration", + "range" + ], "description": "The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: \"enumeration\", \"range\".", "nullable": true }, @@ -40684,7 +41615,10 @@ "format": { "type": "string", "readOnly": true, - "enum": ["topojson", "vector_tile_region"], + "enum": [ + "topojson", + "vector_tile_region" + ], "description": "Specifies the data format of the region information. Valid values are: \"topojson\", \"vector_tile_region\".", "nullable": false }, @@ -41194,13 +42128,19 @@ }, "device_type": { "type": "string", - "enum": ["android", "ios"], + "enum": [ + "android", + "ios" + ], "description": "Specifies type of device. Valid values are: \"android\", \"ios\".", "nullable": false } }, "x-looker-status": "beta", - "required": ["device_token", "device_type"] + "required": [ + "device_token", + "device_type" + ] }, "ModelSet": { "properties": { @@ -41918,7 +42858,12 @@ }, "pull_request_mode": { "type": "string", - "enum": ["off", "links", "recommended", "required"], + "enum": [ + "off", + "links", + "recommended", + "required" + ], "description": "The git pull request policy for this project. Valid values are: \"off\", \"links\", \"recommended\", \"required\".", "nullable": false }, @@ -42357,7 +43302,10 @@ } }, "x-looker-status": "stable", - "required": ["model", "view"] + "required": [ + "model", + "view" + ] }, "CreateQueryTask": { "properties": { @@ -42414,7 +43362,10 @@ } }, "x-looker-status": "stable", - "required": ["query_id", "result_format"] + "required": [ + "query_id", + "result_format" + ] }, "QueryTask": { "properties": { @@ -44898,7 +45849,9 @@ } }, "x-looker-status": "beta", - "required": ["duration_in_seconds"] + "required": [ + "duration_in_seconds" + ] }, "SupportAccessStatus": { "properties": { @@ -45142,7 +46095,11 @@ } }, "x-looker-status": "stable", - "required": ["name", "label", "type"] + "required": [ + "name", + "label", + "type" + ] }, "UserAttributeGroupValue": { "properties": { @@ -45278,7 +46235,9 @@ } }, "x-looker-status": "stable", - "required": ["email"] + "required": [ + "email" + ] }, "UserLoginLockout": { "properties": { @@ -45909,4 +46868,4 @@ } } } -} +} \ No newline at end of file diff --git a/swift/looker/rtl/constants.swift b/swift/looker/rtl/constants.swift index 854db73b3..8f03b1463 100644 --- a/swift/looker/rtl/constants.swift +++ b/swift/looker/rtl/constants.swift @@ -51,7 +51,7 @@ extension String { } public struct Constants { - public static let lookerVersion = "22.12" + public static let lookerVersion = "22.14" public static let apiVersion = "4.0" public static let defaultApiVersion = "4.0" // Swift requires API 4.0 public static let sdkVersion = #"\#(apiVersion).\#(lookerVersion)"# diff --git a/swift/looker/sdk/methods.swift b/swift/looker/sdk/methods.swift index 5d04d4257..d862feaab 100644 --- a/swift/looker/sdk/methods.swift +++ b/swift/looker/sdk/methods.swift @@ -1598,10 +1598,14 @@ open class LookerSDK: APIMethods { * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ filter_or: Bool? = nil, + /** + * @param {String} permission Filter results based on permission, either show (default) or update + */ + permission: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse<[Board], SDKError> { let result: SDKResponse<[Board], SDKError> = self.get("/boards/search", - ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?], nil, options) + ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?, "permission": permission], nil, options) return result } diff --git a/swift/looker/sdk/models.swift b/swift/looker/sdk/models.swift index 2956cf946..78f7751c1 100644 --- a/swift/looker/sdk/models.swift +++ b/swift/looker/sdk/models.swift @@ -6350,6 +6350,7 @@ public struct DBConnection: SDKModel { case _jdbc_additional_params = "jdbc_additional_params" case _pool_timeout = "pool_timeout" case _dialect_name = "dialect_name" + case supports_data_studio_link case _created_at = "created_at" case _user_id = "user_id" case example @@ -6556,6 +6557,11 @@ public struct DBConnection: SDKModel { set { _dialect_name = newValue.map(AnyString.init) } } + /** + * Database connection has the ability to support open data studio from explore (read-only) + */ + public var supports_data_studio_link: Bool? + private var _created_at: AnyString? /** * Creation date for this connection (read-only) @@ -6693,7 +6699,7 @@ public struct DBConnection: SDKModel { */ public var pdt_api_control_enabled: Bool? - public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, uses_oauth: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, created_at: String? = nil, user_id: String? = nil, example: Bool? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, last_regen_at: String? = nil, last_reap_at: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: DBConnectionOverride? = nil, managed: Bool? = nil, tunnel_id: String? = nil, pdt_concurrency: Int64? = nil, disable_context_comment: Bool? = nil, oauth_application_id: String? = nil, always_retry_failed_builds: Bool? = nil, cost_estimate_enabled: Bool? = nil, pdt_api_control_enabled: Bool? = nil) { + public init(can: StringDictionary? = nil, name: String? = nil, dialect: Dialect? = nil, snippets: [Snippet]? = nil, pdts_enabled: Bool? = nil, host: String? = nil, port: String? = nil, username: String? = nil, password: String? = nil, uses_oauth: Bool? = nil, certificate: String? = nil, file_type: String? = nil, database: String? = nil, db_timezone: String? = nil, query_timezone: String? = nil, schema: String? = nil, max_connections: Int64? = nil, max_billing_gigabytes: String? = nil, ssl: Bool? = nil, verify_ssl: Bool? = nil, tmp_db_name: String? = nil, jdbc_additional_params: String? = nil, pool_timeout: Int64? = nil, dialect_name: String? = nil, supports_data_studio_link: Bool? = nil, created_at: String? = nil, user_id: String? = nil, example: Bool? = nil, user_db_credentials: Bool? = nil, user_attribute_fields: [String]? = nil, maintenance_cron: String? = nil, last_regen_at: String? = nil, last_reap_at: String? = nil, sql_runner_precache_tables: Bool? = nil, sql_writing_with_info_schema: Bool? = nil, after_connect_statements: String? = nil, pdt_context_override: DBConnectionOverride? = nil, managed: Bool? = nil, tunnel_id: String? = nil, pdt_concurrency: Int64? = nil, disable_context_comment: Bool? = nil, oauth_application_id: String? = nil, always_retry_failed_builds: Bool? = nil, cost_estimate_enabled: Bool? = nil, pdt_api_control_enabled: Bool? = nil) { self.can = can self._name = name.map(AnyString.init) self.dialect = dialect @@ -6718,6 +6724,7 @@ public struct DBConnection: SDKModel { self._jdbc_additional_params = jdbc_additional_params.map(AnyString.init) self._pool_timeout = pool_timeout.map(AnyInt.init) self._dialect_name = dialect_name.map(AnyString.init) + self.supports_data_studio_link = supports_data_studio_link self._created_at = created_at.map(AnyString.init) self._user_id = user_id.map(AnyString.init) self.example = example @@ -22822,7 +22829,7 @@ public struct WriteDatagroup: SDKModel { /** * Dynamic writeable type for DBConnection removes: - * can, dialect, snippets, pdts_enabled, uses_oauth, created_at, user_id, example, last_regen_at, last_reap_at, managed + * can, dialect, snippets, pdts_enabled, uses_oauth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed */ public struct WriteDBConnection: SDKModel { diff --git a/swift/looker/sdk/streams.swift b/swift/looker/sdk/streams.swift index c2e96fee4..fba00e439 100644 --- a/swift/looker/sdk/streams.swift +++ b/swift/looker/sdk/streams.swift @@ -1596,10 +1596,14 @@ open class LookerSDKStream: APIMethods { * @param {Bool} filter_or Combine given search criteria in a boolean OR expression */ filter_or: Bool? = nil, + /** + * @param {String} permission Filter results based on permission, either show (default) or update + */ + permission: String? = nil, options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/boards/search", - ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?], nil, options) + ["title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited as Any?, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or as Any?, "permission": permission], nil, options) return result }