Ocient HTTP Query API

The Ocient HTTP Query API executes SQL statements against an Ocient System over HTTPS and returns results as JSON. It runs on the SQL Nodes of an Ocient deployment behind an OpenAPI-enabled connectivity pool, and exposes endpoints for executing statements, retrieving system version information, password login and logout, and a full OpenID Connect single sign-on flow including authorization-code callback, token exchange, device grant, device grant verification, and token refresh. Each Ocient SQL Node also serves its own OpenAPI definition at /openapi.yaml and /openapi.json.

OpenAPI Specification

ocient-http-query-api-openapi-original.json Raw ↑
{
  "openapi": "3.1.0",
  "info": {
    "title": "Generated API methods",
    "version": "1.0.0",
    "description": "Generated from imported ApiMethodV2 blocks."
  },
  "servers": [
    {
      "url": "https://{sql_node}",
      "variables": {
        "sql_node": {
          "default": "sql_node"
        }
      }
    },
    {
      "url": "http://oc1-lts0:9090"
    }
  ],
  "paths": {
    "/v1/execute/{database}": {
      "post": {
        "summary": "execute",
        "description": "Executes a SQL statement and returns the results. Supports requests for both regular and streaming responses. \n\nWith streaming, results return as they become available using the HTTP chunked transfer encoding. Each chunk contains a valid JSON object that you can parse independently.\n\nFor details on streaming, including large-response configuration, see the header parameters. \n\nYou can specify the database in the request body. If you do not specify the database, the Ocient System defaults to the database specified in the authentication token or system settings. If you specify a database in the request, this value overrides any alternate database value specified as a body parameter.",
        "operationId": "postOcientHttpQueryApiExecute",
        "tags": [
          "Ocient HTTP Query API"
        ],
        "servers": [
          {
            "url": "https://{sql_node}",
            "variables": {
              "sql_node": {
                "default": "sql_node"
              }
            }
          }
        ],
        "parameters": [
          {
            "name": "database",
            "in": "path",
            "required": true,
            "description": "The specific database in your system for the API call. \n\nIf you do not specify the database, the executed query defaults to the database from the authentication token or system settings.\n\nIf you include a database in the path, this value overrides any alternate database value specified as a body parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Sets the format for the requested data. \n\nNote: This parameter applies only when using Content-Type: text/plain. When using Content-Type: application/json, specify the format in the request body.\n\nSupported values are: \n\n\"array\" — Returns schema and data as arrays (more efficient for large data sets). (default)\n\"collection\" — Returns data as JSON objects (more convenient for client processing).\n\nExample: format=collection",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "schema",
            "in": "query",
            "required": false,
            "description": "The schema to use for the SQL statement.\n\nExample: schema=mydata\n\nNote: This parameter applies only when using Content-Type: text/plain. When using Content-Type: application/json, specify the schema in the request body.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "authorization",
            "in": "header",
            "required": true,
            "description": "An access token to connect to your Ocient System. \n\nTo receive an access token, you must provide your username and password using the login endpoint. \n\nThe system passes the credentials using the Authorization HTTP header using Base64-encoded Basic Authentication.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "content-type",
            "in": "header",
            "required": true,
            "description": "Specifies the request body format. Options include: \n\napplication/json\n\nDescription: The standard option for submitting queries and receiving responses as a single JSON object or array. Use when submitting queries with relatively small or moderate result sets or when you want the entire result set in one response.\n\napplication/stream+json\n\nDescription: Enables streaming of multiple JSON objects, allowing the API to send results as they become available. Use when querying large tables or expecting a large volume of results or when you want to process each row or result as soon as it is received, without waiting for the full response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept-encoding",
            "in": "header",
            "required": false,
            "description": "Supported compression algorithms for responses. You can specify multiple algorithms as a comma-separated list. \n\nSupported values are: \n\"gzip\" \n\"deflate\" \n\"be\" (Brotli)\nor combinations like: \"gzip, be\".\n\nNote: For large result sets, compression can impact performance. Without compression, the result sets can be chunks of rows processed in a streaming fashion. With compression, the entire result set must be compressed before it is returned to the client. The client side must decompress the entire result set before processing any rows.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "required": false,
            "description": "Supported response media types. Regardless of the Accept header, the API returns large query results using chunked encoding. Also, see the note about compression in the accept-encoding parameter.\n\nSupported values are: \n\n\"application/json\" (default)\n\"application/stream+json\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "preferred-encoding",
            "in": "header",
            "required": false,
            "description": "Indicates the preferred encoding type from those specified in the accept-encoding parameter. This header provides fine-grained control when the accept-encoding parameter contains multiple values, allowing the client to specify which encoding is preferred for this specific request explicitly.\n\nSupported values are: \n\n\"gzip\" \n\"br\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "preferred-compression-level",
            "in": "header",
            "required": false,
            "description": "Specifies the chosen compression level for the selected encoding algorithm. Values range from 1 (fastest, least compression) to 9 (slowest, maximum compression). The exact behavior depends on the specific compression algorithm.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query_id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "object",
                      "properties": {
                        "reason": {
                          "type": "string"
                        },
                        "sql_state": {
                          "type": "string"
                        },
                        "vendor_code": {
                          "type": "integer"
                        }
                      }
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "c1": {
                            "type": "integer"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "query_id": "ac4dd039-e385-400b-a428-fd1fdcd02e30",
                      "status": {
                        "reason": "The operation completed successfully",
                        "sql_state": "00000",
                        "vendor_code": 0
                      },
                      "data": [
                        {
                          "c1": 1
                        },
                        {
                          "c1": 2
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "statement": {
                    "type": "string",
                    "description": "A valid SQL statement to execute. \n\nExample: statement=SELECT * FROM customers LIMIT 10;\n\nYou can include parameters to substitute in the SQL statement by including them in the params body parameter."
                  },
                  "database": {
                    "type": "string",
                    "description": "A specific database in your system for the API call. \n\nIf you do not specify this parameter, the executed query defaults to the database from the authentication token or system settings."
                  },
                  "format": {
                    "type": "string",
                    "description": "Sets the output format of the query result data. \n\nSupported values are: \n\n\"array\" — Returns the schema and data as arrays (more efficient for large data sets). (default)\n\"collection\" — Returns data as JSON objects (more convenient for client processing)."
                  },
                  "params": {
                    "type": "object",
                    "description": "Parameters to substitute in the SQL statement for values enclosed in braces. The keys should match the parameter names in the statement (without the enclosing braces). Wrap string values in single quotes. All other data types do not use quotes. \n\nExample: If your SQL statement is SELECT * FROM orders WHERE order_date > {start_date}, then your API request should include values in the params body parameter, such as {'start_date': '2023-01-01'}."
                  },
                  "fetch_size": {
                    "type": "integer",
                    "description": "The number of rows to return in each chunk for streaming responses. This value must be 0 or greater. A value of 0 (default) means the database determines how many rows to return.  \n\nUse smaller values for interactive applications (100-1000 rows). For batch processing, use larger values (5000-10000 rows)."
                  },
                  "max_rows": {
                    "type": "integer",
                    "description": "The maximum number of rows to return. The default value is 9223372036854776000.\n\nNote: Adding a LIMIT clause to a SQL query is generally a better method to restrict the number of rows, as the query engine still generates the total number of rows, but only returns this value to the client."
                  }
                },
                "required": [
                  "statement"
                ]
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -u 'admin@system:admin' https://my_sql_node.com/v1/execute/system \\\n    -d '{\"statement\":\"SELECT * FROM sys.dummy2\", \"format\": \"collection\"}'"
          }
        ]
      },
      "get": {
        "summary": "execute",
        "description": "Alternative GET method for executing SQL statements. This method passes parameters as URL query parameters. This method does not support the params body parameter.\n\nSpecify which database to access in the query parameters. If you do not specify a database, the connection defaults to the database from the authentication token or system settings.\n\nThis method is most suitable for simple, read-only queries where the statement can be safely included in a URL. For complex queries or those with parameters, use the POST method instead.",
        "operationId": "getOcientHttpQueryApiExecute",
        "tags": [
          "Ocient HTTP Query API"
        ],
        "servers": [
          {
            "url": "https://{sql_node}",
            "variables": {
              "sql_node": {
                "default": "sql_node"
              }
            }
          }
        ],
        "parameters": [
          {
            "name": "database",
            "in": "path",
            "required": true,
            "description": "The specific database in your system for the API call. \n\nIf you do not specify the database, the executed query defaults to the database from the authentication token or system settings.\n\nIf you include a database in the path, this value overrides any alternate database value specified as a body parameter.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "statement",
            "in": "query",
            "required": true,
            "description": "A valid SQL statement to execute. The statement must be URL-encoded, e.g., statement=SELECT%20*%20FROM%20customers%20LIMIT%2010%3B",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "database",
            "in": "query",
            "required": false,
            "description": "A specific database in your system for the API call. \n\nIf you do not specify the database, the executed query defaults to the database from the authentication token or system settings.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "description": "Sets the response format. \n\nSupported values are: \n\n\"array\" — Returns the schema and data as arrays (more efficient for large data sets). (default)\n\"collection\" — Returns data as JSON objects (more convenient for client processing).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fetch_size",
            "in": "query",
            "required": false,
            "description": "The number of rows to return in each chunk for streaming responses. This value must be 0 or greater. A value of 0 (default) means the database determines how many rows to return. \n\nUse smaller values for interactive applications (100-1000 rows). For batch processing, use larger values (5000-10000 rows).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Authorization",
            "in": "header",
            "required": true,
            "description": "An access token to connect to your Ocient System. \n\nTo receive an access token, you must provide your username and password using the login endpoint. \n\nThe system passes the credentials using the Authorization HTTP header using Base64-encoded Basic Authentication.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Content-Type",
            "in": "header",
            "required": true,
            "description": "Specifies the request body format. Options include: \n\napplication/json\n\nDescription: The standard option for submitting queries and receiving responses as a single JSON object or array. Use when submitting queries with relatively small or moderate result sets or when you want the entire result set in one response.\n\napplication/stream+json\n\nDescription: Enables streaming of multiple JSON objects, allowing the API to send results as they become available. Use when querying large tables or expecting a large volume of results or when you want to process each row or result as soon as it is received, without waiting for the full response.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept-encoding",
            "in": "header",
            "required": false,
            "description": "Supported compression algorithms for responses. You can specify multiple algorithms as a comma-separated list. \n\nSupported values are: \n'gzip' \n'deflate' \n'br' (Brotli)\nor combinations like: 'gzip, br'.\n\nNote: For large result sets, compression can impact performance. Without compression, the result sets can be chunks of rows processed in a streaming fashion. With compression, the entire result set must be compressed before it is returned to the client. The client side must decompress the entire result set before processing any rows.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accept",
            "in": "header",
            "required": false,
            "description": "Supported response media types. Regardless of the Accept header, the API returns large query results using chunked encoding. Also, see the note about compression in the accept-encoding parameter.\n\nSupported values are: \n\n\"application/json\" (default)\n\"application/stream+json\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "preferred-encoding",
            "in": "header",
            "required": false,
            "description": "Indicates the preferred encoding type from those specified in the accept-encoding parameter. This header provides fine-grained control when the accept-encoding parameter contains multiple values, allowing the client to specify which encoding is preferred for this specific request explicitly.\n\nSupported values are: \n\n\"gzip\" \n\"br\"",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "preferred-compression-level",
            "in": "header",
            "required": false,
            "description": "Specifies the chosen compression level for the selected encoding algorithm. Values typically range from 1 (fastest, least compression) to 9 (slowest, maximum compression). The exact behavior depends on the specific compression algorithm.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query_id": {
                      "type": "string"
                    },
                    "status": {
                      "type": "object",
                      "properties": {
                        "reason": {
                          "type": "string"
                        },
                        "sql_state": {
                          "type": "string"
                        },
                        "vendor_code": {
                          "type": "integer"
                        }
                      }
                    },
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "c1": {
                            "type": "integer"
                          }
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "query_id": "2d5af900-cb02-44f4-b974-6264d2133e96",
                      "status": {
                        "reason": "The operation completed successfully",
                        "sql_state": "00000",
                        "vendor_code": 0
                      },
                      "data": [
                        {
                          "c1": 1
                        },
                        {
                          "c1": 2
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -u 'admin@system:admin' \\\n    'https://my_sql_node.com/v1/execute?statement=SELECT%20*%20FROM%20sys.dummy2&database=system&format=collection'"
          }
        ]
      }
    },
    "/v1/info": {
      "get": {
        "summary": "info",
        "description": "Returns basic system version information about the Ocient System and the HTTP Query API server.\n\nYou can use this endpoint to verify connectivity and to check compatible versions.",
        "operationId": "getOcientHttpQueryApiInfo",
        "tags": [
          "Ocient HTTP Query API"
        ],
        "servers": [
          {
            "url": "https://{sql_node}",
            "variables": {
              "sql_node": {
                "default": "sql_node"
              }
            }
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "default_database": {
                      "type": "string"
                    },
                    "openapi_version": {
                      "type": "string"
                    },
                    "status": {
                      "type": "object",
                      "properties": {
                        "vendor_code": {
                          "type": "integer"
                        },
                        "sql_state": {
                          "type": "string"
                        },
                        "reason": {
                          "type": "string"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "default_database": "system",
                      "openapi_version": "1.1.0",
                      "status": {
                        "vendor_code": 0,
                        "sql_state": "00000",
                        "reason": "The operation completed successfully"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -u 'admin@system:admin' \\\n    'https://my_sql_node.com/v1/info'  "
          }
        ]
      }
    },
    "/v1/login": {
      "post": {
        "summary": "login",
        "description": "Authenticates a user with a username and password and then returns a token for use in subsequent API calls. This request also sets a session cookie. \n\nInclude the returned access token in the authorization header for subsequent requests in the format: \nAuthorization: Bearer {token}.",
        "operationId": "postOcientHttpQueryApiLogin",
        "tags": [
          "Ocient HTTP Query API"
        ],
        "servers": [
          {
            "url": "https://{sql_node}",
            "variables": {
              "sql_node": {
                "default": "sql_node"
              }
            }
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "access_token": {
                      "type": "string"
                    },
                    "username": {
                      "type": "string"
                    },
                    "database": {
                      "type": "string"
                    },
                    "expires_in": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "object",
                      "properties": {
                        "reason": {
                          "type": "string"
                        },
                        "sql_state": {
                          "type": "string"
                        },
                        "vendor_code": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
                      "username": "jdoe",
                      "database": "retail_analytics",
                      "expires_in": 3600,
                      "status": {
                        "reason": "Authentication successful",
                        "sql_state": "00000",
                        "vendor_code": 0
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "username": {
                    "type": "string",
                    "description": "Username."
                  },
                  "password": {
                    "type": "string",
                    "description": "The password for the username."
                  },
                  "database": {
                    "type": "string",
                    "description": "Target database name. If you do not specify this parameter, the request defaults this value to system."
                  }
                },
                "required": [
                  "username",
                  "password"
                ]
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://my_sql_node.com/v1/login \\\n    -H \"Content-Type: application/json\" \\\n    -d '{\n        \"username\": \"admin\",\n        \"password\": \"admin\",\n        \"database\": \"system\"\n    }'\n"
          }
        ]
      }
    },
    "/v1/logout": {
      "post": {
        "summary": "logout",
        "description": "Log out from a SQL session. This clears any associated cookies, but does not invalidate any access tokens.\n\nThis endpoint terminates only the cookie-based session. Any bearer tokens that were previously issued continue to work until they expire.\n         \nYou must discard any stored bearer tokens to complete the log out in a client application.",
        "operationId": "postOcientHttpQueryApiLogout",
        "tags": [
          "Ocient HTTP Query API"
        ],
        "servers": [
          {
            "url": "https://{sql_node}",
            "variables": {
              "sql_node": {
                "default": "sql_node"
              }
            }
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "object",
                      "properties": {
                        "reason": {
                          "type": "string"
                        },
                        "sql_state": {
                          "type": "string"
                        },
                        "vendor_code": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "status": {
                        "reason": "Logged out successfully",
                        "sql_state": "00000",
                        "vendor_code": 0
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "database": {
                    "type": "string",
                    "description": "Target database name. If you do not specify this parameter, the request defaults this value to system."
                  }
                }
              }
            }
          }
        },
        "x-codeSamples": [
          {
            "lang": "curl",
            "label": "curl",
            "source": "curl -X POST https://my_sql_node.com/v1/logout\n    -d '{\n        \"database\": \"retail_analytics\"\n    }"
          }
        ]
      }
    },
    "/v1/sso_authentication": {
      "post": {
        "summary": "sso_authentication",
        "description": "Initiates the OpenID Connect authentication process by redirecting to the authorization server.\n\nThis endpoint begins the standard OpenID Connect authentication process:\n\n1. The client calls this endpoint with a callback path.\n2. The server responds with a redirect to the identity provider.\n3. The user authenticates with the identity provider.\n4. The identity provider redirects back to the callback endpoint.\n5. The client can exchange the authorization code for an access token.",
        "operationId": "postOcientHttpQueryApiSsoAuthentication",
        "tags": [
          "Ocient HTTP Query API"
        ],
        "servers": [
          {
            "url": "https://{sql_node}",
            "variables": {
              "sql_node": {
                "default": "sql_node"
              }
            }
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "object",
                      "properties": {
                        "reason": {
                          "type": "string"
                        },
                        "sql_state": {
                          "type": "string"
                        },
                        "vendor_code": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "status": {
                        "reason": "Query executed successfully",
                        "sql_state": "00000",
                        "vendor_code": 0
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "examples": {
                  "response": {
                    "value": {
                      "message": "Ain't no cake like that."
                    }
                  }
                }
              }
            }
          }
        },
        "requestB

# --- truncated at 32 KB (77 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ocient/refs/heads/main/openapi/ocient-http-query-api-openapi-original.json