{"openapi":"3.1.0","info":{"title":"Muvia API","description":"Read your company's Muvia data: projects, datasets and their rows, edge nodes.\n\nAuthenticate every request with an API key in the `X-Api-Key` header. Keys are\nissued, scoped and revoked by a company administrator in Muvia's API keys console.\n","version":"1.0.0"},"paths":{"/v1/company":{"get":{"tags":["Company"],"summary":"Your company","description":"The company the API key belongs to.\n\nRequired scope: `settings_read`","operationId":"get_company","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicCompany"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"security":[{"ApiKey":["settings_read"]}],"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/whoami":{"get":{"tags":["Company"],"summary":"This key","description":"What the key presented may do and spend, and where the documentation is.\n\nAny valid key answers, whatever its scopes. It counts toward the key's per-minute\nlimit but not toward the company's daily quota.\n\nRequired scope: none, any valid key","operationId":"whoami","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicWhoami"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"security":[{"ApiKey":[]}],"x-muvia-effect":"read","x-muvia-quota":"free-daily"}},"/v1/projects":{"get":{"tags":["Projects"],"summary":"List projects","description":"The company's projects, by name.\n\nRequired scope: `settings_read`","operationId":"list_projects","security":[{"ApiKey":["settings_read"]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PublicProject_"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/projects/{project_id}":{"get":{"tags":["Projects"],"summary":"Get a project","description":"One of the company's projects.\n\nRequired scope: `settings_read`","operationId":"get_project","security":[{"ApiKey":["settings_read"]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicProject"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/projects/{project_id}/datasets":{"get":{"tags":["Datasets"],"summary":"List datasets","description":"The datasets the project shows, by name: its own, and the physical\ndatasets of its database -- of the node tables only the flat view and the latest values\n(`shown_in_project`).\n\nRequired scope: `datasets_read`","operationId":"list_datasets","security":[{"ApiKey":["datasets_read"]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PublicDataset_"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/projects/{project_id}/datasets/{dataset_id}":{"get":{"tags":["Datasets"],"summary":"Get a dataset","description":"One dataset the project shows, with its columns.\n\nRequired scope: `datasets_read`","operationId":"get_dataset","security":[{"ApiKey":["datasets_read"]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDataset"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/projects/{project_id}/datasets/{dataset_id}/rows":{"get":{"tags":["Datasets"],"summary":"Read a dataset's rows","description":"One page of the dataset's rows, read as the platform's preview reads them.\n\nPages follow the order the dataset's query returns; a query without\n``ORDER BY`` may return rows in a different order on each call. ``has_more``\nsays whether a next page exists. The query runs under the platform's\nread-only settings for SQL a person wrote, with its time bounds.\n\nA dataset adding the context of events to its rows is read over a period:\n``start`` and ``end`` are required for it -- without them a 422\n``enrichment_needs_a_window`` -- and every other dataset reads as it\nalways did, whatever they say.\n\nRequired scope: `datasets_read`","operationId":"list_dataset_rows","security":[{"ApiKey":["datasets_read"]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"description":"From 1.","default":1,"title":"Page"},"description":"From 1."},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Size"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"The period's start, an ISO 8601 instant; with end.","title":"Start"},"description":"The period's start, an ISO 8601 instant; with end."},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"The period's end, an ISO 8601 instant; with start.","title":"End"},"description":"The period's end, an ISO 8601 instant; with start."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicDatasetRows"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/projects/{project_id}/nodes":{"get":{"tags":["Nodes"],"summary":"List nodes","description":"The project's edge nodes, oldest enrolment first.\n\nRequired scope: `nodes_read`","operationId":"list_nodes","security":[{"ApiKey":["nodes_read"]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Page size","default":50,"title":"Size"},"description":"Page size"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PublicNode_"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}},"/v1/projects/{project_id}/nodes/{node_id}":{"get":{"tags":["Nodes"],"summary":"Get a node","description":"One of the project's edge nodes.\n\nRequired scope: `nodes_read`","operationId":"get_node","security":[{"ApiKey":["nodes_read"]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"node_id","in":"path","required":true,"schema":{"type":"string","title":"Node Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicNode"}}}},"401":{"description":"No valid API key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"403":{"description":"The key lacks the required scope, or data export is not active for the company (`module_not_active`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Not found, or not the key's company's: the same answer.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"409":{"description":"The project has no database, so no rows to read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"422":{"description":"A parameter did not validate, or a dataset's query could not run.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"A rate limit was reached; see Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"500":{"description":"An unexpected failure.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"503":{"description":"The data store is not available.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}},"x-muvia-effect":"read","x-muvia-quota":"counted"}}},"components":{"schemas":{"Page_PublicDataset_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicDataset"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0,"title":"Total"},"page":{"type":"integer","minimum":1,"title":"Page"},"size":{"type":"integer","minimum":1,"title":"Size"},"pages":{"type":"integer","minimum":0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[PublicDataset]"},"Page_PublicNode_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicNode"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0,"title":"Total"},"page":{"type":"integer","minimum":1,"title":"Page"},"size":{"type":"integer","minimum":1,"title":"Size"},"pages":{"type":"integer","minimum":0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[PublicNode]"},"Page_PublicProject_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PublicProject"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0,"title":"Total"},"page":{"type":"integer","minimum":1,"title":"Page"},"size":{"type":"integer","minimum":1,"title":"Size"},"pages":{"type":"integer","minimum":0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[PublicProject]"},"PublicColumn":{"properties":{"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"}},"type":"object","required":["name","type"],"title":"PublicColumn","description":"A column of a dataset, with its ClickHouse type."},"PublicCompany":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"PublicCompany","description":"The company the API key belongs to."},"PublicDataset":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"The project that owns it; null for a physical dataset, which belongs to the project's database and shows in every project on it."},"is_physical":{"type":"boolean","title":"Is Physical","default":false},"columns":{"items":{"$ref":"#/components/schemas/PublicColumn"},"type":"array","title":"Columns","default":[]},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"PublicDataset","description":"A dataset a project shows."},"PublicDatasetRows":{"properties":{"columns":{"items":{"type":"string"},"type":"array","title":"Columns"},"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"page":{"type":"integer","title":"Page"},"size":{"type":"integer","title":"Size"},"has_more":{"type":"boolean","title":"Has More","description":"Whether a next page exists. Rows are not counted: counting an arbitrary query costs as much as reading it."}},"type":"object","required":["columns","items","page","size","has_more"],"title":"PublicDatasetRows","description":"One page of a dataset's rows, in the order its query returns them."},"PublicError":{"properties":{"error":{"$ref":"#/components/schemas/PublicErrorBody"}},"type":"object","required":["error"],"title":"PublicError","description":"Every answer that is not a success."},"PublicErrorBody":{"properties":{"code":{"type":"string","title":"Code","description":"Stable within v1: bad_request, unauthorized, forbidden, module_not_active, not_found, method_not_allowed, conflict, validation_error, query_failed, rate_limit_exceeded, not_implemented, service_unavailable, internal_error."},"message":{"type":"string","title":"Message","description":"For people; may be reworded."},"status":{"type":"integer","title":"Status"},"hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hint","description":"One fixed sentence per code saying what to do next."},"details":{"anyOf":[{"items":{"$ref":"#/components/schemas/PublicFieldError"},"type":"array"},{"type":"null"}],"title":"Details"}},"type":"object","required":["code","message","status"],"title":"PublicErrorBody"},"PublicFieldError":{"properties":{"field":{"type":"string","title":"Field"},"message":{"type":"string","title":"Message"}},"type":"object","required":["field","message"],"title":"PublicFieldError","description":"One field of a request that did not validate."},"PublicKeyInfo":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["id","name","scopes","expires_at"],"title":"PublicKeyInfo","description":"The key the request presented."},"PublicLimits":{"properties":{"requests_per_minute_per_key":{"type":"integer","title":"Requests Per Minute Per Key"},"requests_per_day_per_company":{"type":"integer","title":"Requests Per Day Per Company"},"requests_today_company":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requests Today Company","description":"Requests the company has spent in the current day window; null when the counter cannot be read."},"rows_page_size_max":{"type":"integer","title":"Rows Page Size Max","description":"The largest `size` of a rows page."},"page_size_max":{"type":"integer","title":"Page Size Max","description":"The largest `size` of a list page."}},"type":"object","required":["requests_per_minute_per_key","requests_per_day_per_company","requests_today_company","rows_page_size_max","page_size_max"],"title":"PublicLimits","description":"What the key may spend, from the installation's settings."},"PublicLinks":{"properties":{"docs":{"type":"string","title":"Docs"},"llms_txt":{"type":"string","title":"Llms Txt"},"openapi":{"type":"string","title":"Openapi"}},"type":"object","required":["docs","llms_txt","openapi"],"title":"PublicLinks"},"PublicMcp":{"properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url","description":"Null where the door is not mounted."},"available":{"type":"boolean","title":"Available","description":"Whether this company admits assistants now: its module and switch."},"writes":{"type":"boolean","title":"Writes","description":"Whether this key may propose or make changes through the assistant door: an administrator turned on «Can write through assistants» on it, and it holds a permission a change asks. This API itself only reads."}},"type":"object","required":["url","available","writes"],"title":"PublicMcp","description":"The assistant door (MCP) of the same installation."},"PublicNode":{"properties":{"id":{"type":"string","title":"Id","description":"The node's identifier, as the node reports it."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"project_id":{"type":"string","title":"Project Id"},"software_version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Software Version"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At","description":"When the node's agent last reported in."},"enrolled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Enrolled At","description":"When the node joined the project."}},"type":"object","required":["id","project_id"],"title":"PublicNode","description":"An edge node of a project, as its latest configuration names it."},"PublicProject":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"is_default":{"type":"boolean","title":"Is Default","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name"],"title":"PublicProject","description":"A project of the company."},"PublicWhoami":{"properties":{"key":{"$ref":"#/components/schemas/PublicKeyInfo"},"company":{"$ref":"#/components/schemas/PublicCompany"},"limits":{"$ref":"#/components/schemas/PublicLimits"},"mcp":{"$ref":"#/components/schemas/PublicMcp"},"links":{"$ref":"#/components/schemas/PublicLinks"}},"type":"object","required":["key","company","limits","mcp","links"],"title":"PublicWhoami","description":"What a key can learn about itself before it reads anything."}},"securitySchemes":{"ApiKey":{"type":"apiKey","description":"An inbound API key (`mvk_...`) issued from the API keys console.","in":"header","name":"X-Api-Key"}}},"servers":[{"url":"https://api.muviabi.com/api/public"}]}