openrouter/types/
organization.rs1use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Copy, Debug, Default, PartialEq, Eq)]
10pub struct ListOrganizationMembersOptions {
11 pub offset: Option<u32>,
13 pub limit: Option<u32>,
15}
16
17impl ListOrganizationMembersOptions {
18 pub fn new() -> Self {
20 Self::default()
21 }
22
23 pub fn offset(mut self, offset: u32) -> Self {
25 self.offset = Some(offset);
26 self
27 }
28
29 pub fn limit(mut self, limit: u32) -> Self {
31 self.limit = Some(limit);
32 self
33 }
34
35 pub(crate) fn to_query(self) -> Vec<(&'static str, String)> {
36 let mut q = Vec::new();
37 if let Some(o) = self.offset {
38 q.push(("offset", o.to_string()));
39 }
40 if let Some(l) = self.limit {
41 q.push(("limit", l.to_string()));
42 }
43 q
44 }
45}
46
47#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
50pub enum OrganizationMemberRole {
51 #[serde(rename = "org:admin")]
53 Admin,
54 #[serde(rename = "org:member")]
56 Member,
57}
58
59#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
61pub struct OrganizationMember {
62 #[serde(default)]
64 pub id: String,
65 #[serde(default)]
67 pub email: String,
68 #[serde(default)]
70 pub first_name: Option<String>,
71 #[serde(default)]
73 pub last_name: Option<String>,
74 pub role: OrganizationMemberRole,
76}
77
78#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
80pub struct ListOrganizationMembersResponse {
81 #[serde(default)]
83 pub data: Vec<OrganizationMember>,
84 #[serde(default)]
86 pub total_count: u64,
87}