Documentation
use serde::{Deserialize, Serialize};
use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str};

//
#[derive(Deserialize, Serialize, Debug, Clone)]
pub struct Error {
    pub code: ErrorCode,
    pub message: String,
    pub log_id: String,
}

#[derive(Deserialize_enum_str, Serialize_enum_str, Debug, Clone, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum ErrorCode {
    Ok,
    AccessTokenInvalid,
    InternalError,
    InvalidFileUpload,
    InvalidParams,
    RateLimitExceeded,
    ScopeNotAuthorized,
    ScopePermissionMissed,
    #[serde(other)]
    Other(Box<str>),
}