/*
* CKAN API
*
* Comprehensive Open Data Knowledge (CKAN) REST API for data management and publishing. CKAN is a powerful data management system that makes data accessible by providing tools to streamline publishing, sharing, finding and using data. This API provides programmatic access to all CKAN functionality including: - Dataset (Package) management - create, read, update, delete datasets - Resource management - manage files and data resources within datasets - Organization and Group management - organize datasets into logical groupings - User management - manage user accounts and permissions - Search functionality - powerful search across all data - Metadata and tagging - rich metadata and taxonomy support - Data validation and quality - ensure data integrity The API follows REST principles and returns JSON responses. Most endpoints support both GET and POST methods. ## API Versions - **API v3** (default): Main action API at `/api/3/action/{action}` - **Utility API v1/v2**: Autocomplete and utility functions at `/api/{version}/util/` - **Legacy API v1**: Basic API information at `/api/1` ## Authentication Many API calls require authentication via API key passed as: - HTTP Header: `Authorization: {api_key}` - URL Parameter: `?api_key={api_key}` - POST Data: `{\"api_key\": \"{api_key}\"}` ## Error Handling All API responses include: - `success`: Boolean indicating if the request was successful - `result`: The actual data (on success) or error details (on failure) - `help`: URL to documentation for the action Error responses include structured error information with error type and detailed messages.
*
* The version of the OpenAPI document: 3.0
*
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct Group {
#[serde(rename = "id", skip_serializing_if = "Option::is_none")]
pub id: Option<uuid::Uuid>,
/// URL-friendly name
#[serde(rename = "name")]
pub name: String,
/// Human-readable title
#[serde(rename = "title", skip_serializing_if = "Option::is_none")]
pub title: Option<String>,
/// Group description
#[serde(rename = "description", skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
/// URL to group image
#[serde(rename = "image_url", skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
#[serde(rename = "image_display_url", skip_serializing_if = "Option::is_none")]
pub image_display_url: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
#[serde(rename = "state", skip_serializing_if = "Option::is_none")]
pub state: Option<State>,
#[serde(rename = "approval_status", skip_serializing_if = "Option::is_none")]
pub approval_status: Option<String>,
#[serde(rename = "is_organization", skip_serializing_if = "Option::is_none")]
pub is_organization: Option<bool>,
#[serde(rename = "created", skip_serializing_if = "Option::is_none")]
pub created: Option<String>,
/// Number of packages in this group
#[serde(rename = "package_count", skip_serializing_if = "Option::is_none")]
pub package_count: Option<i32>,
#[serde(rename = "users", skip_serializing_if = "Option::is_none")]
pub users: Option<Vec<models::User>>,
#[serde(rename = "groups", skip_serializing_if = "Option::is_none")]
pub groups: Option<Vec<models::Group>>,
#[serde(rename = "extras", skip_serializing_if = "Option::is_none")]
pub extras: Option<std::collections::HashMap<String, String>>,
}
impl Group {
pub fn new(name: String) -> Group {
Group {
id: None,
name,
title: None,
description: None,
image_url: None,
image_display_url: None,
r#type: None,
state: None,
approval_status: None,
is_organization: None,
created: None,
package_count: None,
users: None,
groups: None,
extras: None,
}
}
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum State {
#[serde(rename = "active")]
#[default]
Active,
#[serde(rename = "deleted")]
Deleted,
}