Skip to main content

novel_openai/spec/admin/project_users/
project_users_.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5
6/// Represents an individual user in a project.
7#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
8pub struct ProjectUser {
9    /// The object type, which is always `organization.project.user`
10    pub object: String,
11    /// The identifier, which can be referenced in API endpoints
12    pub id: String,
13    /// The name of the project
14    pub name: String,
15    /// The email address of the user
16    pub email: String,
17    /// `owner` or `member`
18    pub role: ProjectUserRole,
19    /// The Unix timestamp (in seconds) of when the project was added.
20    pub added_at: u64,
21}
22
23/// `owner` or `member`
24#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
25#[serde(rename_all = "lowercase")]
26pub enum ProjectUserRole {
27    Owner,
28    Member,
29}
30
31#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
32pub struct ProjectUserListResponse {
33    pub object: String,
34    pub data: Vec<ProjectUser>,
35    pub first_id: Option<String>,
36    pub last_id: Option<String>,
37    pub has_more: String,
38}
39
40/// The project user create request payload.
41#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Builder)]
42#[builder(name = "ProjectUserCreateRequestArgs")]
43#[builder(pattern = "mutable")]
44#[builder(setter(into, strip_option))]
45#[builder(derive(Debug))]
46#[builder(build_fn(error = "OpenAIError"))]
47pub struct ProjectUserCreateRequest {
48    /// The ID of the user.
49    pub user_id: String,
50    /// `owner` or `member`
51    pub role: ProjectUserRole,
52}
53
54#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Builder)]
55#[builder(name = "ProjectUserUpdateRequestArgs")]
56#[builder(pattern = "mutable")]
57#[builder(setter(into, strip_option))]
58#[builder(derive(Debug))]
59#[builder(build_fn(error = "OpenAIError"))]
60pub struct ProjectUserUpdateRequest {
61    /// `owner` or `member`
62    pub role: ProjectUserRole,
63}
64
65#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
66pub struct ProjectUserDeleteResponse {
67    pub object: String,
68    pub id: String,
69    pub deleted: bool,
70}