.. _metadata_apis: Schema / Metadata API Reference =============================== .. contents:: Table of contents :backlinks: none :depth: 1 :local: The Schema / Metadata API provides the following features: 1. Execute SQL on the underlying Postgres database, supports schema modifying actions. 2. Modify Hasura metadata (permissions rules and relationships). This is primarily intended to be used as an ``admin`` API to manage Hasura schema and metadata. Endpoint -------- All requests are ``POST`` requests to the ``/v1/query`` endpoint. Request structure ----------------- .. code-block:: http POST /v1/query HTTP/1.1 { "type": "", "args": } Request body ^^^^^^^^^^^^ .. parsed-literal:: Query_ .. _Query: Query ***** .. list-table:: :header-rows: 1 * - Key - Required - Schema - Description * - type - true - String - Type of the query * - args - true - JSON Value - The arguments to the query The various types of queries are listed in the following table: .. list-table:: :header-rows: 1 * - ``type`` - ``args`` - Synopsis * - **bulk** - :ref:`Query ` array - Execute multiple operations in a single query * - :ref:`run_sql` - :ref:`run_sql_args ` - Run SQL directly on Postgres * - :ref:`track_table` - :ref:`TableName ` - Add a table/view * - :ref:`untrack_table` - :ref:`untrack_table_args ` - Remove a table/view * - :ref:`track_function` - :ref:`FunctionName ` - Add a SQL function * - :ref:`untrack_function` - :ref:`FunctionName ` - Remove a SQL function * - :ref:`create_object_relationship` - :ref:`create_object_relationship_args ` - Define a new object relationship * - :ref:`create_array_relationship` - :ref:`create_array_relationship_args ` - Define a new array relationship * - :ref:`drop_relationship` - :ref:`drop_relationship_args ` - Drop an existing relationship * - :ref:`set_relationship_comment` - :ref:`set_relationship_comment_args ` - Set comment on an existing relationship * - :ref:`create_insert_permission` - :ref:`create_insert_permission_args ` - Specify insert permission * - :ref:`drop_insert_permission` - :ref:`drop_insert_permission_args ` - Remove existing insert permission * - :ref:`create_select_permission` - :ref:`create_select_permission_args ` - Specify select permission * - :ref:`drop_select_permission` - :ref:`drop_select_permission_args ` - Remove existing select permission * - :ref:`create_update_permission` - :ref:`create_update_permission_args ` - Specify update permission * - :ref:`drop_update_permission` - :ref:`drop_update_permission_args ` - Remove existing update permission * - :ref:`create_delete_permission` - :ref:`create_delete_permission_args ` - Specify delete permission * - :ref:`drop_delete_permission` - :ref:`drop_delete_permission_args ` - Remove existing delete permission * - :ref:`set_permission_comment` - :ref:`set_permission_comment_args ` - Set comment on an existing permission * - :ref:`create_event_trigger` - :ref:`create_event_trigger_args ` - Create or replace event trigger * - :ref:`delete_event_trigger` - :ref:`delete_event_trigger_args ` - Delete existing event trigger * - :ref:`export_metadata` - ``{}`` - Export the current metadata * - :ref:`replace_metadata` - :ref:`replace_metadata_args ` - Import and replace existing metadata * - :ref:`reload_metadata` - ``{}`` - Reload changes to the underlying Postgres DB * - :ref:`clear_metadata` - ``{}`` - Clear/wipe-out the current metadata state form server **See:** - :doc:`Run SQL ` - :doc:`Tables/Views ` - :doc:`Custom SQL Functions ` - :doc:`Relationships ` - :doc:`Permissions ` - :doc:`Event Triggers ` - :doc:`Manage Metadata ` Response structure ------------------ .. list-table:: :widths: 10 10 30 :header-rows: 1 * - Status code - Description - Response structure * - ``200`` - Success - .. parsed-literal:: Request specific * - ``400`` - Bad request - .. code-block:: haskell { "path" : String, "error" : String } * - ``401`` - Unauthorized - .. code-block:: haskell { "error" : String } * - ``500`` - Internal server error - .. code-block:: haskell { "error" : String } Error codes ----------- .. csv-table:: :file: dataerrors.csv :widths: 10, 20, 70 :header-rows: 1 .. toctree:: :maxdepth: 1 :hidden: Run SQL Tables/Views Custom Functions Relationships Permissions Event Triggers Manage Metadata Syntax definitions