enum Role { Owner Maintainer Reader } enum Permission { View Edit } enum Environment { Production Preview Development } enum DeploymentStatus { Building Ready Error } enum DomainStatus { Live Pending } type User { id: String! name: String! email: String! organizations: [Organization!] projects: [Project!] createdAt: String! updatedAt: String! } type Organization { id: String! name: String! projects: [Project!] createdAt: String! updatedAt: String! members: [OrganizationMember!] } type OrganizationMember { id: String! member: User! role: Role! createdAt: String! updatedAt: String! } type Project { id: String! owner: User! deployments: [Deployment!] name: String! repository: String! prodBranch: String! description: String template: String framework: String! webhooks: [String!] members: [ProjectMember!] environmentVariables: [EnvironmentVariable!] createdAt: String! updatedAt: String! organization: Organization! } type ProjectMember { id: String! member: User! permissions: [Permission!]! createdAt: String! updatedAt: String! } type Deployment { id: String! domain: Domain branch: String! commitHash: String! title: String! environment: Environment! isCurrent: Boolean! status: DeploymentStatus! createdAt: String! updatedAt: String! } type Domain { id: String! branch: String! name: String! isRedirected: Boolean! status: DomainStatus! createdAt: String! updatedAt: String! } type EnvironmentVariable { id: String! environments: [Environment!]! key: String! value: String! createdAt: String! updatedAt: String! } type Query { user: User! organizations: [Organization!] projects: [Project!] project(projectId: String!): Project deployments(projectId: String!): [Deployment!] environmentVariables(projectId: String!): [EnvironmentVariable!] projectMembers(projectId: String!): [ProjectMember!] searchProjects(searchText: String!): [Project!] } type Mutation { removeMember(memberId: String!): Boolean! addEnvironmentVariables(projectId: String!, environmentVariables: [AddEnvironmentVariableInput!]): Boolean! updateDeploymentToProd(deploymentId: String!): Boolean! updateProject(projectId: String!, updateProject: UpdateProjectInput): Boolean! } input AddEnvironmentVariableInput { environments: [Environment!]! key: String! value: String! } input UpdateProjectInput { name: String description: String }