58 std::string_view
path()
const {
return path_; }
63 constexpr bool operator==(
const Endpoint& other)
const {
64 return method_ == other.method_ && path_ == other.path_;
69 return {HttpMethod::kGet,
"/v1/{prefix}/namespaces"};
71 static Endpoint GetNamespaceProperties() {
72 return {HttpMethod::kGet,
"/v1/{prefix}/namespaces/{namespace}"};
74 static Endpoint NamespaceExists() {
75 return {HttpMethod::kHead,
"/v1/{prefix}/namespaces/{namespace}"};
77 static Endpoint CreateNamespace() {
78 return {HttpMethod::kPost,
"/v1/{prefix}/namespaces"};
80 static Endpoint UpdateNamespace() {
81 return {HttpMethod::kPost,
"/v1/{prefix}/namespaces/{namespace}/properties"};
83 static Endpoint DropNamespace() {
84 return {HttpMethod::kDelete,
"/v1/{prefix}/namespaces/{namespace}"};
88 static Endpoint ListTables() {
89 return {HttpMethod::kGet,
"/v1/{prefix}/namespaces/{namespace}/tables"};
91 static Endpoint LoadTable() {
92 return {HttpMethod::kGet,
"/v1/{prefix}/namespaces/{namespace}/tables/{table}"};
94 static Endpoint TableExists() {
95 return {HttpMethod::kHead,
"/v1/{prefix}/namespaces/{namespace}/tables/{table}"};
97 static Endpoint CreateTable() {
98 return {HttpMethod::kPost,
"/v1/{prefix}/namespaces/{namespace}/tables"};
100 static Endpoint UpdateTable() {
101 return {HttpMethod::kPost,
"/v1/{prefix}/namespaces/{namespace}/tables/{table}"};
103 static Endpoint DeleteTable() {
104 return {HttpMethod::kDelete,
"/v1/{prefix}/namespaces/{namespace}/tables/{table}"};
106 static Endpoint RenameTable() {
107 return {HttpMethod::kPost,
"/v1/{prefix}/tables/rename"};
109 static Endpoint RegisterTable() {
110 return {HttpMethod::kPost,
"/v1/{prefix}/namespaces/{namespace}/register"};
112 static Endpoint ReportMetrics() {
113 return {HttpMethod::kPost,
114 "/v1/{prefix}/namespaces/{namespace}/tables/{table}/metrics"};
116 static Endpoint TableCredentials() {
117 return {HttpMethod::kGet,
118 "/v1/{prefix}/namespaces/{namespace}/tables/{table}/credentials"};
122 static Endpoint CommitTransaction() {
123 return {HttpMethod::kPost,
"/v1/{prefix}/transactions/commit"};
127 static Endpoint PlanTableScan() {
128 return {HttpMethod::kPost,
"/v1/{prefix}/namespaces/{namespace}/tables/{table}/plan"};
131 static Endpoint FetchPlanningResult() {
132 return {HttpMethod::kGet,
133 "/v1/{prefix}/namespaces/{namespace}/tables/{table}/plan/{plan-id}"};
136 static Endpoint CancelPlanning() {
137 return {HttpMethod::kDelete,
138 "/v1/{prefix}/namespaces/{namespace}/tables/{table}/plan/{plan-id}"};
141 static Endpoint FetchScanTasks() {
142 return {HttpMethod::kPost,
143 "/v1/{prefix}/namespaces/{namespace}/tables/{table}/tasks"};
147 Endpoint(HttpMethod method, std::string_view path) : method_(method), path_(path) {}
158struct hash<
iceberg::rest::Endpoint> {
160 std::size_t h1 = std::hash<int32_t>{}(
static_cast<int32_t
>(endpoint.method()));
161 std::size_t h2 = std::hash<std::string_view>{}(endpoint.path());
162 return h1 ^ (h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2));
An Endpoint is an immutable value object identifying a specific REST API operation....
Definition endpoint.h:38
static Result< Endpoint > FromString(std::string_view str)
Parse endpoint from string representation. "METHOD" have to be all upper-cased.
constexpr HttpMethod method() const
Get the HTTP method.
Definition endpoint.h:55
std::string ToString() const
Serialize to "METHOD /path" format.
static Result< Endpoint > Make(HttpMethod method, std::string_view path)
Make an endpoint with method and path template.
std::string_view path() const
Get the path template.
Definition endpoint.h:58
Define REST HTTP request types.
Define symbol visibility macros for the REST catalog library.
REST catalog APIs.
Definition auth_manager.h:34
HttpMethod
HTTP method enumeration.
Definition http_request.h:38
Core Apache Iceberg C++ APIs.
Definition arrow_io_util.h:33
std::expected< T, E > Result
Result alias.
Definition result.h:88
Define Result, Status, and error helpers.