diff --git a/lib/backend-api/schema.graphql b/lib/backend-api/schema.graphql index b290541a1e2..43dd4d7415d 100644 --- a/lib/backend-api/schema.graphql +++ b/lib/backend-api/schema.graphql @@ -1,3 +1,9 @@ +"""Exposes a URL that specifies the behaviour of this scalar.""" +directive @specifiedBy( + """The URL that specifies the behaviour of this scalar.""" + url: String! +) on SCALAR + """ Directs the executor to include this field or fragment only when the user is not logged in. """ @@ -8,87 +14,80 @@ Directs the executor to skip this field or fragment when the user is not logged """ directive @skipIfLoggedIn on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -interface Node { +type AAAARecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + address: String! + """The ID of the object""" id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -type PublicKey implements Node { - """The ID of the object""" - id: ID! - owner: User! - keyId: String! - key: String! - revokedAt: DateTime - uploadedAt: DateTime! - verifyingSignature: Signature - revoked: Boolean! +input AcceptAppTransferRequestInput { + appTransferRequestId: ID! + clientMutationId: String } -type User implements Node & PackageOwner & Owner { - firstName: String! - lastName: String! - email: String! - dateJoined: DateTime! +type AcceptAppTransferRequestPayload { + app: DeployApp! + appTransferRequest: AppTransferRequest! + clientMutationId: String +} - """Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.""" - username: String! - isEmailValidated: Boolean! - bio: String - location: String - websiteUrl: String +input AcceptNamespaceCollaboratorInviteInput { + inviteId: ID! + clientMutationId: String +} - """The ID of the object""" - id: ID! - globalName: String! - globalId: ID! - avatar(size: Int = 80): String! - isViewer: Boolean! - hasUsablePassword: Boolean - fullName: String! - githubUrl: String - twitterUrl: String - companyRole: String - companyDescription: String - publicActivity(offset: Int, before: String, after: String, first: Int, last: Int): ActivityEventConnection! - billing: Billing - waitlist(name: String!): WaitlistMember - namespaces(role: GrapheneRole, offset: Int, before: String, after: String, first: Int, last: Int): NamespaceConnection! - packages(collaborating: Boolean = false, offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection! - apps(collaborating: Boolean = false, sortBy: DeployAppsSortBy, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppConnection! - usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! - domains(offset: Int, before: String, after: String, first: Int, last: Int): DNSDomainConnection! - isStaff: Boolean - packageVersions(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! - packageTransfersIncoming(offset: Int, before: String, after: String, first: Int, last: Int): PackageTransferRequestConnection! - packageInvitesIncoming(offset: Int, before: String, after: String, first: Int, last: Int): PackageCollaboratorInviteConnection! - namespaceInvitesIncoming(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorInviteConnection! - apiTokens(before: String, after: String, first: Int, last: Int): APITokenConnection! - notifications(before: String, after: String, first: Int, last: Int): UserNotificationConnection! - dashboardActivity(offset: Int, before: String, after: String, first: Int, last: Int): ActivityEventConnection! - loginMethods: [LoginMethod!]! - githubUser: SocialAuth - githubScopes: [String]! +type AcceptNamespaceCollaboratorInvitePayload { + namespaceCollaboratorInvite: NamespaceCollaboratorInvite! + clientMutationId: String } -"""Setup for backwards compatibility with existing frontends.""" -interface PackageOwner { - globalName: String! - globalId: ID! +input AcceptPackageCollaboratorInviteInput { + inviteId: ID! + clientMutationId: String } -"""An owner of a package.""" -interface Owner { - globalName: String! - globalId: ID! +type AcceptPackageCollaboratorInvitePayload { + packageCollaboratorInvite: PackageCollaboratorInvite! + clientMutationId: String } -""" -The `DateTime` scalar type represents a DateTime -value as specified by -[iso8601](https://en.wikipedia.org/wiki/ISO_8601). -""" -scalar DateTime +input AcceptPackageTransferRequestInput { + packageTransferRequestId: ID! + clientMutationId: String +} + +type AcceptPackageTransferRequestPayload { + package: Package! + packageTransferRequest: PackageTransferRequest! + clientMutationId: String +} + +input AcceptTOSInput { + clientMutationId: String +} + +"""Viewer accepts the latest ToS.""" +type AcceptTOSPayload { + TOS: TermsOfService! + clientMutationId: String +} + +type ActivityEvent implements Node { + """The ID of the object""" + id: ID! + body: EventBody! + actorIcon: String! + createdAt: DateTime! +} type ActivityEventConnection { """Pagination data for this connection.""" @@ -101,23 +100,6 @@ type ActivityEventConnection { totalCount: Int } -""" -The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. -""" -type PageInfo { - """When paginating forwards, are there more items?""" - hasNextPage: Boolean! - - """When paginating backwards, are there more items?""" - hasPreviousPage: Boolean! - - """When paginating backwards, the cursor to continue.""" - startCursor: String - - """When paginating forwards, the cursor to continue.""" - endCursor: String -} - """A Relay edge containing a `ActivityEvent` and its cursor.""" type ActivityEventEdge { """The item at the end of the edge""" @@ -127,389 +109,271 @@ type ActivityEventEdge { cursor: String! } -type ActivityEvent implements Node { - """The ID of the object""" - id: ID! - body: EventBody! - actorIcon: String! - createdAt: DateTime! +input AddPaymentInput { + clientMutationId: String } -type EventBody { - text: String! - ranges: [NodeBodyRange!]! +"""Add stripe payment to the user""" +type AddPaymentPayload { + customerSecret: String! + clientMutationId: String } -type NodeBodyRange { - entity: Node! - offset: Int! - length: Int! +type AggregateMetrics { + cpuTime: String! + memoryTime: String! + ingress: String! + egress: String! + noRequests: String! + noFailedRequests: String! + monthlyCost: String! } -type WaitlistMember implements Node { - waitlist: Waitlist! - joinedAt: DateTime! - approvedAt: DateTime - - """The ID of the object""" +type APIToken { id: ID! - member: Owner! - approved: Boolean! -} - -type Waitlist implements Node { - name: String! + user: User! + identifier: String createdAt: DateTime! - updatedAt: DateTime! - - """The ID of the object""" - id: ID! + revokedAt: DateTime + lastUsedAt: DateTime + nonceSet(offset: Int, before: String, after: String, first: Int, last: Int): NonceConnection! } -type NamespaceConnection { +type APITokenConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [NamespaceEdge]! - - """Total number of items in the connection.""" - totalCount: Int + edges: [APITokenEdge]! } -"""A Relay edge containing a `Namespace` and its cursor.""" -type NamespaceEdge { +"""A Relay edge containing a `APIToken` and its cursor.""" +type APITokenEdge { """The item at the end of the edge""" - node: Namespace + node: APIToken """A cursor for use in pagination""" cursor: String! } -type Namespace implements Node & PackageOwner & Owner { - """The ID of the object""" - id: ID! +type AppAlias implements Node { name: String! - displayName: String - description: String! - avatar: String! - avatarUpdatedAt: DateTime - twitterHandle: String - githubHandle: String - websiteUrl: String - createdAt: DateTime! - updatedAt: DateTime! - maintainerInvites(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorInviteConnection! - userSet(offset: Int, before: String, after: String, first: Int, last: Int): UserConnection! - globalName: String! - globalId: ID! - packages(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection! - apps(sortBy: DeployAppsSortBy, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppConnection! - packageVersions(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! - collaborators(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorConnection! - publicActivity(before: String, after: String, first: Int, last: Int): ActivityEventConnection! - pendingInvites(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorInviteConnection! - viewerHasRole(role: GrapheneRole!): Boolean! - viewerAsCollaborator(role: GrapheneRole): NamespaceCollaborator - - """Whether the current user is invited to the namespace""" - viewerIsInvited: Boolean! + app: DeployApp! + isDefault: Boolean! + hostname: String! + text: String! + kind: DeployAppAliasKindChoices! - """The invitation for the current user to the namespace""" - viewerInvitation: NamespaceCollaboratorInvite - packageTransfersIncoming(offset: Int, before: String, after: String, first: Int, last: Int): PackageTransferRequestConnection! - usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! - domains(offset: Int, before: String, after: String, first: Int, last: Int): DNSDomainConnection! + """The ID of the object""" + id: ID! + url: String! } -type NamespaceCollaboratorInviteConnection { +type AppAliasConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [NamespaceCollaboratorInviteEdge]! + edges: [AppAliasEdge]! """Total number of items in the connection.""" totalCount: Int } -""" -A Relay edge containing a `NamespaceCollaboratorInvite` and its cursor. -""" -type NamespaceCollaboratorInviteEdge { - """The item at the end of the edge""" - node: NamespaceCollaboratorInvite +"""A Relay edge containing a `AppAlias` and its cursor.""" +type AppAliasEdge { + """The item at the end of the edge""" + node: AppAlias """A cursor for use in pagination""" cursor: String! } -type NamespaceCollaboratorInvite implements Node { - """The ID of the object""" - id: ID! - requestedBy: User! - user: User - inviteEmail: String - namespace: Namespace! - role: RegistryNamespaceMaintainerInviteRoleChoices! - accepted: NamespaceCollaborator - approvedBy: User - declinedBy: User - createdAt: DateTime! - expiresAt: DateTime! - closedAt: DateTime +input AppConfigV1 { + kind: String = "wasmer.io/App.v0" + appId: ID + name: String! + description: String + package: String! } -enum RegistryNamespaceMaintainerInviteRoleChoices { - """Owner""" - OWNER +input AppFilter { + count: Int = 1000 + sortBy: SearchOrderSort = ASC - """Admin""" - ADMIN + """Filter apps by deployed by.""" + deployedBy: String - """Editor""" - EDITOR + """Filter apps last deployed after this date.""" + lastDeployedAfter: DateTime - """Viewer""" - VIEWER + """Filter apps last deployed before this date.""" + lastDeployedBefore: DateTime + + """Filter apps by owner.""" + owner: String + + """Order apps by field.""" + orderBy: AppOrderBy = CREATED_DATE + + """Filter apps by client name.""" + clientName: String } -type NamespaceCollaborator implements Node { +enum AppOrderBy { + PUBLISHED_DATE + CREATED_DATE +} + +type AppTemplate implements Node { """The ID of the object""" id: ID! - user: User! - role: RegistryNamespaceMaintainerRoleChoices! - namespace: Namespace! + name: String! + slug: String! + description: String! + demoUrl: String! + repoUrl: String! + category: AppTemplateCategory! + isPublic: Boolean! createdAt: DateTime! updatedAt: DateTime! - invite: NamespaceCollaboratorInvite + readme: String! + useCases: JSONString! + framework: String! + language: String! + repoLicense: String! + usingPackage: Package + defaultImage: String } -enum RegistryNamespaceMaintainerRoleChoices { - """Owner""" - OWNER - - """Admin""" - ADMIN - - """Editor""" - EDITOR - - """Viewer""" - VIEWER +type AppTemplateCategory implements Node { + """The ID of the object""" + id: ID! + name: String! + slug: String! + description: String! + createdAt: DateTime! + updatedAt: DateTime! + appTemplates(offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateConnection! } -type UserConnection { +type AppTemplateCategoryConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [UserEdge]! + edges: [AppTemplateCategoryEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `User` and its cursor.""" -type UserEdge { +"""A Relay edge containing a `AppTemplateCategory` and its cursor.""" +type AppTemplateCategoryEdge { """The item at the end of the edge""" - node: User + node: AppTemplateCategory """A cursor for use in pagination""" cursor: String! } -type PackageConnection { +type AppTemplateConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [PackageEdge]! + edges: [AppTemplateEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `Package` and its cursor.""" -type PackageEdge { +"""A Relay edge containing a `AppTemplate` and its cursor.""" +type AppTemplateEdge { """The item at the end of the edge""" - node: Package + node: AppTemplate """A cursor for use in pagination""" cursor: String! } -type Package implements Likeable & Node & PackageOwner { - """The ID of the object""" - id: ID! - name: String! - private: Boolean! - createdAt: DateTime! - updatedAt: DateTime! - maintainers: [User]! @deprecated(reason: "Please use collaborators instead") - curated: Boolean! - ownerObjectId: Int! - lastVersion: PackageVersion +input AppTemplateFilter { + count: Int = 1000 + sortBy: SearchOrderSort = ASC - """The app icon. It should be formatted in the same way as Apple icons""" - icon: String! - totalDownloads: Int! - iconUpdatedAt: DateTime - watchersCount: Int! - webcs(offset: Int, before: String, after: String, first: Int, last: Int): WebcImageConnection! + """Order app templates by field.""" + orderBy: AppTemplateOrderBy = CREATED_DATE - """List of app templates for this package""" - appTemplates(offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateConnection! - packagewebcSet(offset: Int, before: String, after: String, first: Int, last: Int): PackageWebcConnection! - versions: [PackageVersion]! - collectionSet: [Collection!]! - categories(offset: Int, before: String, after: String, first: Int, last: Int): CategoryConnection! - keywords(offset: Int, before: String, after: String, first: Int, last: Int): PackageKeywordConnection! - likersCount: Int! - viewerHasLiked: Boolean! - globalName: String! - globalId: ID! - alias: String - namespace: String! - displayName: String! + """Filter by app template framework""" + framework: String - """The name of the package without the owner""" - packageName: String! + """Filter by app template language""" + language: String - """The app icon. It should be formatted in the same way as Apple icons""" - appIcon: String! @deprecated(reason: "Please use icon instead") + """Filter by one or more of the use-cases for the app template""" + useCases: [String] +} - """The total number of downloads of the package""" - downloadsCount: Int +enum AppTemplateOrderBy { + CREATED_DATE +} - """The public keys for all the published versions""" - publicKeys: [PublicKey!]! - collaborators(offset: Int, before: String, after: String, first: Int, last: Int): PackageCollaboratorConnection! - pendingInvites(offset: Int, before: String, after: String, first: Int, last: Int): PackageCollaboratorInviteConnection! - viewerHasRole(role: GrapheneRole!): Boolean! - viewerAsCollaborator(role: GrapheneRole): PackageCollaborator - owner: PackageOwner! - isTransferring: Boolean! - activeTransferRequest: PackageTransferRequest - isArchived: Boolean! - viewerIsWatching: Boolean! - showDeployButton: Boolean! - similarPackageVersions(before: String, after: String, first: Int, last: Int): PackageSearchConnection! +type AppTransferRequest implements Node { + """The ID of the object""" + id: ID! + requestedBy: User! + previousOwnerObjectId: Int! + newOwnerObjectId: Int! + app: DeployApp! + approvedBy: User + declinedBy: User + createdAt: DateTime! + expiresAt: DateTime! + closedAt: DateTime + previousOwner: Owner! + newOwner: Owner! +} - """Whether the current user is invited to the package""" - viewerIsInvited: Boolean! +input AppV1Spec { + aliases: [String] = [] + workload: WorkloadV2! +} - """The invitation for the current user to the package""" - viewerInvitation: PackageCollaboratorInvite +type AppVersionVolume { + name: String! + mountPaths: [AppVersionVolumeMountPath]! + size: Int + usedSize: Int } -interface Likeable { - id: ID! - likersCount: Int! - viewerHasLiked: Boolean! +type AppVersionVolumeMountPath { + path: String! + subpath: String! } -type PackageVersion implements Node & PackageInstance { - """The ID of the object""" - id: ID! +input ArchivePackageInput { + packageId: ID! + clientMutationId: String +} + +type ArchivePackagePayload { package: Package! - webcGenerationErrors: String - version: String! - description: String! - manifest: String! - license: String - licenseFile: String - readme: String - witMd: String - repository: String - homepage: String + clientMutationId: String +} + +type ARecord implements Node & DNSRecordInterface { createdAt: DateTime! updatedAt: DateTime! - staticObjectsCompiled: Boolean! - nativeExecutablesCompiled: Boolean! - publishedBy: User! - clientName: String - signature: Signature - isArchived: Boolean! - file: String! - - """""" - fileSize: BigInt! - webc: WebcImage - totalDownloads: Int! - bindingsState: RegistryPackageVersionBindingsStateChoices! - nativeExecutablesState: RegistryPackageVersionNativeExecutablesStateChoices! + deletedAt: DateTime + address: String! - """List of direct dependencies of this package version""" - dependencies(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! - deployappversionSet(offset: Int, before: String, after: String, first: Int, last: Int): DeployAppVersionConnection! - lastversionPackage(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection! - commands: [Command!]! - nativeexecutableSet(offset: Int, before: String, after: String, first: Int, last: Int): NativeExecutableConnection! - bindingsgeneratorSet(offset: Int, before: String, after: String, first: Int, last: Int): BindingsGeneratorConnection! - javascriptlanguagebindingSet(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionNPMBindingConnection! - pythonlanguagebindingSet(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionPythonBindingConnection! - piritaManifest: JSONString - piritaOffsets: JSONString - piritaVolumes: JSONString - piritaFile: String @deprecated(reason: "Please use distribution.piritaDownloadUrl instead.") - piritaFileSize: Int @deprecated(reason: "Please use distribution.piritaSize instead.") - pirita256hash: String @deprecated(reason: "Please use distribution.piritaSha256Hash instead.") - distribution: PackageDistribution! - filesystem: [PackageVersionFilesystem]! - isLastVersion: Boolean! - witFile: String - isSigned: Boolean! - moduleInterfaces: [InterfaceVersion!]! - modules: [PackageVersionModule!]! - getPiritaContents(volume: String! = "atom", base: String! = ""): [PiritaFilesystemItem!]! - getWebcContents(volume: String! = "atom", base: String! = "/"): [WEBCFilesystemItem!]! - nativeExecutables(triple: String, wasmerCompilerVersion: String): [NativeExecutable] - bindings: [PackageVersionLanguageBinding]! - npmBindings: PackageVersionNPMBinding - pythonBindings: PackageVersionPythonBinding - bindingsSet(before: String, after: String, first: Int, last: Int): PackageVersionBindingConnection - hasBindings: Boolean! - hasCommands: Boolean! - showDeployButton: Boolean! - isCorrupt: Boolean! -} - -interface PackageInstance { - piritaManifest: JSONString - piritaOffsets: JSONString - piritaVolumes: JSONString - isArchived: Boolean! - clientName: String - publishedBy: User! - createdAt: DateTime! - updatedAt: DateTime! - package: Package! - webc: WebcImage -} - -""" -Allows use of a JSON String for input / output from the GraphQL schema. - -Use of this type is *not recommended* as you lose the benefits of having a defined, static -schema (one of the key benefits of GraphQL). -""" -scalar JSONString - -type WebcImage implements Node { """The ID of the object""" id: ID! - - """""" - fileSize: BigInt! - manifest: JSONString! - volumes: JSONString! - offsets: JSONString! - webcSha256: String! - targzSha256: String - createdAt: DateTime! - updatedAt: DateTime! - webcUrl: String! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } """ @@ -519,1210 +383,1286 @@ compatible type. """ scalar BigInt -enum RegistryPackageVersionBindingsStateChoices { - """Bindings are not detected""" - NOT_PRESENT +type Billing { + stripeCustomer: StripeCustomer! + payments: [PaymentIntent]! + paymentMethods: [PaymentMethod]! +} - """Bindings are being built""" - GENERATING +type BindingsGenerator implements Node { + """The ID of the object""" + id: ID! + packageVersion: PackageVersion! + active: Boolean! + commandName: String! + registryJavascriptlanguagebindings(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionNPMBindingConnection! + registryPythonlanguagebindings(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionPythonBindingConnection! +} - """Bindings generation has failed""" - ERROR +type BindingsGeneratorConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! - """Bindings are built and present""" - GENERATED_AND_PRESENT + """Contains the nodes in this connection.""" + edges: [BindingsGeneratorEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -enum RegistryPackageVersionNativeExecutablesStateChoices { - """Native Executables are not detected""" - NOT_PRESENT +"""A Relay edge containing a `BindingsGenerator` and its cursor.""" +type BindingsGeneratorEdge { + """The item at the end of the edge""" + node: BindingsGenerator - """Native Executables are being built""" - GENERATING + """A cursor for use in pagination""" + cursor: String! +} - """Native Executables generation has failed""" - ERROR +enum BlogBlogPostThemeChoices { + """Green""" + GREEN - """Native Executables are built and present""" - GENERATED_AND_PRESENT + """Purple""" + PURPLE + + """Orange""" + ORANGE + + """Blue""" + BLUE } -type PackageVersionConnection { +type BlogPost implements Node { + """The ID of the object""" + id: ID! + live: Boolean! + + """The page title as you'd like it to be seen by the public""" + title: String! + + """ + The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/ + """ + slug: String! + owner: User + body: String! + publishDate: DateTime + theme: BlogBlogPostThemeChoices! + url: String! + coverImageUrl: String + opengraphImageUrl: String + tagline: String! + relatedArticles: [BlogPost!] + updatedAt: DateTime! + tags: [BlogPostTag!] + editUrl: String +} + +type BlogPostConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [PackageVersionEdge]! - - """Total number of items in the connection.""" - totalCount: Int + edges: [BlogPostEdge]! } -"""A Relay edge containing a `PackageVersion` and its cursor.""" -type PackageVersionEdge { +"""A Relay edge containing a `BlogPost` and its cursor.""" +type BlogPostEdge { """The item at the end of the edge""" - node: PackageVersion + node: BlogPost """A cursor for use in pagination""" cursor: String! } -type DeployAppVersionConnection { +input BlogPostsFilter { + count: Int = 1000 + sortBy: SearchOrderSort = ASC + + """Filter blog posts by tag.""" + tags: [String] +} + +type BlogPostTag implements Node { + """The ID of the object""" + id: ID! + name: String! + slug: String! +} + +type BlogPostTagConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [DeployAppVersionEdge]! + edges: [BlogPostTagEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `DeployAppVersion` and its cursor.""" -type DeployAppVersionEdge { +"""A Relay edge containing a `BlogPostTag` and its cursor.""" +type BlogPostTagEdge { """The item at the end of the edge""" - node: DeployAppVersion + node: BlogPostTag """A cursor for use in pagination""" cursor: String! } -type DeployAppVersion implements Node { - """The ID of the object""" - id: ID! - app: DeployApp! - yamlConfig: String! - userYamlConfig: String! - clientName: String - signature: String - description: String - publishedBy: User! +type CAARecord implements Node & DNSRecordInterface { createdAt: DateTime! updatedAt: DateTime! - configWebc: String @deprecated(reason: "webc support has been deprecated for apps") - config: String! @deprecated(reason: "Please use jsonConfig instead") - jsonConfig: String! - url: String! - permalink: String! - urls: [String]! - version: String! - isActive: Boolean! - manifest: String! - logs( - """ - Get logs starting from this timestamp. Takes EPOCH timestamp in seconds. - """ - startingFrom: Float + deletedAt: DateTime + flags: Int! + tag: DnsmanagerCertificationAuthorityAuthorizationRecordTagChoices! + value: String! - """Get logs starting from this timestamp. Takes ISO timestamp.""" - startingFromISO: DateTime + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! +} - """Fetch logs until this timestamp. Takes EPOCH timestamp in seconds.""" - until: Float +input CapabilityCpuV1 { + maximumThreads: Int + maximumUsage: Int +} - """List of streams to fetch logs from. e.g. stdout, stderr.""" - streams: [LogStream] +input CapabilityFileSystemV1 { + volumes: [FileSystemVolumeConfigV1]! +} - """List of instance ids to fetch logs from.""" - instanceIds: [String] - before: String - after: String - first: Int - last: Int - ): LogConnection! - usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! - sourcePackageVersion: PackageVersion! - aggregateMetrics: AggregateMetrics! - volumes: [AppVersionVolume] - favicon: URL - screenshot: URL +input CapabilityMapV1 { + memorySwap: CapabilityCpuV1 } -type DeployApp implements Node & Owner { +input CapabilityMemorySwapV1 { + maximumSize: String + memoryId: String +} + +input CapabilityNetworkDnsV1 { + enabled: Boolean + servers: [String] + allowedHosts: NetworkDnsAllowedHostsV1 +} + +input CapabilityNetworkGatewayV1 { + domains: [String] + enforceHttps: Boolean +} + +input CapabilityNetworkV1 { + egress: NetworkEgressV1 +} + +input CapabilityPersistentMemoryV1 { + volumes: [String] +} + +""" +Card brand. + +Can be amex, diners, discover, jcb, mastercard, unionpay, visa, or unknown. +""" +enum CardBrand { + AMEX + DINERS + DISCOVER + JCB + MASTERCARD + UNIONPAY + VISA + UNKNOWN +} + +""" +Card funding type. + +Can be credit, debit, prepaid, or unknown. +""" +enum CardFunding { + CREDIT + DEBIT + PREPAID + UNKNOWN +} + +type CardPaymentMethod implements Node { """The ID of the object""" id: ID! - createdBy: User! - createdAt: DateTime! - updatedAt: DateTime! - activeVersion: DeployAppVersion! - globalName: String! - globalId: ID! - url: String! - adminUrl: String! - permalink: String! - urls: [String]! - description: String - name: String! - owner: Owner! - versions(sortBy: DeployAppVersionsSortBy, createdAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppVersionConnection! - aggregateMetrics: AggregateMetrics! - aliases(offset: Int, before: String, after: String, first: Int, last: Int): AppAliasConnection! - usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! - deleted: Boolean! - favicon: URL - screenshot: URL + brand: CardBrand! + country: String! + expMonth: Int! + expYear: Int! + funding: CardFunding! + last4: String! + isDefault: Boolean! } -enum DeployAppVersionsSortBy { - NEWEST - OLDEST -} +""" +The `CaseInsensitiveString` scalar type represents textual data, represented as UTF-8 +character sequences. The String type is most often used by GraphQL to +represent free-form human-readable text. +""" +scalar CaseInsensitiveString -type AggregateMetrics { - cpuTime: String! - memoryTime: String! - ingress: String! - egress: String! - noRequests: String! - noFailedRequests: String! - monthlyCost: String! +type Category implements Node { + """The ID of the object""" + id: ID! + + """A category is a label that can be attached to a package.""" + name: String! + packages(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection } -type AppAliasConnection { +type CategoryConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [AppAliasEdge]! + edges: [CategoryEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `AppAlias` and its cursor.""" -type AppAliasEdge { +"""A Relay edge containing a `Category` and its cursor.""" +type CategoryEdge { """The item at the end of the edge""" - node: AppAlias + node: Category """A cursor for use in pagination""" cursor: String! } -type AppAlias implements Node { - name: String! - app: DeployApp! - isDefault: Boolean! +input ChangePackageVersionArchivedStatusInput { + packageVersionId: ID! + isArchived: Boolean + clientMutationId: String +} - """The ID of the object""" - id: ID! - url: String! +type ChangePackageVersionArchivedStatusPayload { + packageVersion: PackageVersion! + clientMutationId: String } -type UsageMetric { - variant: MetricType! - value: Float! - unit: MetricUnit! - timestamp: DateTime! +input ChangeUserEmailInput { + newEmail: String! + clientMutationId: String } -enum MetricType { - cpu_time - memory_time - network_egress - network_ingress - no_of_requests - no_of_failed_requests - cost +type ChangeUserEmailPayload { + user: User! + clientMutationId: String } -"""Units for metrics""" -enum MetricUnit { - """represents the unit of "seconds".""" - SEC +input ChangeUserPasswordInput { + """ + The token associated to change the password. If not existing it will use the request user by default + """ + token: String + oldPassword: String + password: String! + clientMutationId: String +} - """represents the unit of "milliseconds".""" - MS +type ChangeUserPasswordPayload { + token: String + clientMutationId: String +} - """represents the unit of "kilobytes".""" - KB +input ChangeUserUsernameInput { + """The new user username""" + username: CaseInsensitiveString! + clientMutationId: String +} - """represents the unit of "kilobytes per second".""" - KBS +type ChangeUserUsernamePayload { + user: User + token: String + clientMutationId: String +} - """represents the unit of "number of requests".""" - NO_REQUESTS +input CheckUserExistsInput { + """The user""" + user: String! + clientMutationId: String +} - """represents the unit of "cost" in USD.""" - DOLLARS +type CheckUserExistsPayload { + exists: Boolean! + + """The user is only returned if the user input was the username""" + user: User + clientMutationId: String } -enum MetricRange { - LAST_24_HOURS - LAST_30_DAYS - LAST_1_HOUR +type CNAMERecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + + """This domain name will alias to this canonical name.""" + cName: String! + + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -""" -The `URL` scalar type represents a URL as text, represented as UTF-8 -character sequences. -""" -scalar URL +type Collection { + slug: String! + displayName: String! + description: String! + createdAt: DateTime! + banner: String! + packages(before: String, after: String, first: Int, last: Int): PackageConnection! +} -type LogConnection { +type CollectionConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [LogEdge]! + edges: [CollectionEdge]! } -"""A Relay edge containing a `Log` and its cursor.""" -type LogEdge { +"""A Relay edge containing a `Collection` and its cursor.""" +type CollectionEdge { """The item at the end of the edge""" - node: Log + node: Collection """A cursor for use in pagination""" cursor: String! } -enum LogStream { - STDOUT - STDERR - RUNTIME +type Command { + command: String! + packageVersion: PackageVersion! + module: PackageVersionModule! } -type AppVersionVolume { - name: String! - mountPaths: [AppVersionVolumeMountPath]! - size: Int - usedSize: Int +input Configuration { + deployment: AppConfigV1 + yamlConfig: String } -type AppVersionVolumeMountPath { - path: String! - subpath: String! +enum CountComparison { + EQUAL + GREATER_THAN + LESS_THAN + GREATER_THAN_OR_EQUAL + LESS_THAN_OR_EQUAL } -type Command { - command: String! - packageVersion: PackageVersion! - module: PackageVersionModule! +input CountFilter { + count: Int = 0 + comparison: CountComparison = GREATER_THAN_OR_EQUAL } -type PackageVersionModule { +input CreateNamespaceInput { name: String! - source: String! - abi: String - publicUrl: String! - atom: PiritaFilesystemFile! - rangeHeader: String! + + """The namespace display name""" + displayName: String + + """The namespace description""" + description: String + + """The namespace avatar""" + avatar: String + clientMutationId: String } -type PiritaFilesystemFile { - name(display: PiritaFilesystemNameDisplay): String! - size: Int! - offset: Int! +type CreateNamespacePayload { + namespace: Namespace! + user: User! + clientMutationId: String } -enum PiritaFilesystemNameDisplay { - RELATIVE - ABSOLUTE +input CreateRepoForAppTemplateInput { + templateId: ID! + name: String! + namespace: String! + private: Boolean = false + clientMutationId: String } -type NativeExecutableConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! +type CreateRepoForAppTemplatePayload { + success: Boolean! + repoId: ID! + clientMutationId: String +} - """Contains the nodes in this connection.""" - edges: [NativeExecutableEdge]! +""" +The `DateTime` scalar type represents a DateTime +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar DateTime - """Total number of items in the connection.""" - totalCount: Int +input DeleteAppInput { + """App ID to delete.""" + id: ID! + clientMutationId: String } -"""A Relay edge containing a `NativeExecutable` and its cursor.""" -type NativeExecutableEdge { - """The item at the end of the edge""" - node: NativeExecutable +type DeleteAppPayload { + success: Boolean! + clientMutationId: String +} - """A cursor for use in pagination""" - cursor: String! +input DeleteDNSRecordInput { + recordId: ID! + clientMutationId: String } -type NativeExecutable implements Node { +type DeleteDNSRecordPayload { + success: Boolean! + clientMutationId: String +} + +input DeleteDomainInput { + domainId: ID! + clientMutationId: String +} + +type DeleteDomainPayload { + success: Boolean! + clientMutationId: String +} + +input DeleteNamespaceInput { + namespaceId: ID! + clientMutationId: String +} + +type DeleteNamespacePayload { + success: Boolean! + clientMutationId: String +} + +type DeployApp implements Node & Owner { """The ID of the object""" id: ID! - module: String! @deprecated(reason: "Use filename instead") - filename: String! - filesize: Int! - targetTriple: String! - downloadUrl: String! + createdBy: User! + createdAt: DateTime! + updatedAt: DateTime! + activeVersion: DeployAppVersion! + globalName: String! + globalId: ID! + url: String! + adminUrl: String! + permalink: String! + urls: [String]! + description: String + name: String! + owner: Owner! + versions(sortBy: DeployAppVersionsSortBy, createdAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppVersionConnection! + aggregateMetrics: AggregateMetrics! + aliases(offset: Int, before: String, after: String, first: Int, last: Int): AppAliasConnection! + usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! + deleted: Boolean! + favicon: URL + screenshot: URL } -type BindingsGeneratorConnection { +enum DeployAppAliasKindChoices { + """Deployment""" + DEPLOYMENT + + """Domain""" + DOMAIN +} + +type DeployAppConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [BindingsGeneratorEdge]! + edges: [DeployAppEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `BindingsGenerator` and its cursor.""" -type BindingsGeneratorEdge { +"""A Relay edge containing a `DeployApp` and its cursor.""" +type DeployAppEdge { """The item at the end of the edge""" - node: BindingsGenerator + node: DeployApp """A cursor for use in pagination""" cursor: String! } -type BindingsGenerator implements Node { +enum DeployAppsSortBy { + NEWEST + OLDEST + MOST_ACTIVE +} + +type DeployAppVersion implements Node { """The ID of the object""" id: ID! - packageVersion: PackageVersion! - active: Boolean! - commandName: String! - registryJavascriptlanguagebindings(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionNPMBindingConnection! - registryPythonlanguagebindings(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionPythonBindingConnection! + app: DeployApp! + yamlConfig: String! + userYamlConfig: String! + clientName: String! + signature: String + description: String + publishedBy: User! + createdAt: DateTime! + updatedAt: DateTime! + configWebc: String @deprecated(reason: "webc support has been deprecated for apps") + config: String! @deprecated(reason: "Please use jsonConfig instead") + jsonConfig: String! + url: String! + permalink: String! + urls: [String]! + version: String! + isActive: Boolean! + manifest: String! + logs( + """ + Get logs starting from this timestamp. Takes EPOCH timestamp in seconds. + """ + startingFrom: Float + + """Get logs starting from this timestamp. Takes ISO timestamp.""" + startingFromISO: DateTime + + """Fetch logs until this timestamp. Takes EPOCH timestamp in seconds.""" + until: Float + + """List of streams to fetch logs from. e.g. stdout, stderr.""" + streams: [LogStream] + + """List of instance ids to fetch logs from.""" + instanceIds: [String] + before: String + after: String + first: Int + last: Int + ): LogConnection! + usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! + sourcePackageVersion: PackageVersion! + aggregateMetrics: AggregateMetrics! + volumes: [AppVersionVolume] + favicon: URL + screenshot: URL } -type PackageVersionNPMBindingConnection { +type DeployAppVersionConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [PackageVersionNPMBindingEdge]! + edges: [DeployAppVersionEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `PackageVersionNPMBinding` and its cursor.""" -type PackageVersionNPMBindingEdge { +"""A Relay edge containing a `DeployAppVersion` and its cursor.""" +type DeployAppVersionEdge { """The item at the end of the edge""" - node: PackageVersionNPMBinding + node: DeployAppVersion """A cursor for use in pagination""" cursor: String! } -type PackageVersionNPMBinding implements PackageVersionLanguageBinding & Node { - """The ID of the object""" - id: ID! - language: ProgrammingLanguage! - - """The URL of the generated artifacts on Wasmer CDN.""" - url: String! - - """When the binding was generated""" - createdAt: DateTime! - - """Package version used to generate this binding""" - generator: BindingsGenerator! - name: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - kind: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - - """Name of package source""" - packageName: String! - - """Name of the package to import""" - importablePackageName: String! +enum DeployAppVersionsSortBy { + NEWEST + OLDEST +} - """Code snippet example to use the package""" - codeSnippetExample: String! - module: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - npmDefaultInstallPackageName(url: String): String! @deprecated(reason: "Please use packageName instead") +input DeploymentV1 { + name: String! + workload: WorkloadV1! } -interface PackageVersionLanguageBinding { - id: ID! - language: ProgrammingLanguage! - - """The URL of the generated artifacts on Wasmer CDN.""" - url: String! - - """When the binding was generated""" - createdAt: DateTime! - - """Package version used to generate this binding""" - generator: BindingsGenerator! - name: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - kind: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - - """Name of package source""" - packageName: String! - - """Name of the package to import""" - importablePackageName: String! - - """Code snippet example to use the package""" - codeSnippetExample: String! - module: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") -} - -enum ProgrammingLanguage { - PYTHON - JAVASCRIPT -} - -type PackageVersionPythonBindingConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [PackageVersionPythonBindingEdge]! - - """Total number of items in the connection.""" - totalCount: Int -} +input DetachPaymentMethodInput { + paymentMethod: ID! + clientMutationId: String +} """ -A Relay edge containing a `PackageVersionPythonBinding` and its cursor. +Try to detach a payment method from customer. +Fails if trying to detach a default method, +or if it's the only payment method. """ -type PackageVersionPythonBindingEdge { - """The item at the end of the edge""" - node: PackageVersionPythonBinding - - """A cursor for use in pagination""" - cursor: String! +type DetachPaymentMethodPayload { + success: Boolean! + billing: Billing! + clientMutationId: String } -type PackageVersionPythonBinding implements PackageVersionLanguageBinding & Node { - """The ID of the object""" - id: ID! - language: ProgrammingLanguage! +enum DjstripePaymentIntentStatusChoices { + """ + Cancellation invalidates the intent for future confirmation and cannot be undone. + """ + CANCELED - """The URL of the generated artifacts on Wasmer CDN.""" - url: String! + """Required actions have been handled.""" + PROCESSING - """When the binding was generated""" - createdAt: DateTime! + """Payment Method require additional action, such as 3D secure.""" + REQUIRES_ACTION - """Package version used to generate this binding""" - generator: BindingsGenerator! - name: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - kind: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + """Capture the funds on the cards which have been put on holds.""" + REQUIRES_CAPTURE - """Name of package source""" - packageName: String! + """Intent is ready to be confirmed.""" + REQUIRES_CONFIRMATION - """Name of the package to import""" - importablePackageName: String! + """Intent created and requires a Payment Method to be attached.""" + REQUIRES_PAYMENT_METHOD - """Code snippet example to use the package""" - codeSnippetExample: String! - module: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - pythonDefaultInstallPackageName(url: String): String! + """The funds are in your account.""" + SUCCEEDED } -type PackageDistribution { +type DNAMERecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + """ - Download URL of the tar.gz file. - If the package was published with webc only,this will contain download URL for webc file instead. + This domain name will alias to the entire subtree of that delegation domain. """ - downloadUrl: String! - expiresInSeconds: Int - size: Int - piritaDownloadUrl: String - piritaExpiresInSeconds: Int - piritaSize: Int - piritaSha256Hash: String - webcDownloadUrl: String - webcExpiresInSeconds: Int - webcSize: Int - webcSha256Hash: String -} - -type PackageVersionFilesystem { - wasm: String! - host: String! -} + dName: String! -type InterfaceVersion implements Node { """The ID of the object""" id: ID! - interface: Interface! - version: String! - content: String! - createdAt: DateTime! - updatedAt: DateTime! - publishedBy: User! - packageVersions(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -type Interface implements Node { - """The ID of the object""" - id: ID! +type DNSDomain implements Node { name: String! - displayName: String! - description: String! - homepage: String - icon: String + + """This zone will be accessible at /dns/{slug}/.""" + slug: String! + zoneFile: String! createdAt: DateTime! updatedAt: DateTime! - versions(offset: Int, before: String, after: String, first: Int, last: Int): InterfaceVersionConnection! - lastVersion: InterfaceVersion + deletedAt: DateTime + + """The ID of the object""" + id: ID! + records: [DNSRecord] + owner: Owner! } -type InterfaceVersionConnection { +type DNSDomainConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [InterfaceVersionEdge]! + edges: [DNSDomainEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `InterfaceVersion` and its cursor.""" -type InterfaceVersionEdge { +"""A Relay edge containing a `DNSDomain` and its cursor.""" +type DNSDomainEdge { """The item at the end of the edge""" - node: InterfaceVersion + node: DNSDomain """A cursor for use in pagination""" cursor: String! } -union PiritaFilesystemItem = PiritaFilesystemFile | PiritaFilesystemDir +enum DnsmanagerCertificationAuthorityAuthorizationRecordTagChoices { + """issue""" + ISSUE -type PiritaFilesystemDir { - name(display: PiritaFilesystemNameDisplay): String! -} + """issue wildcard""" + ISSUEWILD -type WEBCFilesystemItem { - name: String! - checksum: String! - size: Int! - offset: Int! + """Incident object description exchange format""" + IODEF } -type PackageVersionBindingConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! +enum DnsmanagerSshFingerprintRecordAlgorithmChoices { + """RSA""" + A_1 - """Contains the nodes in this connection.""" - edges: [PackageVersionBindingEdge]! + """DSA""" + A_2 - """Total number of items in the connection.""" - totalCount: Int + """ECDSA""" + A_3 + + """Ed25519""" + A_4 } -"""A Relay edge containing a `PackageVersionBinding` and its cursor.""" -type PackageVersionBindingEdge { - """The item at the end of the edge""" - node: PackageVersionBinding +enum DnsmanagerSshFingerprintRecordTypeChoices { + """SHA-1""" + A_1 - """A cursor for use in pagination""" - cursor: String! + """SHA-256""" + A_2 } -union PackageVersionBinding = PackageVersionNPMBinding | PackageVersionPythonBinding +input DNSMXExtraInput { + preference: Int! +} -type WebcImageConnection { +union DNSRecord = ARecord | AAAARecord | CNAMERecord | TXTRecord | MXRecord | NSRecord | CAARecord | DNAMERecord | PTRRecord | SOARecord | SRVRecord | SSHFPRecord + +type DNSRecordConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [WebcImageEdge]! + edges: [DNSRecordEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `WebcImage` and its cursor.""" -type WebcImageEdge { +"""A Relay edge containing a `DNSRecord` and its cursor.""" +type DNSRecordEdge { """The item at the end of the edge""" - node: WebcImage + node: DNSRecord """A cursor for use in pagination""" cursor: String! } -type AppTemplateConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [AppTemplateEdge]! +interface DNSRecordInterface { + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime +} - """Total number of items in the connection.""" - totalCount: Int +enum DNSRecordsSortBy { + NEWEST + OLDEST } -"""A Relay edge containing a `AppTemplate` and its cursor.""" -type AppTemplateEdge { - """The item at the end of the edge""" - node: AppTemplate +type ErrorType { + field: String! + messages: [String!]! +} - """A cursor for use in pagination""" - cursor: String! +type EventBody { + text: String! + ranges: [NodeBodyRange!]! } -type AppTemplate implements Node { - """The ID of the object""" - id: ID! - name: String! - slug: String! - description: String! - demoUrl: String! - repoUrl: String! - category: AppTemplateCategory! - isPublic: Boolean! - createdAt: DateTime! - updatedAt: DateTime! - readme: String! - useCases: JSONString! - framework: String! - language: String! - repoLicense: String! - usingPackage: Package - defaultImage: String +input FileSystemPermissionsV1 { + delete: Boolean + read: Boolean + write: Boolean } -type AppTemplateCategory implements Node { - """The ID of the object""" - id: ID! +input FileSystemVolumeConfigV1 { + mounts: [FileSystemVolumeMountV1]! name: String! - slug: String! - description: String! - createdAt: DateTime! - updatedAt: DateTime! - appTemplates(offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateConnection! + source: FileSystemVolumeSourceV1! } -type PackageWebcConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [PackageWebcEdge]! - - """Total number of items in the connection.""" - totalCount: Int +input FileSystemVolumeMountV1 { + path: String! + permissions: [FileSystemPermissionsV1] } -"""A Relay edge containing a `PackageWebc` and its cursor.""" -type PackageWebcEdge { - """The item at the end of the edge""" - node: PackageWebc - - """A cursor for use in pagination""" - cursor: String! +input FileSystemVolumeSourceLocalV1 { + maximumSize: String! } -type PackageWebc implements Node & PackageInstance { - """The ID of the object""" - id: ID! - package: Package! - webc: WebcImage - createdAt: DateTime! - updatedAt: DateTime! - piritaManifest: JSONString - piritaOffsets: JSONString - piritaVolumes: JSONString - isArchived: Boolean! - clientName: String - publishedBy: User! - webcUrl: String! +input FileSystemVolumeSourceV1 { + local: FileSystemVolumeSourceLocalV1! } -type Collection { - slug: String! - displayName: String! - description: String! - createdAt: DateTime! - banner: String! - packages(before: String, after: String, first: Int, last: Int): PackageConnection! +input GenerateAPITokenInput { + identifier: String + clientMutationId: String } -type CategoryConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [CategoryEdge]! - - """Total number of items in the connection.""" - totalCount: Int +type GenerateAPITokenPayload { + token: APIToken + tokenRaw: String + user: User + clientMutationId: String } -"""A Relay edge containing a `Category` and its cursor.""" -type CategoryEdge { - """The item at the end of the edge""" - node: Category - - """A cursor for use in pagination""" - cursor: String! +input GenerateBindingsForAllPackagesInput { + bindingsGeneratorId: ID + bindingsGeneratorCommand: String + clientMutationId: String } -type Category implements Node { - """The ID of the object""" - id: ID! - - """A category is a label that can be attached to a package.""" - name: String! - packages(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection +type GenerateBindingsForAllPackagesPayload { + message: String! + clientMutationId: String } -type PackageKeywordConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [PackageKeywordEdge]! - - """Total number of items in the connection.""" - totalCount: Int +input GenerateDeployConfigTokenInput { + config: String! + clientMutationId: String } -"""A Relay edge containing a `PackageKeyword` and its cursor.""" -type PackageKeywordEdge { - """The item at the end of the edge""" - node: PackageKeyword - - """A cursor for use in pagination""" - cursor: String! +type GenerateDeployConfigTokenPayload { + token: String! + config: String! + clientMutationId: String } -type PackageKeyword implements Node { - """The ID of the object""" - id: ID! - name: String! +input GenerateDeployTokenInput { + deployConfigVersionId: String! + clientMutationId: String } -type PackageCollaboratorConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [PackageCollaboratorEdge]! - - """Total number of items in the connection.""" - totalCount: Int +type GenerateDeployTokenPayload { + token: String! + deployConfigVersion: DeployAppVersion! + clientMutationId: String } -"""A Relay edge containing a `PackageCollaborator` and its cursor.""" -type PackageCollaboratorEdge { - """The item at the end of the edge""" - node: PackageCollaborator +""" +The `GenericScalar` scalar type represents a generic +GraphQL scalar value that could be: +String, Boolean, Int, Float, List or Object. +""" +scalar GenericScalar - """A cursor for use in pagination""" - cursor: String! +type GetPasswordResetToken { + valid: Boolean! + user: User } -type PackageCollaborator implements Node { - """The ID of the object""" - id: ID! - user: User! - role: RegistryPackageMaintainerRoleChoices! - package: Package! - createdAt: DateTime! - updatedAt: DateTime! - invite: PackageCollaboratorInvite -} +union GlobalObject = User | Namespace -enum RegistryPackageMaintainerRoleChoices { - """Owner""" +enum GrapheneRole { OWNER - - """Admin""" ADMIN - - """Editor""" EDITOR - - """Viewer""" VIEWER } -type PackageCollaboratorInvite implements Node { +input InputSignature { + publicKeyKeyId: String! + data: String! +} + +type Interface implements Node { """The ID of the object""" id: ID! - requestedBy: User! - user: User - inviteEmail: String - package: Package! - role: RegistryPackageMaintainerInviteRoleChoices! - accepted: PackageCollaborator - approvedBy: User - declinedBy: User + name: String! + displayName: String! + description: String! + homepage: String + icon: String createdAt: DateTime! - expiresAt: DateTime! - closedAt: DateTime + updatedAt: DateTime! + versions(offset: Int, before: String, after: String, first: Int, last: Int): InterfaceVersionConnection! + lastVersion: InterfaceVersion } -enum RegistryPackageMaintainerInviteRoleChoices { - """Owner""" - OWNER - - """Admin""" - ADMIN - - """Editor""" - EDITOR - - """Viewer""" - VIEWER +type InterfaceVersion implements Node { + """The ID of the object""" + id: ID! + interface: Interface! + version: String! + content: String! + createdAt: DateTime! + updatedAt: DateTime! + publishedBy: User! + packageVersions(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! } -type PackageCollaboratorInviteConnection { +type InterfaceVersionConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [PackageCollaboratorInviteEdge]! + edges: [InterfaceVersionEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `PackageCollaboratorInvite` and its cursor.""" -type PackageCollaboratorInviteEdge { +"""A Relay edge containing a `InterfaceVersion` and its cursor.""" +type InterfaceVersionEdge { """The item at the end of the edge""" - node: PackageCollaboratorInvite + node: InterfaceVersion """A cursor for use in pagination""" cursor: String! } -enum GrapheneRole { - OWNER - ADMIN - EDITOR - VIEWER -} - -type PackageTransferRequest implements Node { - """The ID of the object""" - id: ID! - requestedBy: User! - previousOwnerObjectId: Int! - newOwnerObjectId: Int! - package: Package! - approvedBy: User - declinedBy: User - createdAt: DateTime! - expiresAt: DateTime! - closedAt: DateTime - previousOwner: PackageOwner! - newOwner: PackageOwner! +input InviteNamespaceCollaboratorInput { + namespaceId: ID! + role: GrapheneRole! + username: String + email: String + clientMutationId: String } -type PackageSearchConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [PackageSearchEdge]! - totalCount: Int +type InviteNamespaceCollaboratorPayload { + invite: NamespaceCollaboratorInvite! + namespace: Namespace! + clientMutationId: String } -"""A Relay edge containing a `PackageSearch` and its cursor.""" -type PackageSearchEdge { - """The item at the end of the edge""" - node: PackageVersion - - """A cursor for use in pagination""" - cursor: String! +input InvitePackageCollaboratorInput { + packageName: String! + role: GrapheneRole! + username: String + email: String + clientMutationId: String } -type DeployAppConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [DeployAppEdge]! - - """Total number of items in the connection.""" - totalCount: Int +type InvitePackageCollaboratorPayload { + invite: PackageCollaboratorInvite! + package: Package! + clientMutationId: String } -"""A Relay edge containing a `DeployApp` and its cursor.""" -type DeployAppEdge { - """The item at the end of the edge""" - node: DeployApp - - """A cursor for use in pagination""" - cursor: String! +input JoinWaitlistInput { + name: String! + clientMutationId: String } -enum DeployAppsSortBy { - NEWEST - OLDEST - MOST_ACTIVE +"""Add current user to the waitlist.""" +type JoinWaitlistPayload { + waitlistMember: WaitlistMember! + clientMutationId: String } -type NamespaceCollaboratorConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! +""" +Allows use of a JSON String for input / output from the GraphQL schema. - """Contains the nodes in this connection.""" - edges: [NamespaceCollaboratorEdge]! +Use of this type is *not recommended* as you lose the benefits of having a defined, static +schema (one of the key benefits of GraphQL). +""" +scalar JSONString - """Total number of items in the connection.""" - totalCount: Int +interface Likeable { + id: ID! + likersCount: Int! + viewerHasLiked: Boolean! } -"""A Relay edge containing a `NamespaceCollaborator` and its cursor.""" -type NamespaceCollaboratorEdge { - """The item at the end of the edge""" - node: NamespaceCollaborator - - """A cursor for use in pagination""" - cursor: String! +input LikePackageInput { + packageId: ID! + clientMutationId: String } -type PackageTransferRequestConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! +type LikePackagePayload { + package: Package! + clientMutationId: String +} - """Contains the nodes in this connection.""" - edges: [PackageTransferRequestEdge]! +"""Log entry for deploy app.""" +type Log { + """Timestamp in nanoseconds""" + timestamp: Float! - """Total number of items in the connection.""" - totalCount: Int -} + """ISO 8601 string in UTC""" + datetime: DateTime! -"""A Relay edge containing a `PackageTransferRequest` and its cursor.""" -type PackageTransferRequestEdge { - """The item at the end of the edge""" - node: PackageTransferRequest + """Log message""" + message: String! - """A cursor for use in pagination""" - cursor: String! + """Log stream""" + stream: LogStream } -type DNSDomainConnection { +type LogConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [DNSDomainEdge]! - - """Total number of items in the connection.""" - totalCount: Int + edges: [LogEdge]! } -"""A Relay edge containing a `DNSDomain` and its cursor.""" -type DNSDomainEdge { +"""A Relay edge containing a `Log` and its cursor.""" +type LogEdge { """The item at the end of the edge""" - node: DNSDomain + node: Log """A cursor for use in pagination""" cursor: String! } -type DNSDomain implements Node { - name: String! - - """This zone will be accessible at /dns/{slug}/.""" - slug: String! - zoneFile: String! - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime +""" - """The ID of the object""" - id: ID! - records: [DNSRecord] - owner: Owner! + Enum of ways a user can login. One user can have many login methods + associated with their account. + +""" +enum LoginMethod { + GOOGLE + GITHUB + PASSWORD } -union DNSRecord = ARecord | AAAARecord | CNAMERecord | TXTRecord | MXRecord | NSRecord | CAARecord | DNAMERecord | PTRRecord | SOARecord | SRVRecord | SSHFPRecord - -type ARecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - address: String! +enum LogStream { + STDOUT + STDERR + RUNTIME +} - """The ID of the object""" +input MakePackagePublicInput { + """The ID of the package to make public""" id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! + clientMutationId: String } -interface DNSRecordInterface { - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime +type MakePackagePublicPayload { + package: Package! + clientMutationId: String } -type AAAARecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - address: String! - - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! +input MarkAppVersionAsActiveInput { + """The ID of the DeployAppVersion to set as the new active version.""" + appVersion: ID! + clientMutationId: String } -type CNAMERecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime +""" +Mutation to change the active version of a DeployApp to another DeployAppVersion. +""" +type MarkAppVersionAsActivePayload { + app: DeployApp! + clientMutationId: String +} - """This domain name will alias to this canonical name.""" - cName: String! +enum MetricRange { + LAST_24_HOURS + LAST_30_DAYS + LAST_1_HOUR +} - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! +enum MetricType { + cpu_time + memory_time + network_egress + network_ingress + no_of_requests + no_of_failed_requests + cost } -type TXTRecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - data: String! +"""Units for metrics""" +enum MetricUnit { + """represents the unit of "seconds".""" + SEC - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! -} + """represents the unit of "milliseconds".""" + MS -type MXRecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - preference: Int! - exchange: String! + """represents the unit of "kilobytes".""" + KB - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! + """represents the unit of "kilobytes per second".""" + KBS + + """represents the unit of "number of requests".""" + NO_REQUESTS + + """represents the unit of "cost" in USD.""" + DOLLARS } -type NSRecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - nsdname: String! +"""Response object for MFAAuth mutation.""" +type MFAAuthResponse { + success: Boolean! + token: String + refreshToken: String + username: String + refreshTokenExpiresIn: Int +} - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! +input MFAEmailAuthInput { + username: String! + otp: String! + clientMutationId: String } -type CAARecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - flags: Int! - tag: DnsmanagerCertificationAuthorityAuthorizationRecordTagChoices! - value: String! +type MFAEmailGenerationResponse { + success: Boolean! +} - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! +input MFAGenerateEmailOTPInput { + clientMutationId: String } -enum DnsmanagerCertificationAuthorityAuthorizationRecordTagChoices { - """issue""" - ISSUE +input MFAGenerateRecoveryTokenInput { + clientMutationId: String +} - """issue wildcard""" - ISSUEWILD +input MFARecoveryAuthInput { + username: String! + otp: String! + clientMutationId: String +} - """Incident object description exchange format""" - IODEF +type MFARecoveryCodes { + codes: [String]! } -type DNAMERecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime +input MFATOTPAuthInput { + username: String! + otp: String! + clientMutationId: String +} - """ - This domain name will alias to the entire subtree of that delegation domain. - """ - dName: String! +input MFATOTPGetTokenInput { + clientMutationId: String +} - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! +type MFATOTPTokenType { + qr: String + secretKey: String } -type PTRRecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - ptrdname: String! +input MFATOTPVerifyInput { + answer: String! + secretKey: String! + clientMutationId: String +} - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! +type MFATOTPVerifyPayload { + status: MFATOTPVerifyStatus + clientMutationId: String } -type SOARecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime +enum MFATOTPVerifyStatus { + SUCCESS + RECOVERY +} - """Primary master name server for this zone.""" - mname: String! +type Mutation { + """Viewer accepts the latest ToS.""" + acceptTOS(input: AcceptTOSInput!): AcceptTOSPayload + publishDeployApp(input: PublishDeployAppInput!): PublishDeployAppPayload + deleteApp(input: DeleteAppInput!): DeleteAppPayload - """Email address of the administrator responsible for this zone.""" - rname: String! + """Add current user to the waitlist.""" + joinWaitlist(input: JoinWaitlistInput!): JoinWaitlistPayload - """ - A slave name server will initiate a zone transfer if this serial is incremented. - """ - serial: BigInt! + """Add stripe payment to the user""" + addPayment(input: AddPaymentInput!): AddPaymentPayload """ - Number of seconds after which secondary name servers should query the master to detect zone changes. + Mutation to change the active version of a DeployApp to another DeployAppVersion. """ - refresh: BigInt! + markAppVersionAsActive(input: MarkAppVersionAsActiveInput!): MarkAppVersionAsActivePayload - """ - Number of seconds after which secondary name servers should retry to request the serial number from the master if the master does not respond. - """ - retry: BigInt! + """Set a payment method as default for the user.""" + makePaymentDefault(input: SetDefaultPaymentMethodInput!): SetDefaultPaymentMethodPayload """ - Number of seconds after which secondary name servers should stop answering request for this zone if the master does not respond. + Try to detach a payment method from customer. + Fails if trying to detach a default method, + or if it's the only payment method. """ - expire: BigInt! + detachPaymentMethod(input: DetachPaymentMethodInput!): DetachPaymentMethodPayload + generateDeployConfigToken(input: GenerateDeployConfigTokenInput!): GenerateDeployConfigTokenPayload + renameApp(input: RenameAppInput!): RenameAppPayload + renameAppAlias(input: RenameAppAliasInput!): RenameAppAliasPayload + requestAppTransfer(input: RequestAppTransferInput!): RequestAppTransferPayload + acceptAppTransferRequest(input: AcceptAppTransferRequestInput!): AcceptAppTransferRequestPayload + removeAppTransferRequest(input: RemoveAppTransferRequestInput!): RemoveAppTransferRequestPayload + createRepoForAppTemplate(input: CreateRepoForAppTemplateInput!): CreateRepoForAppTemplatePayload + registerDomain(input: RegisterDomainInput!): RegisterDomainPayload + upsertDNSRecord(input: UpsertDNSRecordInput!): UpsertDNSRecordPayload + deleteDNSRecord(input: DeleteDNSRecordInput!): DeleteDNSRecordPayload + upsertDomainFromZoneFile(input: UpsertDomainFromZoneFileInput!): UpsertDomainFromZoneFilePayload + deleteDomain(input: DeleteDomainInput!): DeleteDomainPayload + tokenAuth(input: ObtainJSONWebTokenInput!): ObtainJSONWebTokenPayload + generateDeployToken(input: GenerateDeployTokenInput!): GenerateDeployTokenPayload + verifyAccessToken(token: String): Verify + refreshAccessToken(refreshToken: String): Refresh + revokeAccessToken(refreshToken: String): Revoke + registerUser(input: RegisterUserInput!): RegisterUserPayload + socialAuth(input: SocialAuthJWTInput!): SocialAuthJWTPayload + validateUserEmail(input: ValidateUserEmailInput!): ValidateUserEmailPayload + requestPasswordReset(input: RequestPasswordResetInput!): RequestPasswordResetPayload + requestValidationEmail(input: RequestValidationEmailInput!): RequestValidationEmailPayload + changeUserPassword(input: ChangeUserPasswordInput!): ChangeUserPasswordPayload + changeUserUsername(input: ChangeUserUsernameInput!): ChangeUserUsernamePayload + changeUserEmail(input: ChangeUserEmailInput!): ChangeUserEmailPayload + updateUserInfo(input: UpdateUserInfoInput!): UpdateUserInfoPayload + validateUserPassword(input: ValidateUserPasswordInput!): ValidateUserPasswordPayload + generateApiToken(input: GenerateAPITokenInput!): GenerateAPITokenPayload + revokeApiToken(input: RevokeAPITokenInput!): RevokeAPITokenPayload + checkUserExists(input: CheckUserExistsInput!): CheckUserExistsPayload + readNotification(input: ReadNotificationInput!): ReadNotificationPayload + seePendingNotifications(input: SeePendingNotificationsInput!): SeePendingNotificationsPayload + newNonce(input: NewNonceInput!): NewNoncePayload + validateNonce(input: ValidateNonceInput!): ValidateNoncePayload + mfa2totpGetToken(input: MFATOTPGetTokenInput!): MFATOTPTokenType + mfa2totpVerify(input: MFATOTPVerifyInput!): MFATOTPVerifyPayload + mfa2totpAuth(input: MFATOTPAuthInput!): MFAAuthResponse + mfa2RecoveryGetToken(input: MFAGenerateRecoveryTokenInput!): MFARecoveryCodes + mfa2RecoveryAuth(input: MFARecoveryAuthInput!): MFAAuthResponse + mfa2EmailAuth(input: MFAEmailAuthInput!): MFAAuthResponse + mfa2EmailGetToken(input: MFAGenerateEmailOTPInput!): MFAEmailGenerationResponse + publishPublicKey(input: PublishPublicKeyInput!): PublishPublicKeyPayload + publishPackage(input: PublishPackageInput!): PublishPackagePayload + updatePackage(input: UpdatePackageInput!): UpdatePackagePayload + likePackage(input: LikePackageInput!): LikePackagePayload + unlikePackage(input: UnlikePackageInput!): UnlikePackagePayload + watchPackage(input: WatchPackageInput!): WatchPackagePayload + unwatchPackage(input: UnwatchPackageInput!): UnwatchPackagePayload + archivePackage(input: ArchivePackageInput!): ArchivePackagePayload + renamePackage(input: RenamePackageInput!): RenamePackagePayload + changePackageVersionArchivedStatus(input: ChangePackageVersionArchivedStatusInput!): ChangePackageVersionArchivedStatusPayload + createNamespace(input: CreateNamespaceInput!): CreateNamespacePayload + updateNamespace(input: UpdateNamespaceInput!): UpdateNamespacePayload + deleteNamespace(input: DeleteNamespaceInput!): DeleteNamespacePayload + inviteNamespaceCollaborator(input: InviteNamespaceCollaboratorInput!): InviteNamespaceCollaboratorPayload + acceptNamespaceCollaboratorInvite(input: AcceptNamespaceCollaboratorInviteInput!): AcceptNamespaceCollaboratorInvitePayload + removeNamespaceCollaboratorInvite(input: RemoveNamespaceCollaboratorInviteInput!): RemoveNamespaceCollaboratorInvitePayload + removeNamespaceCollaborator(input: RemoveNamespaceCollaboratorInput!): RemoveNamespaceCollaboratorPayload + updateNamespaceCollaboratorRole(input: UpdateNamespaceCollaboratorRoleInput!): UpdateNamespaceCollaboratorRolePayload + updateNamespaceCollaboratorInviteRole(input: UpdateNamespaceCollaboratorInviteRoleInput!): UpdateNamespaceCollaboratorInviteRolePayload + invitePackageCollaborator(input: InvitePackageCollaboratorInput!): InvitePackageCollaboratorPayload + acceptPackageCollaboratorInvite(input: AcceptPackageCollaboratorInviteInput!): AcceptPackageCollaboratorInvitePayload + removePackageCollaboratorInvite(input: RemovePackageCollaboratorInviteInput!): RemovePackageCollaboratorInvitePayload + updatePackageCollaboratorRole(input: UpdatePackageCollaboratorRoleInput!): UpdatePackageCollaboratorRolePayload + updatePackageCollaboratorInviteRole(input: UpdatePackageCollaboratorInviteRoleInput!): UpdatePackageCollaboratorInviteRolePayload + removePackageCollaborator(input: RemovePackageCollaboratorInput!): RemovePackageCollaboratorPayload + requestPackageTransfer(input: RequestPackageTransferInput!): RequestPackageTransferPayload + acceptPackageTransferRequest(input: AcceptPackageTransferRequestInput!): AcceptPackageTransferRequestPayload + removePackageTransferRequest(input: RemovePackageTransferRequestInput!): RemovePackageTransferRequestPayload + generateBindingsForAllPackages(input: GenerateBindingsForAllPackagesInput!): GenerateBindingsForAllPackagesPayload + makePackagePublic(input: MakePackagePublicInput!): MakePackagePublicPayload +} - """Time to live for purposes of negative caching.""" - minimum: BigInt! +type MXRecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + preference: Int! + exchange: String! """The ID of the object""" id: ID! @@ -1733,128 +1673,224 @@ type SOARecord implements Node & DNSRecordInterface { domain: DNSDomain! } -type SRVRecord implements Node & DNSRecordInterface { +type Namespace implements Node & PackageOwner & Owner { + """The ID of the object""" + id: ID! + name: String! + displayName: String + description: String! + avatar: String! + avatarUpdatedAt: DateTime + twitterHandle: String + githubHandle: String + websiteUrl: String createdAt: DateTime! updatedAt: DateTime! - deletedAt: DateTime + maintainerInvites(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorInviteConnection! + userSet(offset: Int, before: String, after: String, first: Int, last: Int): UserConnection! + globalName: String! + globalId: ID! + packages(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection! + apps(sortBy: DeployAppsSortBy, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppConnection! + packageVersions(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! + collaborators(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorConnection! + publicActivity(before: String, after: String, first: Int, last: Int): ActivityEventConnection! + pendingInvites(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorInviteConnection! + viewerHasRole(role: GrapheneRole!): Boolean! + viewerAsCollaborator(role: GrapheneRole): NamespaceCollaborator - """The symbolic name of the desired service.""" - service: String! + """Whether the current user is invited to the namespace""" + viewerIsInvited: Boolean! - """ - The transport protocol of the desired service, usually either TCP or UDP. - """ - protocol: String! + """The invitation for the current user to the namespace""" + viewerInvitation: NamespaceCollaboratorInvite + packageTransfersIncoming(offset: Int, before: String, after: String, first: Int, last: Int): PackageTransferRequestConnection! + usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! + domains(offset: Int, before: String, after: String, first: Int, last: Int): DNSDomainConnection! +} - """The priority of the target host, lower value means more preferred.""" - priority: Int! +type NamespaceCollaborator implements Node { + """The ID of the object""" + id: ID! + user: User! + role: RegistryNamespaceMaintainerRoleChoices! + namespace: Namespace! + createdAt: DateTime! + updatedAt: DateTime! + invite: NamespaceCollaboratorInvite +} - """ - A relative weight for records with the same priority, higher value means higher chance of getting picked. - """ - weight: Int! - port: Int! +type NamespaceCollaboratorConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! - """ - The canonical hostname of the machine providing the service, ending in a dot. - """ - target: String! + """Contains the nodes in this connection.""" + edges: [NamespaceCollaboratorEdge]! - """The ID of the object""" - id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! + """Total number of items in the connection.""" + totalCount: Int } -type SSHFPRecord implements Node & DNSRecordInterface { - createdAt: DateTime! - updatedAt: DateTime! - deletedAt: DateTime - algorithm: DnsmanagerSshFingerprintRecordAlgorithmChoices! - type: DnsmanagerSshFingerprintRecordTypeChoices! - fingerprint: String! +"""A Relay edge containing a `NamespaceCollaborator` and its cursor.""" +type NamespaceCollaboratorEdge { + """The item at the end of the edge""" + node: NamespaceCollaborator + + """A cursor for use in pagination""" + cursor: String! +} +type NamespaceCollaboratorInvite implements Node { """The ID of the object""" id: ID! - name: String! - ttl: Int! - dnsClass: String - text: String! - domain: DNSDomain! + requestedBy: User! + user: User + inviteEmail: String + namespace: Namespace! + role: RegistryNamespaceMaintainerInviteRoleChoices! + accepted: NamespaceCollaborator + approvedBy: User + declinedBy: User + createdAt: DateTime! + expiresAt: DateTime! + closedAt: DateTime } -enum DnsmanagerSshFingerprintRecordAlgorithmChoices { - """RSA""" - A_1 - - """DSA""" - A_2 +type NamespaceCollaboratorInviteConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! - """ECDSA""" - A_3 + """Contains the nodes in this connection.""" + edges: [NamespaceCollaboratorInviteEdge]! - """Ed25519""" - A_4 + """Total number of items in the connection.""" + totalCount: Int } -enum DnsmanagerSshFingerprintRecordTypeChoices { - """SHA-1""" - A_1 +""" +A Relay edge containing a `NamespaceCollaboratorInvite` and its cursor. +""" +type NamespaceCollaboratorInviteEdge { + """The item at the end of the edge""" + node: NamespaceCollaboratorInvite - """SHA-256""" - A_2 + """A cursor for use in pagination""" + cursor: String! } -type APITokenConnection { +type NamespaceConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [APITokenEdge]! + edges: [NamespaceEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -"""A Relay edge containing a `APIToken` and its cursor.""" -type APITokenEdge { +"""A Relay edge containing a `Namespace` and its cursor.""" +type NamespaceEdge { """The item at the end of the edge""" - node: APIToken + node: Namespace """A cursor for use in pagination""" cursor: String! } -type APIToken { +enum NamespaceOrderBy { + PACKAGE_COUNT + COLLABORATOR_COUNT + APP_COUNT + CREATED_DATE +} + +input NamespacesFilter { + count: Int = 1000 + sortBy: SearchOrderSort = ASC + + """Filter namespaces by package count.""" + packageCount: CountFilter + + """Filter namespaces created after this date.""" + createdAfter: DateTime + + """Filter namespaces created before this date.""" + createdBefore: DateTime + + """Filter namespaces by user count.""" + userCount: CountFilter + + """Filter namespaces by collaborator.""" + collaborator: String + + """Order namespaces by field.""" + orderBy: NamespaceOrderBy = CREATED_DATE +} + +type NativeExecutable implements Node { + """The ID of the object""" id: ID! - user: User! - identifier: String - createdAt: DateTime! - revokedAt: DateTime - lastUsedAt: DateTime - nonceSet(offset: Int, before: String, after: String, first: Int, last: Int): NonceConnection! + module: String! @deprecated(reason: "Use filename instead") + filename: String! + filesize: Int! + targetTriple: String! + downloadUrl: String! } -type NonceConnection { +type NativeExecutableConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [NonceEdge]! + edges: [NativeExecutableEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `Nonce` and its cursor.""" -type NonceEdge { +"""A Relay edge containing a `NativeExecutable` and its cursor.""" +type NativeExecutableEdge { """The item at the end of the edge""" - node: Nonce + node: NativeExecutable """A cursor for use in pagination""" cursor: String! } +input NetworkDnsAllowedHostsV1 { + allowAllHosts: Boolean + hosts: [String] + regexPatterns: [String] + wildcardPatterns: [String] +} + +input NetworkEgressV1 { + enabled: Boolean +} + +input NewNonceInput { + name: String! + callbackUrl: String! + clientMutationId: String +} + +type NewNoncePayload { + nonce: Nonce! + clientMutationId: String +} + +interface Node { + """The ID of the object""" + id: ID! +} + +type NodeBodyRange { + entity: Node! + offset: Int! + length: Int! +} + type Nonce implements Node { """The ID of the object""" id: ID! @@ -1868,1207 +1904,984 @@ type Nonce implements Node { authUrl: String! } -type UserNotificationConnection { +type NonceConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [UserNotificationEdge]! - hasPendingNotifications: Boolean! - pendingNotificationsCount: Int! + edges: [NonceEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -"""A Relay edge containing a `UserNotification` and its cursor.""" -type UserNotificationEdge { +"""A Relay edge containing a `Nonce` and its cursor.""" +type NonceEdge { """The item at the end of the edge""" - node: UserNotification + node: Nonce """A cursor for use in pagination""" cursor: String! } -type UserNotification implements Node { - """The ID of the object""" - id: ID! - icon: String - body: EventBody! - seenState: UserNotificationSeenState! - kind: UserNotificationKind +type NSRecord implements Node & DNSRecordInterface { createdAt: DateTime! -} - -enum UserNotificationSeenState { - UNSEEN - SEEN - SEEN_AND_READ -} - -union UserNotificationKind = UserNotificationKindPublishedPackageVersion | UserNotificationKindIncomingPackageTransfer | UserNotificationKindIncomingPackageInvite | UserNotificationKindIncomingNamespaceInvite | UserNotificationKindValidateEmail + updatedAt: DateTime! + deletedAt: DateTime + nsdname: String! -type UserNotificationKindPublishedPackageVersion { - packageVersion: PackageVersion! + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -type UserNotificationKindIncomingNamespaceInvite { - namespaceInvite: NamespaceCollaboratorInvite! +input ObtainJSONWebTokenInput { + clientMutationId: String + username: String! + password: String! } -type UserNotificationKindValidateEmail { - user: User! +type ObtainJSONWebTokenPayload { + payload: GenericScalar! + refreshExpiresIn: Int! + username: CaseInsensitiveString! + clientMutationId: String + token: String! + refreshToken: String! } -""" - - Enum of ways a user can login. One user can have many login methods - associated with their account. - -""" -enum LoginMethod { - GOOGLE - GITHUB - PASSWORD +"""An owner of a package.""" +interface Owner { + globalName: String! + globalId: ID! } -type SocialAuth implements Node { +type Package implements Likeable & Node & PackageOwner { """The ID of the object""" id: ID! - user: User! - provider: String! - uid: String! - extraData: JSONString! - created: DateTime! - modified: DateTime! - username: String! -} - -type Signature { - id: ID! - publicKey: PublicKey! - data: String! + name: String! + private: Boolean! createdAt: DateTime! -} + updatedAt: DateTime! + maintainers: [User]! @deprecated(reason: "Please use collaborators instead") + curated: Boolean! + ownerObjectId: Int! + lastVersion: PackageVersion -type StripeCustomer { - id: ID! -} + """The app icon. It should be formatted in the same way as Apple icons""" + icon: String! + totalDownloads: Int! + iconUpdatedAt: DateTime + watchersCount: Int! + webcs(offset: Int, before: String, after: String, first: Int, last: Int): WebcImageConnection! -type Billing { - stripeCustomer: StripeCustomer! - payments: [PaymentIntent]! - paymentMethods: [PaymentMethod]! -} + """List of app templates for this package""" + appTemplates(offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateConnection! + packagewebcSet(offset: Int, before: String, after: String, first: Int, last: Int): PackageWebcConnection! + versions: [PackageVersion]! + collectionSet: [Collection!]! + categories(offset: Int, before: String, after: String, first: Int, last: Int): CategoryConnection! + keywords(offset: Int, before: String, after: String, first: Int, last: Int): PackageKeywordConnection! + likersCount: Int! + viewerHasLiked: Boolean! + globalName: String! + globalId: ID! + alias: String + namespace: String! + displayName: String! -type PaymentIntent implements Node { - """The datetime this object was created in stripe.""" - created: DateTime + """The name of the package without the owner""" + packageName: String! - """Three-letter ISO currency code""" - currency: String! + """The app icon. It should be formatted in the same way as Apple icons""" + appIcon: String! @deprecated(reason: "Please use icon instead") - """ - Status of this PaymentIntent, one of requires_payment_method, requires_confirmation, requires_action, processing, requires_capture, canceled, or succeeded. You can read more about PaymentIntent statuses here. - """ - status: DjstripePaymentIntentStatusChoices! + """The total number of downloads of the package""" + downloadsCount: Int + + """The public keys for all the published versions""" + publicKeys: [PublicKey!]! + collaborators(offset: Int, before: String, after: String, first: Int, last: Int): PackageCollaboratorConnection! + pendingInvites(offset: Int, before: String, after: String, first: Int, last: Int): PackageCollaboratorInviteConnection! + viewerHasRole(role: GrapheneRole!): Boolean! + viewerAsCollaborator(role: GrapheneRole): PackageCollaborator + owner: PackageOwner! + isTransferring: Boolean! + activeTransferRequest: PackageTransferRequest + isArchived: Boolean! + viewerIsWatching: Boolean! + showDeployButton: Boolean! + similarPackageVersions(before: String, after: String, first: Int, last: Int): PackageSearchConnection! + + """Whether the current user is invited to the package""" + viewerIsInvited: Boolean! + + """The invitation for the current user to the package""" + viewerInvitation: PackageCollaboratorInvite +} +type PackageCollaborator implements Node { """The ID of the object""" id: ID! - amount: String! + user: User! + role: RegistryPackageMaintainerRoleChoices! + package: Package! + createdAt: DateTime! + updatedAt: DateTime! + invite: PackageCollaboratorInvite } -enum DjstripePaymentIntentStatusChoices { - """ - Cancellation invalidates the intent for future confirmation and cannot be undone. - """ - CANCELED - - """Required actions have been handled.""" - PROCESSING - - """Payment Method require additional action, such as 3D secure.""" - REQUIRES_ACTION +type PackageCollaboratorConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! - """Capture the funds on the cards which have been put on holds.""" - REQUIRES_CAPTURE + """Contains the nodes in this connection.""" + edges: [PackageCollaboratorEdge]! - """Intent is ready to be confirmed.""" - REQUIRES_CONFIRMATION + """Total number of items in the connection.""" + totalCount: Int +} - """Intent created and requires a Payment Method to be attached.""" - REQUIRES_PAYMENT_METHOD +"""A Relay edge containing a `PackageCollaborator` and its cursor.""" +type PackageCollaboratorEdge { + """The item at the end of the edge""" + node: PackageCollaborator - """The funds are in your account.""" - SUCCEEDED + """A cursor for use in pagination""" + cursor: String! } -union PaymentMethod = CardPaymentMethod - -type CardPaymentMethod implements Node { +type PackageCollaboratorInvite implements Node { """The ID of the object""" id: ID! - brand: CardBrand! - country: String! - expMonth: Int! - expYear: Int! - funding: CardFunding! - last4: String! - isDefault: Boolean! + requestedBy: User! + user: User + inviteEmail: String + package: Package! + role: RegistryPackageMaintainerInviteRoleChoices! + accepted: PackageCollaborator + approvedBy: User + declinedBy: User + createdAt: DateTime! + expiresAt: DateTime! + closedAt: DateTime } -""" -Card brand. +type PackageCollaboratorInviteConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! -Can be amex, diners, discover, jcb, mastercard, unionpay, visa, or unknown. -""" -enum CardBrand { - AMEX - DINERS - DISCOVER - JCB - MASTERCARD - UNIONPAY - VISA - UNKNOWN + """Contains the nodes in this connection.""" + edges: [PackageCollaboratorInviteEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -""" -Card funding type. +"""A Relay edge containing a `PackageCollaboratorInvite` and its cursor.""" +type PackageCollaboratorInviteEdge { + """The item at the end of the edge""" + node: PackageCollaboratorInvite -Can be credit, debit, prepaid, or unknown. -""" -enum CardFunding { - CREDIT - DEBIT - PREPAID - UNKNOWN + """A cursor for use in pagination""" + cursor: String! } -type Payment { - id: ID - amount: String - paidOn: DateTime -} +type PackageConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! -"""Log entry for deploy app.""" -type Log { - """Timestamp in nanoseconds""" - timestamp: Float! + """Contains the nodes in this connection.""" + edges: [PackageEdge]! - """ISO 8601 string in UTC""" - datetime: DateTime! + """Total number of items in the connection.""" + totalCount: Int +} - """Log message""" - message: String! - - """Log stream""" - stream: LogStream +type PackageDistribution { + """ + Download URL of the tar.gz file. + If the package was published with webc only,this will contain download URL for webc file instead. + """ + downloadUrl: String! + expiresInSeconds: Int + size: Int + piritaDownloadUrl: String + piritaExpiresInSeconds: Int + piritaSize: Int + piritaSha256Hash: String + webcDownloadUrl: String + webcExpiresInSeconds: Int + webcSize: Int + webcSha256Hash: String + webcVersion: WebcVersion } -type UserNotificationKindIncomingPackageTransfer { - packageTransferRequest: PackageTransferRequest! -} +"""A Relay edge containing a `Package` and its cursor.""" +type PackageEdge { + """The item at the end of the edge""" + node: Package -type UserNotificationKindIncomingPackageInvite { - packageInvite: PackageCollaboratorInvite! + """A cursor for use in pagination""" + cursor: String! } -input DeploymentV1 { - name: String! - workload: WorkloadV1! -} +type PackageInfo { + """Number of package versions published this month""" + versionsPublishedThisMonth: Int! -input WorkloadV1 { - capability: CapabilityMapV1 - name: String = null - runner: WorkloadRunnerV1! -} + """Number of new packages published this month""" + newPackagesThisMonth: Int! -input AppV1Spec { - aliases: [String] = [] - workload: WorkloadV2! + """Number of package downloads this month""" + packageDownloadsThisMonth: Int! } -input WorkloadV2 { - source: String! +interface PackageInstance { + piritaManifest: JSONString + piritaOffsets: JSONString + piritaVolumes: JSONString + isArchived: Boolean! + clientName: String + publishedBy: User! + createdAt: DateTime! + updatedAt: DateTime! + package: Package! + webc: WebcImage + tag: String! } -input CapabilityCpuV1 { - maximumThreads: Int - maximumUsage: Int +type PackageKeyword implements Node { + """The ID of the object""" + id: ID! + name: String! } -input FileSystemPermissionsV1 { - delete: Boolean - read: Boolean - write: Boolean -} +type PackageKeywordConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! -input FileSystemVolumeMountV1 { - path: String! - permissions: [FileSystemPermissionsV1] -} + """Contains the nodes in this connection.""" + edges: [PackageKeywordEdge]! -input FileSystemVolumeSourceLocalV1 { - maximumSize: String! + """Total number of items in the connection.""" + totalCount: Int } -input FileSystemVolumeSourceV1 { - local: FileSystemVolumeSourceLocalV1! -} +"""A Relay edge containing a `PackageKeyword` and its cursor.""" +type PackageKeywordEdge { + """The item at the end of the edge""" + node: PackageKeyword -input FileSystemVolumeConfigV1 { - mounts: [FileSystemVolumeMountV1]! - name: String! - source: FileSystemVolumeSourceV1! + """A cursor for use in pagination""" + cursor: String! } -input CapabilityFileSystemV1 { - volumes: [FileSystemVolumeConfigV1]! +enum PackageOrderBy { + ALPHABETICALLY + SIZE + TOTAL_DOWNLOADS + PUBLISHED_DATE + CREATED_DATE + TOTAL_LIKES } -input CapabilityPersistentMemoryV1 { - volumes: [String] +"""Setup for backwards compatibility with existing frontends.""" +interface PackageOwner { + globalName: String! + globalId: ID! } -input CapabilityMemorySwapV1 { - maximumSize: String - memoryId: String +interface PackageReleaseInterface { + piritaManifest: JSONString + piritaOffsets: JSONString + piritaVolumes: JSONString + isArchived: Boolean! + clientName: String + publishedBy: User! + createdAt: DateTime! + updatedAt: DateTime! + package: Package! + webc: WebcImage + tag: String! } -input CapabilityNetworkV1 { - egress: NetworkEgressV1 -} +type PackageSearchConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! -input NetworkEgressV1 { - enabled: Boolean + """Contains the nodes in this connection.""" + edges: [PackageSearchEdge]! + totalCount: Int } -input CapabilityNetworkDnsV1 { - enabled: Boolean - servers: [String] - allowedHosts: NetworkDnsAllowedHostsV1 -} +"""A Relay edge containing a `PackageSearch` and its cursor.""" +type PackageSearchEdge { + """The item at the end of the edge""" + node: PackageVersion -input NetworkDnsAllowedHostsV1 { - allowAllHosts: Boolean - hosts: [String] - regexPatterns: [String] - wildcardPatterns: [String] + """A cursor for use in pagination""" + cursor: String! } -input CapabilityNetworkGatewayV1 { - domains: [String] - enforceHttps: Boolean -} +input PackagesFilter { + count: Int = 1000 + sortBy: SearchOrderSort = ASC -input CapabilityMapV1 { - memorySwap: CapabilityCpuV1 -} + """Filter packages by being curated.""" + curated: Boolean -input WebcSourceV1 { - name: String! - namespace: String! - repository: String! = "https://registry.wasmer.wtf" - tag: String - authToken: String -} + """Filter packages by publish date.""" + publishDate: SearchPublishDate -input WorkloadRunnerV1 { - webProxy: RunnerWebProxyV1 - wcgi: RunnerWCGIV1 -} + """Filter packages by having bindings.""" + hasBindings: Boolean = false -"""Run a webassembly file.""" -input RunnerWCGIV1 { - source: WorkloadRunnerWasmSourceV1! - dialect: String -} + """Filter packages by being standalone.""" + isStandalone: Boolean = false -input RunnerWebProxyV1 { - source: WorkloadRunnerWasmSourceV1! -} + """Filter packages by having commands.""" + hasCommands: Boolean = false -input WorkloadRunnerWasmSourceV1 { - webc: WebcSourceV1! -} + """Filter packages by interface.""" + withInterfaces: [String] -type Query { - latestTOS: TermsOfService! - getDeployAppVersion(name: String!, owner: String, version: String): DeployAppVersion - getAllDomains(namespace: String, offset: Int, before: String, after: String, first: Int, last: Int): DNSDomainConnection! - getAllDNSRecords(sortBy: DNSRecordsSortBy, updatedAfter: DateTime, before: String, after: String, first: Int, last: Int): DNSRecordConnection! - getDomain(name: String!): DNSDomain - getDeployApp( - name: String! + """Filter packages by deployable status.""" + deployable: Boolean - """Owner of the app. Defaults to logged in user.""" - owner: String - ): DeployApp - getAppByGlobalAlias(alias: String!): DeployApp - getDeployApps(sortBy: DeployAppsSortBy, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppConnection! - getAppVersions(sortBy: DeployAppVersionsSortBy, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppVersionConnection! - getAppTemplates(categorySlug: String, offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateConnection - getAppTemplate(slug: String!): AppTemplate - getAppTemplateCategories(offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateCategoryConnection - viewer: User - getUser(username: String!): User - getPasswordResetToken(token: String!): GetPasswordResetToken - getAuthNonce(name: String!): Nonce + """Filter packages by license.""" + license: String - """Can the logged in user create app templates?""" - canDeployAppToGithub: Boolean! + """Filter packages created after this date.""" + createdAfter: DateTime - """Check if a repo exists in the logged in user's github account.""" - checkRepoExists( - """The namespace of the repo to check.""" - namespace: String! + """Filter packages created before this date.""" + createdBefore: DateTime - """The name of the repo to check.""" - name: String! - ): Boolean! + """Filter packages with version published after this date.""" + lastPublishedAfter: DateTime - """Generate a unique repo name in the logged in user's github account.""" - newRepoName( - """The github namespace of the repo to create the repo in.""" - namespace: String! + """Filter packages with version published before this date.""" + lastPublishedBefore: DateTime - """The template to use.""" - templateSlug: String! - ): String! - packages(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection - recentPackageVersions(curated: Boolean, offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! - allPackageVersions(sortBy: PackageVersionSortBy, createdAfter: DateTime, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! - getWebcImage(hash: String!): WebcImage - getNamespace(name: String!): Namespace - getPackage(name: String!): Package - getPackages(names: [String!]!): [Package]! - getPackageVersion(name: String!, version: String = "latest"): PackageVersion - getPackageVersions(names: [String!]!): [PackageVersion] - getPackageVersionByHash(name: String!, hash: String!): PackageVersion - getInterface(name: String!): Interface - getInterfaces(names: [String!]!): [Interface]! - getInterfaceVersion(name: String!, version: String = "latest"): InterfaceVersion - getContract(name: String!): Interface @deprecated(reason: "Please use getInterface instead") - getContracts(names: [String!]!): [Interface]! @deprecated(reason: "Please use getInterfaces instead") - getContractVersion(name: String!, version: String): InterfaceVersion @deprecated(reason: "Please use getInterfaceVersion instead") - getCommand(name: String!): Command - getCommands(names: [String!]!): [Command] - getCollections(before: String, after: String, first: Int, last: Int): CollectionConnection - getSignedUrlForPackageUpload(name: String!, version: String = "latest", expiresAfterSeconds: Int = 60): SignedUrl - getPackageHash(name: String!, hash: String!): PackageWebc! - categories(offset: Int, before: String, after: String, first: Int, last: Int): CategoryConnection! - blogposts(tags: [String!], before: String, after: String, first: Int, last: Int): BlogPostConnection! - getBlogpost(slug: String, featured: Boolean): BlogPost - allBlogpostTags(offset: Int, before: String, after: String, first: Int, last: Int): BlogPostTagConnection - search(query: String!, packages: PackagesFilter, namespaces: NamespacesFilter, users: UsersFilter, apps: AppFilter, blogposts: BlogPostsFilter, appTemplates: AppTemplateFilter, before: String, after: String, first: Int, last: Int): SearchConnection! - searchAutocomplete(kind: [SearchKind!], query: String!, before: String, after: String, first: Int, last: Int): SearchConnection! - getGlobalObject(slug: String!): GlobalObject - node( - """The ID of the object""" - id: ID! - ): Node - nodes(ids: [ID!]!): [Node] - info: RegistryInfo + """Filter packages by size.""" + size: CountFilter + + """Filter packages by download count.""" + downloads: CountFilter + + """Filter packages by like count.""" + likes: CountFilter + + """Filter packages by owner.""" + owner: String + + """Filter packages by published by.""" + publishedBy: String + + """Order packages by field.""" + orderBy: PackageOrderBy = PUBLISHED_DATE } -type TermsOfService implements Node { +type PackageTransferRequest implements Node { """The ID of the object""" id: ID! - content: String! + requestedBy: User! + previousOwnerObjectId: Int! + newOwnerObjectId: Int! + package: Package! + approvedBy: User + declinedBy: User createdAt: DateTime! - viewerHasAccepted: Boolean! + expiresAt: DateTime! + closedAt: DateTime + previousOwner: PackageOwner! + newOwner: PackageOwner! } -type DNSRecordConnection { +type PackageTransferRequestConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [DNSRecordEdge]! + edges: [PackageTransferRequestEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `DNSRecord` and its cursor.""" -type DNSRecordEdge { +"""A Relay edge containing a `PackageTransferRequest` and its cursor.""" +type PackageTransferRequestEdge { """The item at the end of the edge""" - node: DNSRecord + node: PackageTransferRequest """A cursor for use in pagination""" cursor: String! } -enum DNSRecordsSortBy { - NEWEST - OLDEST +type PackageVersion implements Node & PackageReleaseInterface & PackageInstance { + """The ID of the object""" + id: ID! + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + package: Package! + webc: WebcImage + webcV3: WebcImage + + """List of direct dependencies of this package version""" + dependencies(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! + publishedBy: User! + tag: String! + clientName: String + webcGenerationErrors: String + version: String! + description: String! + manifest: String! + license: String + licenseFile: String + readme: String + witMd: String + repository: String + homepage: String + staticObjectsCompiled: Boolean! + nativeExecutablesCompiled: Boolean! + signature: Signature + isArchived: Boolean! + file: String! + fileSize: BigInt! + totalDownloads: Int! + bindingsState: RegistryPackageVersionBindingsStateChoices! + nativeExecutablesState: RegistryPackageVersionNativeExecutablesStateChoices! + deployappversionSet(offset: Int, before: String, after: String, first: Int, last: Int): DeployAppVersionConnection! + lastversionPackage(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection! + commands: [Command!]! + nativeexecutableSet(offset: Int, before: String, after: String, first: Int, last: Int): NativeExecutableConnection! + bindingsgeneratorSet(offset: Int, before: String, after: String, first: Int, last: Int): BindingsGeneratorConnection! + javascriptlanguagebindingSet(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionNPMBindingConnection! + pythonlanguagebindingSet(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionPythonBindingConnection! + piritaManifest: JSONString + piritaOffsets: JSONString + piritaVolumes: JSONString + piritaFile: String @deprecated(reason: "Please use distribution.piritaDownloadUrl instead.") + piritaFileSize: Int @deprecated(reason: "Please use distribution.piritaSize instead.") + pirita256hash: String @deprecated(reason: "Please use distribution.piritaSha256Hash instead.") + distribution(version: WebcVersion): PackageDistribution! + filesystem: [PackageVersionFilesystem]! + isLastVersion: Boolean! + witFile: String + isSigned: Boolean! + moduleInterfaces: [InterfaceVersion!]! + modules: [PackageVersionModule!]! + getPiritaContents(volume: String! = "atom", base: String! = ""): [PiritaFilesystemItem!]! + getWebcContents(volume: String! = "atom", base: String! = "/"): [WEBCFilesystemItem!]! + nativeExecutables(triple: String, wasmerCompilerVersion: String): [NativeExecutable] + bindings: [PackageVersionLanguageBinding]! + npmBindings: PackageVersionNPMBinding + pythonBindings: PackageVersionPythonBinding + bindingsSet(before: String, after: String, first: Int, last: Int): PackageVersionBindingConnection + hasBindings: Boolean! + hasCommands: Boolean! + showDeployButton: Boolean! + isCorrupt: Boolean! } -type AppTemplateCategoryConnection { +union PackageVersionBinding = PackageVersionNPMBinding | PackageVersionPythonBinding + +type PackageVersionBindingConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [AppTemplateCategoryEdge]! + edges: [PackageVersionBindingEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `AppTemplateCategory` and its cursor.""" -type AppTemplateCategoryEdge { +"""A Relay edge containing a `PackageVersionBinding` and its cursor.""" +type PackageVersionBindingEdge { """The item at the end of the edge""" - node: AppTemplateCategory + node: PackageVersionBinding """A cursor for use in pagination""" cursor: String! } -type GetPasswordResetToken { - valid: Boolean! - user: User -} - -enum PackageVersionSortBy { - NEWEST - OLDEST -} - -type CollectionConnection { +type PackageVersionConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [CollectionEdge]! + edges: [PackageVersionEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -"""A Relay edge containing a `Collection` and its cursor.""" -type CollectionEdge { +"""A Relay edge containing a `PackageVersion` and its cursor.""" +type PackageVersionEdge { """The item at the end of the edge""" - node: Collection + node: PackageVersion """A cursor for use in pagination""" cursor: String! } -type SignedUrl { +type PackageVersionFilesystem { + wasm: String! + host: String! +} + +interface PackageVersionLanguageBinding { + id: ID! + language: ProgrammingLanguage! + + """The URL of the generated artifacts on Wasmer CDN.""" + url: String! + + """When the binding was generated""" + createdAt: DateTime! + + """Package version used to generate this binding""" + generator: BindingsGenerator! + name: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + kind: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + + """Name of package source""" + packageName: String! + + """Name of the package to import""" + importablePackageName: String! + + """Code snippet example to use the package""" + codeSnippetExample: String! + module: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") +} + +type PackageVersionModule { + name: String! + source: String! + abi: String + publicUrl: String! + atom: PiritaFilesystemFile! + rangeHeader: String! +} + +type PackageVersionNPMBinding implements PackageVersionLanguageBinding & Node { + """The ID of the object""" + id: ID! + language: ProgrammingLanguage! + + """The URL of the generated artifacts on Wasmer CDN.""" url: String! + + """When the binding was generated""" + createdAt: DateTime! + + """Package version used to generate this binding""" + generator: BindingsGenerator! + name: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + kind: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + + """Name of package source""" + packageName: String! + + """Name of the package to import""" + importablePackageName: String! + + """Code snippet example to use the package""" + codeSnippetExample: String! + module: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + npmDefaultInstallPackageName(url: String): String! @deprecated(reason: "Please use packageName instead") } -type BlogPostConnection { +type PackageVersionNPMBindingConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [BlogPostEdge]! + edges: [PackageVersionNPMBindingEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -"""A Relay edge containing a `BlogPost` and its cursor.""" -type BlogPostEdge { +"""A Relay edge containing a `PackageVersionNPMBinding` and its cursor.""" +type PackageVersionNPMBindingEdge { """The item at the end of the edge""" - node: BlogPost + node: PackageVersionNPMBinding """A cursor for use in pagination""" cursor: String! } -type BlogPost implements Node { +type PackageVersionPythonBinding implements PackageVersionLanguageBinding & Node { """The ID of the object""" id: ID! - live: Boolean! + language: ProgrammingLanguage! - """The page title as you'd like it to be seen by the public""" - title: String! + """The URL of the generated artifacts on Wasmer CDN.""" + url: String! - """ - The name of the page as it will appear in URLs e.g http://domain.com/blog/[my-slug]/ - """ - slug: String! - owner: User - body: String! - publishDate: DateTime - theme: BlogBlogPostThemeChoices! - url: String! - coverImageUrl: String - opengraphImageUrl: String - tagline: String! - relatedArticles: [BlogPost!] - updatedAt: DateTime! - tags: [BlogPostTag!] - editUrl: String -} - -enum BlogBlogPostThemeChoices { - """Green""" - GREEN + """When the binding was generated""" + createdAt: DateTime! - """Purple""" - PURPLE + """Package version used to generate this binding""" + generator: BindingsGenerator! + name: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + kind: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") - """Orange""" - ORANGE + """Name of package source""" + packageName: String! - """Blue""" - BLUE -} + """Name of the package to import""" + importablePackageName: String! -type BlogPostTag implements Node { - """The ID of the object""" - id: ID! - name: String! - slug: String! + """Code snippet example to use the package""" + codeSnippetExample: String! + module: String! @deprecated(reason: "Do not use this field, since bindings for all modules are generated at once now.") + pythonDefaultInstallPackageName(url: String): String! } -type BlogPostTagConnection { +type PackageVersionPythonBindingConnection { """Pagination data for this connection.""" pageInfo: PageInfo! """Contains the nodes in this connection.""" - edges: [BlogPostTagEdge]! + edges: [PackageVersionPythonBindingEdge]! """Total number of items in the connection.""" totalCount: Int } -"""A Relay edge containing a `BlogPostTag` and its cursor.""" -type BlogPostTagEdge { - """The item at the end of the edge""" - node: BlogPostTag - - """A cursor for use in pagination""" - cursor: String! -} - -type SearchConnection { - """Pagination data for this connection.""" - pageInfo: PageInfo! - - """Contains the nodes in this connection.""" - edges: [SearchEdge]! - totalCount: Int -} - -"""A Relay edge containing a `Search` and its cursor.""" -type SearchEdge { +""" +A Relay edge containing a `PackageVersionPythonBinding` and its cursor. +""" +type PackageVersionPythonBindingEdge { """The item at the end of the edge""" - node: SearchResult + node: PackageVersionPythonBinding """A cursor for use in pagination""" cursor: String! } -union SearchResult = PackageVersion | User | Namespace | DeployApp | BlogPost | AppTemplate - -input PackagesFilter { - count: Int = 1000 - sortBy: SearchOrderSort = ASC - - """Filter packages by being curated.""" - curated: Boolean - - """Filter packages by publish date.""" - publishDate: SearchPublishDate - - """Filter packages by having bindings.""" - hasBindings: Boolean = false - - """Filter packages by being standalone.""" - isStandalone: Boolean = false - - """Filter packages by having commands.""" - hasCommands: Boolean = false - - """Filter packages by interface.""" - withInterfaces: [String] - - """Filter packages by deployable status.""" - deployable: Boolean - - """Filter packages by license.""" - license: String - - """Filter packages created after this date.""" - createdAfter: DateTime - - """Filter packages created before this date.""" - createdBefore: DateTime - - """Filter packages with version published after this date.""" - lastPublishedAfter: DateTime - - """Filter packages with version published before this date.""" - lastPublishedBefore: DateTime - - """Filter packages by size.""" - size: CountFilter - - """Filter packages by download count.""" - downloads: CountFilter - - """Filter packages by like count.""" - likes: CountFilter - - """Filter packages by owner.""" - owner: String - - """Filter packages by published by.""" - publishedBy: String - - """Order packages by field.""" - orderBy: PackageOrderBy = PUBLISHED_DATE -} - -enum SearchOrderSort { - ASC - DESC -} - -enum SearchPublishDate { - LAST_DAY - LAST_WEEK - LAST_MONTH - LAST_YEAR -} - -input CountFilter { - count: Int = 0 - comparison: CountComparison = GREATER_THAN_OR_EQUAL -} - -enum CountComparison { - EQUAL - GREATER_THAN - LESS_THAN - GREATER_THAN_OR_EQUAL - LESS_THAN_OR_EQUAL -} - -enum PackageOrderBy { - ALPHABETICALLY - SIZE - TOTAL_DOWNLOADS - PUBLISHED_DATE - CREATED_DATE - TOTAL_LIKES -} - -input NamespacesFilter { - count: Int = 1000 - sortBy: SearchOrderSort = ASC - - """Filter namespaces by package count.""" - packageCount: CountFilter - - """Filter namespaces created after this date.""" - createdAfter: DateTime - - """Filter namespaces created before this date.""" - createdBefore: DateTime - - """Filter namespaces by user count.""" - userCount: CountFilter - - """Filter namespaces by collaborator.""" - collaborator: String - - """Order namespaces by field.""" - orderBy: NamespaceOrderBy = CREATED_DATE -} - -enum NamespaceOrderBy { - PACKAGE_COUNT - COLLABORATOR_COUNT - APP_COUNT - CREATED_DATE -} - -input UsersFilter { - count: Int = 1000 - sortBy: SearchOrderSort = ASC - - """Filter users by package count.""" - packageCount: CountFilter - - """Filter users by namespace count.""" - namespaceCount: CountFilter - - """Filter users joined after this date.""" - joinedAfter: DateTime - - """Filter users joined before this date.""" - joinedBefore: DateTime - - """Order users by field.""" - orderBy: UserOrderBy = CREATED_DATE -} - -enum UserOrderBy { - PACKAGE_COUNT - APP_COUNT - CREATED_DATE -} - -input AppFilter { - count: Int = 1000 - sortBy: SearchOrderSort = ASC - - """Filter apps by deployed by.""" - deployedBy: String - - """Filter apps last deployed after this date.""" - lastDeployedAfter: DateTime - - """Filter apps last deployed before this date.""" - lastDeployedBefore: DateTime - - """Filter apps by owner.""" - owner: String - - """Order apps by field.""" - orderBy: AppOrderBy = CREATED_DATE - - """Filter apps by client name.""" - clientName: String -} - -enum AppOrderBy { - PUBLISHED_DATE - CREATED_DATE -} - -input BlogPostsFilter { - count: Int = 1000 - sortBy: SearchOrderSort = ASC - - """Filter blog posts by tag.""" - tags: [String] -} - -input AppTemplateFilter { - count: Int = 1000 - sortBy: SearchOrderSort = ASC - - """Order app templates by field.""" - orderBy: AppTemplateOrderBy = CREATED_DATE - - """Filter by app template framework""" - framework: String - - """Filter by app template language""" - language: String - - """Filter by one or more of the use-cases for the app template""" - useCases: [String] -} - -enum AppTemplateOrderBy { - CREATED_DATE -} - -enum SearchKind { - PACKAGE - NAMESPACE - USER -} - -union GlobalObject = User | Namespace - -type RegistryInfo { - """Base URL for this registry""" - baseUrl: String! - - """Base URL for the default frontend""" - defaultFrontend: String! - - """URL to the graphql endpoint""" - graphqlUrl: String! - - """URL to the graphql endpoint""" - createBlogpostUrl: String - - """Public metadata about packages""" - packages: PackageInfo! - - """Public metadata about the graphql schema""" - schema: SchemaInfo! -} - -type PackageInfo { - """Number of package versions published this month""" - versionsPublishedThisMonth: Int! - - """Number of new packages published this month""" - newPackagesThisMonth: Int! - - """Number of package downloads this month""" - packageDownloadsThisMonth: Int! -} - -type SchemaInfo { - """Download link for graphql schema""" - downloadUrl: String! - - """SHA256 hash of the schema data""" - SHA256Hash: String! - - """Timestamp when the schema was last updated""" - lastUpdated: DateTime! -} - -type Mutation { - """Viewer accepts the latest ToS.""" - acceptTOS(input: AcceptTOSInput!): AcceptTOSPayload - publishDeployApp(input: PublishDeployAppInput!): PublishDeployAppPayload - deleteApp(input: DeleteAppInput!): DeleteAppPayload - - """Add current user to the waitlist.""" - joinWaitlist(input: JoinWaitlistInput!): JoinWaitlistPayload - - """Add stripe payment to the user""" - addPayment(input: AddPaymentInput!): AddPaymentPayload - - """ - Mutation to change the active version of a DeployApp to another DeployAppVersion. - """ - markAppVersionAsActive(input: MarkAppVersionAsActiveInput!): MarkAppVersionAsActivePayload - - """Set a payment method as default for the user.""" - makePaymentDefault(input: SetDefaultPaymentMethodInput!): SetDefaultPaymentMethodPayload - - """ - Try to detach a payment method from customer. - Fails if trying to detach a default method, - or if it's the only payment method. - """ - detachPaymentMethod(input: DetachPaymentMethodInput!): DetachPaymentMethodPayload - generateDeployConfigToken(input: GenerateDeployConfigTokenInput!): GenerateDeployConfigTokenPayload - renameApp(input: RenameAppInput!): RenameAppPayload - renameAppAlias(input: RenameAppAliasInput!): RenameAppAliasPayload - requestAppTransfer(input: RequestAppTransferInput!): RequestAppTransferPayload - acceptAppTransferRequest(input: AcceptAppTransferRequestInput!): AcceptAppTransferRequestPayload - removeAppTransferRequest(input: RemoveAppTransferRequestInput!): RemoveAppTransferRequestPayload - createRepoForAppTemplate(input: CreateRepoForAppTemplateInput!): CreateRepoForAppTemplatePayload - registerDomain(input: RegisterDomainInput!): RegisterDomainPayload - upsertDNSRecord(input: UpsertDNSRecordInput!): UpsertDNSRecordPayload - deleteDnsRecord(input: DeleteDNSRecordInput!): DeleteDNSRecordPayload - upsertDomainFromZoneFile(input: UpsertDomainFromZoneFileInput!): UpsertDomainFromZoneFilePayload - deleteDomain(input: DeleteDomainInput!): DeleteDomainPayload - tokenAuth(input: ObtainJSONWebTokenInput!): ObtainJSONWebTokenPayload - generateDeployToken(input: GenerateDeployTokenInput!): GenerateDeployTokenPayload - verifyAccessToken(token: String): Verify - refreshAccessToken(refreshToken: String): Refresh - revokeAccessToken(refreshToken: String): Revoke - registerUser(input: RegisterUserInput!): RegisterUserPayload - socialAuth(input: SocialAuthJWTInput!): SocialAuthJWTPayload - validateUserEmail(input: ValidateUserEmailInput!): ValidateUserEmailPayload - requestPasswordReset(input: RequestPasswordResetInput!): RequestPasswordResetPayload - requestValidationEmail(input: RequestValidationEmailInput!): RequestValidationEmailPayload - changeUserPassword(input: ChangeUserPasswordInput!): ChangeUserPasswordPayload - changeUserUsername(input: ChangeUserUsernameInput!): ChangeUserUsernamePayload - changeUserEmail(input: ChangeUserEmailInput!): ChangeUserEmailPayload - updateUserInfo(input: UpdateUserInfoInput!): UpdateUserInfoPayload - validateUserPassword(input: ValidateUserPasswordInput!): ValidateUserPasswordPayload - generateApiToken(input: GenerateAPITokenInput!): GenerateAPITokenPayload - revokeApiToken(input: RevokeAPITokenInput!): RevokeAPITokenPayload - checkUserExists(input: CheckUserExistsInput!): CheckUserExistsPayload - readNotification(input: ReadNotificationInput!): ReadNotificationPayload - seePendingNotifications(input: SeePendingNotificationsInput!): SeePendingNotificationsPayload - newNonce(input: NewNonceInput!): NewNoncePayload - validateNonce(input: ValidateNonceInput!): ValidateNoncePayload - mfa2totpGetToken(input: MFATOTPGetTokenInput!): MFATOTPTokenType - mfa2totpVerify(input: MFATOTPVerifyInput!): MFATOTPVerifyPayload - mfa2totpAuth(input: MFATOTPAuthInput!): MFAAuthResponse - mfa2RecoveryGetToken(input: MFAGenerateRecoveryTokenInput!): MFARecoveryCodes - mfa2RecoveryAuth(input: MFARecoveryAuthInput!): MFAAuthResponse - mfa2EmailAuth(input: MFAEmailAuthInput!): MFAAuthResponse - mfa2EmailGetToken(input: MFAGenerateEmailOTPInput!): MFAEmailGenerationResponse - publishPublicKey(input: PublishPublicKeyInput!): PublishPublicKeyPayload - publishPackage(input: PublishPackageInput!): PublishPackagePayload - updatePackage(input: UpdatePackageInput!): UpdatePackagePayload - likePackage(input: LikePackageInput!): LikePackagePayload - unlikePackage(input: UnlikePackageInput!): UnlikePackagePayload - watchPackage(input: WatchPackageInput!): WatchPackagePayload - unwatchPackage(input: UnwatchPackageInput!): UnwatchPackagePayload - archivePackage(input: ArchivePackageInput!): ArchivePackagePayload - renamePackage(input: RenamePackageInput!): RenamePackagePayload - changePackageVersionArchivedStatus(input: ChangePackageVersionArchivedStatusInput!): ChangePackageVersionArchivedStatusPayload - createNamespace(input: CreateNamespaceInput!): CreateNamespacePayload - updateNamespace(input: UpdateNamespaceInput!): UpdateNamespacePayload - deleteNamespace(input: DeleteNamespaceInput!): DeleteNamespacePayload - inviteNamespaceCollaborator(input: InviteNamespaceCollaboratorInput!): InviteNamespaceCollaboratorPayload - acceptNamespaceCollaboratorInvite(input: AcceptNamespaceCollaboratorInviteInput!): AcceptNamespaceCollaboratorInvitePayload - removeNamespaceCollaboratorInvite(input: RemoveNamespaceCollaboratorInviteInput!): RemoveNamespaceCollaboratorInvitePayload - removeNamespaceCollaborator(input: RemoveNamespaceCollaboratorInput!): RemoveNamespaceCollaboratorPayload - updateNamespaceCollaboratorRole(input: UpdateNamespaceCollaboratorRoleInput!): UpdateNamespaceCollaboratorRolePayload - updateNamespaceCollaboratorInviteRole(input: UpdateNamespaceCollaboratorInviteRoleInput!): UpdateNamespaceCollaboratorInviteRolePayload - invitePackageCollaborator(input: InvitePackageCollaboratorInput!): InvitePackageCollaboratorPayload - acceptPackageCollaboratorInvite(input: AcceptPackageCollaboratorInviteInput!): AcceptPackageCollaboratorInvitePayload - removePackageCollaboratorInvite(input: RemovePackageCollaboratorInviteInput!): RemovePackageCollaboratorInvitePayload - updatePackageCollaboratorRole(input: UpdatePackageCollaboratorRoleInput!): UpdatePackageCollaboratorRolePayload - updatePackageCollaboratorInviteRole(input: UpdatePackageCollaboratorInviteRoleInput!): UpdatePackageCollaboratorInviteRolePayload - removePackageCollaborator(input: RemovePackageCollaboratorInput!): RemovePackageCollaboratorPayload - requestPackageTransfer(input: RequestPackageTransferInput!): RequestPackageTransferPayload - acceptPackageTransferRequest(input: AcceptPackageTransferRequestInput!): AcceptPackageTransferRequestPayload - removePackageTransferRequest(input: RemovePackageTransferRequestInput!): RemovePackageTransferRequestPayload - generateBindingsForAllPackages(input: GenerateBindingsForAllPackagesInput!): GenerateBindingsForAllPackagesPayload - makePackagePublic(input: MakePackagePublicInput!): MakePackagePublicPayload -} - -"""Viewer accepts the latest ToS.""" -type AcceptTOSPayload { - TOS: TermsOfService! - clientMutationId: String -} - -input AcceptTOSInput { - clientMutationId: String -} - -type PublishDeployAppPayload { - deployAppVersion: DeployAppVersion! - clientMutationId: String -} - -input PublishDeployAppInput { - """The configuration of the app.""" - config: Configuration! - - """The name of the app.""" - name: ID - - """The owner of the app.""" - owner: ID - - """The description of the app.""" - description: String - - """If true, the new version will be set as the default version.""" - makeDefault: Boolean = true - - """ - If true, Publishing will fail if the source package does not have a valid webc. - """ - strict: Boolean = false - clientMutationId: String -} - -input Configuration { - deployment: AppV0 - yamlConfig: String +type PackageVersionReadyResponse { + state: PackageVersionState! + packageVersion: PackageVersion! + success: Boolean! } -input AppV0 { - kind: String = "wasmer.io/App.v0" - appId: ID - name: String! - description: String - package: String! +enum PackageVersionSortBy { + NEWEST + OLDEST } -type DeleteAppPayload { - success: Boolean! - clientMutationId: String +enum PackageVersionState { + WEBC_GENERATED + BINDINGS_GENERATED + NATIVE_EXES_GENERATED } -input DeleteAppInput { - """App ID to delete.""" +type PackageWebc implements Node & PackageReleaseInterface & PackageInstance { + """The ID of the object""" id: ID! - clientMutationId: String -} - -"""Add current user to the waitlist.""" -type JoinWaitlistPayload { - waitlistMember: WaitlistMember! - clientMutationId: String + createdAt: DateTime! + updatedAt: DateTime! + package: Package! + webc: WebcImage + piritaManifest: JSONString + piritaOffsets: JSONString + piritaVolumes: JSONString + isArchived: Boolean! + clientName: String + publishedBy: User! + tag: String! + webcUrl: String! } -input JoinWaitlistInput { - name: String! - clientMutationId: String -} +type PackageWebcConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! -"""Add stripe payment to the user""" -type AddPaymentPayload { - customerSecret: String! - clientMutationId: String + """Contains the nodes in this connection.""" + edges: [PackageWebcEdge]! + + """Total number of items in the connection.""" + totalCount: Int } -input AddPaymentInput { - clientMutationId: String +"""A Relay edge containing a `PackageWebc` and its cursor.""" +type PackageWebcEdge { + """The item at the end of the edge""" + node: PackageWebc + + """A cursor for use in pagination""" + cursor: String! } """ -Mutation to change the active version of a DeployApp to another DeployAppVersion. +The Relay compliant `PageInfo` type, containing data necessary to paginate this connection. """ -type MarkAppVersionAsActivePayload { - app: DeployApp! - clientMutationId: String -} +type PageInfo { + """When paginating forwards, are there more items?""" + hasNextPage: Boolean! -input MarkAppVersionAsActiveInput { - """The ID of the DeployAppVersion to set as the new active version.""" - appVersion: ID! - clientMutationId: String -} + """When paginating backwards, are there more items?""" + hasPreviousPage: Boolean! -"""Set a payment method as default for the user.""" -type SetDefaultPaymentMethodPayload { - success: Boolean! - billing: Billing! - clientMutationId: String -} + """When paginating backwards, the cursor to continue.""" + startCursor: String -input SetDefaultPaymentMethodInput { - paymentMethod: ID! - clientMutationId: String + """When paginating forwards, the cursor to continue.""" + endCursor: String } -""" -Try to detach a payment method from customer. -Fails if trying to detach a default method, -or if it's the only payment method. -""" -type DetachPaymentMethodPayload { - success: Boolean! - billing: Billing! - clientMutationId: String +type Payment { + id: ID + amount: String + paidOn: DateTime } -input DetachPaymentMethodInput { - paymentMethod: ID! - clientMutationId: String -} +type PaymentIntent implements Node { + """The datetime this object was created in stripe.""" + created: DateTime -type GenerateDeployConfigTokenPayload { - token: String! - config: String! - clientMutationId: String + """Three-letter ISO currency code""" + currency: String! + + """ + Status of this PaymentIntent, one of requires_payment_method, + requires_confirmation, requires_action, processing, requires_capture, + canceled, or succeeded. You can read more about PaymentIntent statuses here. + """ + status: DjstripePaymentIntentStatusChoices! + + """The ID of the object""" + id: ID! + amount: String! } -input GenerateDeployConfigTokenInput { - config: String! - clientMutationId: String +union PaymentMethod = CardPaymentMethod + +type PiritaFilesystemDir { + name(display: PiritaFilesystemNameDisplay): String! } -type RenameAppPayload { - success: Boolean! - app: DeployApp! - clientMutationId: String +type PiritaFilesystemFile { + name(display: PiritaFilesystemNameDisplay): String! + size: Int! + offset: Int! } -input RenameAppInput { - """App ID to delete.""" - id: ID! +union PiritaFilesystemItem = PiritaFilesystemFile | PiritaFilesystemDir - """New name for the app.""" - name: String! - clientMutationId: String +enum PiritaFilesystemNameDisplay { + RELATIVE + ABSOLUTE } -type RenameAppAliasPayload { - success: Boolean! - alias: AppAlias! - clientMutationId: String +enum ProgrammingLanguage { + PYTHON + JAVASCRIPT } -input RenameAppAliasInput { - """App alias ID to delete.""" - id: ID! +type PTRRecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + ptrdname: String! - """New name for the alias.""" + """The ID of the object""" + id: ID! name: String! - clientMutationId: String -} - -type RequestAppTransferPayload { - appTransferRequest: AppTransferRequest - wasInstantlyTransferred: Boolean! - clientMutationId: String + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -type AppTransferRequest implements Node { +type PublicKey implements Node { """The ID of the object""" id: ID! - requestedBy: User! - previousOwnerObjectId: Int! - newOwnerObjectId: Int! - app: DeployApp! - approvedBy: User - declinedBy: User - createdAt: DateTime! - expiresAt: DateTime! - closedAt: DateTime - previousOwner: Owner! - newOwner: Owner! + owner: User! + keyId: String! + key: String! + revokedAt: DateTime + uploadedAt: DateTime! + verifyingSignature: Signature + revoked: Boolean! } -input RequestAppTransferInput { - appId: ID! - newOwnerId: ID! +input PublishDeployAppInput { + """The configuration of the app.""" + config: Configuration! + + """The name of the app.""" + name: ID + + """The owner of the app.""" + owner: ID + + """The description of the app.""" + description: String + + """If true, the new version will be set as the default version.""" + makeDefault: Boolean = true + + """ + If true, Publishing will fail if the source package does not have a valid webc. + """ + strict: Boolean = false clientMutationId: String } -type AcceptAppTransferRequestPayload { - app: DeployApp! - appTransferRequest: AppTransferRequest! +type PublishDeployAppPayload { + deployAppVersion: DeployAppVersion! clientMutationId: String } -input AcceptAppTransferRequestInput { - appTransferRequestId: ID! +input PublishPackageInput { + manifest: String! + name: String + namespace: String + version: String + description: String + license: String + licenseFile: String + readme: String + repository: String + homepage: String + file: String + signedUrl: String + signature: InputSignature + + """The package icon""" + icon: String + + """Whether the package is private""" + private: Boolean = false + + """The upload format of the package""" + uploadFormat: UploadFormat = targz + + """Whether to wait for webc generation to finish""" + wait: Boolean = false clientMutationId: String } -type RemoveAppTransferRequestPayload { - app: DeployApp! +type PublishPackagePayload { + success: Boolean! + packageVersion: PackageVersion + packageWebc: PackageWebc clientMutationId: String } -input RemoveAppTransferRequestInput { - appTransferRequestId: ID! +input PublishPublicKeyInput { + keyId: String! + key: String! + verifyingSignatureId: String clientMutationId: String } -type CreateRepoForAppTemplatePayload { +type PublishPublicKeyPayload { success: Boolean! - repoId: ID! + publicKey: PublicKey! clientMutationId: String } -input CreateRepoForAppTemplateInput { - templateId: ID! - name: String! - namespace: String! - private: Boolean = false - clientMutationId: String -} +type Query { + latestTOS: TermsOfService! + getDeployAppVersion(name: String!, owner: String, version: String): DeployAppVersion + getAllDomains(namespace: String, offset: Int, before: String, after: String, first: Int, last: Int): DNSDomainConnection! + getAllDNSRecords(sortBy: DNSRecordsSortBy, updatedAfter: DateTime, before: String, after: String, first: Int, last: Int): DNSRecordConnection! + getDomain(name: String!): DNSDomain + getDeployApp( + name: String! + + """Owner of the app. Defaults to logged in user.""" + owner: String + ): DeployApp + getAppByGlobalAlias(alias: String!): DeployApp + getDeployApps(sortBy: DeployAppsSortBy, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppConnection! + getAppVersions(sortBy: DeployAppVersionsSortBy, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppVersionConnection! + getAppTemplates(categorySlug: String, offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateConnection + getAppTemplate(slug: String!): AppTemplate + getAppTemplateCategories(offset: Int, before: String, after: String, first: Int, last: Int): AppTemplateCategoryConnection + viewer: User + getUser(username: String!): User + getPasswordResetToken(token: String!): GetPasswordResetToken + getAuthNonce(name: String!): Nonce + + """Can the logged in user create app templates?""" + canDeployAppToGithub: Boolean! + + """Check if a repo exists in the logged in user's github account.""" + checkRepoExists( + """The namespace of the repo to check.""" + namespace: String! -type RegisterDomainPayload { - success: Boolean! - domain: DNSDomain - clientMutationId: String -} + """The name of the repo to check.""" + name: String! + ): Boolean! -input RegisterDomainInput { - name: String! - namespace: String - importRecords: Boolean = true - clientMutationId: String + """Generate a unique repo name in the logged in user's github account.""" + newRepoName( + """The github namespace of the repo to create the repo in.""" + namespace: String! + + """The template to use.""" + templateSlug: String! + ): String! + packages(offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection + recentPackageVersions(curated: Boolean, offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! + allPackageVersions(sortBy: PackageVersionSortBy, createdAfter: DateTime, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! + allPackageReleases(sortBy: PackageVersionSortBy, createdAfter: DateTime, updatedAfter: DateTime, offset: Int, before: String, after: String, first: Int, last: Int): PackageWebcConnection! + getWebcImage(hash: String!): WebcImage + getNamespace(name: String!): Namespace + getPackage(name: String!): Package + getPackages(names: [String!]!): [Package]! + getPackageVersion(name: String!, version: String = "latest"): PackageVersion + getPackageVersions(names: [String!]!): [PackageVersion] + getPackageVersionByHash(name: String!, hash: String!): PackageVersion + getInterface(name: String!): Interface + getInterfaces(names: [String!]!): [Interface]! + getInterfaceVersion(name: String!, version: String = "latest"): InterfaceVersion + getContract(name: String!): Interface @deprecated(reason: "Please use getInterface instead") + getContracts(names: [String!]!): [Interface]! @deprecated(reason: "Please use getInterfaces instead") + getContractVersion(name: String!, version: String): InterfaceVersion @deprecated(reason: "Please use getInterfaceVersion instead") + getCommand(name: String!): Command + getCommands(names: [String!]!): [Command] + getCollections(before: String, after: String, first: Int, last: Int): CollectionConnection + getSignedUrlForPackageUpload(name: String, version: String = "latest", filename: String, expiresAfterSeconds: Int = 60): SignedUrl + getPackageHash(name: String, hash: String!): PackageWebc + getPackageRelease(hash: String!): PackageWebc + categories(offset: Int, before: String, after: String, first: Int, last: Int): CategoryConnection! + blogposts(tags: [String!], before: String, after: String, first: Int, last: Int): BlogPostConnection! + getBlogpost(slug: String, featured: Boolean): BlogPost + allBlogpostTags(offset: Int, before: String, after: String, first: Int, last: Int): BlogPostTagConnection + search(query: String!, packages: PackagesFilter, namespaces: NamespacesFilter, users: UsersFilter, apps: AppFilter, blogposts: BlogPostsFilter, appTemplates: AppTemplateFilter, before: String, after: String, first: Int, last: Int): SearchConnection! + searchAutocomplete(kind: [SearchKind!], query: String!, before: String, after: String, first: Int, last: Int): SearchConnection! + getGlobalObject(slug: String!): GlobalObject + node( + """The ID of the object""" + id: ID! + ): Node + nodes(ids: [ID!]!): [Node] + info: RegistryInfo } -type UpsertDNSRecordPayload { - success: Boolean! - record: DNSRecord! +input ReadNotificationInput { + notificationId: ID! clientMutationId: String } -input UpsertDNSRecordInput { - kind: RecordKind! - domainId: String! - name: String! - value: String! - ttl: Int - recordId: String - mx: DNSMXExtraInput +type ReadNotificationPayload { + notification: UserNotification clientMutationId: String } @@ -3087,544 +2900,637 @@ enum RecordKind { SSHFP } -input DNSMXExtraInput { - preference: Int! -} - -type DeleteDNSRecordPayload { - success: Boolean! - clientMutationId: String +type Refresh { + payload: GenericScalar! + refreshExpiresIn: Int! + token: String! + refreshToken: String! } -input DeleteDNSRecordInput { - recordId: ID! +input RegisterDomainInput { + name: String! + namespace: String + importRecords: Boolean = true clientMutationId: String } -type UpsertDomainFromZoneFilePayload { +type RegisterDomainPayload { success: Boolean! - domain: DNSDomain! + domain: DNSDomain clientMutationId: String } -input UpsertDomainFromZoneFileInput { - zoneFile: String! - deleteMissingRecords: Boolean +input RegisterUserInput { + fullName: String! + email: String! + username: CaseInsensitiveString! + password: String! + acceptedTos: Boolean clientMutationId: String } -type DeleteDomainPayload { - success: Boolean! +type RegisterUserPayload { + token: String clientMutationId: String } -input DeleteDomainInput { - domainId: ID! - clientMutationId: String -} +type RegistryInfo { + """Base URL for this registry""" + baseUrl: String! -type ObtainJSONWebTokenPayload { - payload: GenericScalar! - refreshExpiresIn: Int! - username: CaseInsensitiveString! - clientMutationId: String - token: String! - refreshToken: String! -} + """Base URL for the default frontend""" + defaultFrontend: String! -""" -The `GenericScalar` scalar type represents a generic -GraphQL scalar value that could be: -String, Boolean, Int, Float, List or Object. -""" -scalar GenericScalar + """URL to the graphql endpoint""" + graphqlUrl: String! -""" -The `CaseInsensitiveString` scalar type represents textual data, represented as UTF-8 -character sequences. The String type is most often used by GraphQL to -represent free-form human-readable text. -""" -scalar CaseInsensitiveString + """URL to the graphql endpoint""" + createBlogpostUrl: String -input ObtainJSONWebTokenInput { - clientMutationId: String - username: String! - password: String! -} + """Public metadata about packages""" + packages: PackageInfo! -type GenerateDeployTokenPayload { - token: String! - deployConfigVersion: DeployAppVersion! - clientMutationId: String + """Public metadata about the graphql schema""" + schema: SchemaInfo! } -input GenerateDeployTokenInput { - deployConfigVersionId: String! - clientMutationId: String -} +enum RegistryNamespaceMaintainerInviteRoleChoices { + """Owner""" + OWNER -type Verify { - payload: GenericScalar! + """Admin""" + ADMIN + + """Editor""" + EDITOR + + """Viewer""" + VIEWER } -type Refresh { - payload: GenericScalar! - refreshExpiresIn: Int! - token: String! - refreshToken: String! +enum RegistryNamespaceMaintainerRoleChoices { + """Owner""" + OWNER + + """Admin""" + ADMIN + + """Editor""" + EDITOR + + """Viewer""" + VIEWER } -type Revoke { - revoked: Int! +enum RegistryPackageMaintainerInviteRoleChoices { + """Owner""" + OWNER + + """Admin""" + ADMIN + + """Editor""" + EDITOR + + """Viewer""" + VIEWER } -type RegisterUserPayload { - token: String - clientMutationId: String +enum RegistryPackageMaintainerRoleChoices { + """Owner""" + OWNER + + """Admin""" + ADMIN + + """Editor""" + EDITOR + + """Viewer""" + VIEWER } -input RegisterUserInput { - fullName: String! - email: String! - username: CaseInsensitiveString! - password: String! - acceptedTos: Boolean - clientMutationId: String +enum RegistryPackageVersionBindingsStateChoices { + """Bindings are not detected""" + NOT_PRESENT + + """Bindings are being built""" + GENERATING + + """Bindings generation has failed""" + ERROR + + """Bindings are built and present""" + GENERATED_AND_PRESENT } -type SocialAuthJWTPayload { - social: SocialAuth - token: String - clientMutationId: String +enum RegistryPackageVersionNativeExecutablesStateChoices { + """Native Executables are not detected""" + NOT_PRESENT + + """Native Executables are being built""" + GENERATING + + """Native Executables generation has failed""" + ERROR + + """Native Executables are built and present""" + GENERATED_AND_PRESENT } -input SocialAuthJWTInput { - provider: String! - accessToken: String! - register: Boolean = false - clientMutationId: String +enum RegistryWebcImageVersionChoices { + """v2""" + V2 + + """v3""" + V3 } -type ValidateUserEmailPayload { - user: User +input RemoveAppTransferRequestInput { + appTransferRequestId: ID! clientMutationId: String } -input ValidateUserEmailInput { - """The user id""" - userId: ID - challenge: String! +type RemoveAppTransferRequestPayload { + app: DeployApp! clientMutationId: String } -type RequestPasswordResetPayload { - email: String! - errors: [ErrorType] +input RemoveNamespaceCollaboratorInput { + namespaceCollaboratorId: ID! clientMutationId: String } -type ErrorType { - field: String! - messages: [String!]! +input RemoveNamespaceCollaboratorInviteInput { + inviteId: ID! + clientMutationId: String } -input RequestPasswordResetInput { - email: String! +type RemoveNamespaceCollaboratorInvitePayload { + namespace: Namespace! clientMutationId: String } -type RequestValidationEmailPayload { - user: User - success: Boolean! +type RemoveNamespaceCollaboratorPayload { + namespace: Namespace! clientMutationId: String } -input RequestValidationEmailInput { - """The user id""" - userId: ID +input RemovePackageCollaboratorInput { + packageCollaboratorId: ID! clientMutationId: String } -type ChangeUserPasswordPayload { - token: String +input RemovePackageCollaboratorInviteInput { + inviteId: ID! clientMutationId: String } -input ChangeUserPasswordInput { - """ - The token associated to change the password. If not existing it will use the request user by default - """ - token: String - oldPassword: String - password: String! +type RemovePackageCollaboratorInvitePayload { + package: Package! clientMutationId: String } -type ChangeUserUsernamePayload { - user: User - token: String +type RemovePackageCollaboratorPayload { + package: Package! clientMutationId: String } -input ChangeUserUsernameInput { - """The new user username""" - username: CaseInsensitiveString! +input RemovePackageTransferRequestInput { + packageTransferRequestId: ID! clientMutationId: String } -type ChangeUserEmailPayload { - user: User! +type RemovePackageTransferRequestPayload { + package: Package! clientMutationId: String } -input ChangeUserEmailInput { - newEmail: String! +input RenameAppAliasInput { + """App alias ID to delete.""" + id: ID! + + """New name for the alias.""" + name: String! clientMutationId: String } -type UpdateUserInfoPayload { - user: User +type RenameAppAliasPayload { + success: Boolean! + alias: AppAlias! clientMutationId: String } -input UpdateUserInfoInput { - """The user id""" - userId: ID - - """The user full name""" - fullName: String - - """The user bio""" - bio: String - - """The user avatar""" - avatar: String - - """ - The user Twitter (it can be the url, or the handle with or without the @) - """ - twitter: String - - """ - The user Github (it can be the url, or the handle with or without the @) - """ - github: String - - """The user website (it must be a valid url)""" - websiteUrl: String +input RenameAppInput { + """App ID to delete.""" + id: ID! - """The user location""" - location: String + """New name for the app.""" + name: String! clientMutationId: String } -type ValidateUserPasswordPayload { - success: Boolean +type RenameAppPayload { + success: Boolean! + app: DeployApp! clientMutationId: String } -input ValidateUserPasswordInput { - password: String! +input RenamePackageInput { + packageId: ID! + newName: String! clientMutationId: String } -type GenerateAPITokenPayload { - token: APIToken - tokenRaw: String - user: User +type RenamePackagePayload { + package: Package! clientMutationId: String } -input GenerateAPITokenInput { - identifier: String +input RequestAppTransferInput { + appId: ID! + newOwnerId: ID! clientMutationId: String } -type RevokeAPITokenPayload { - token: APIToken - success: Boolean +type RequestAppTransferPayload { + appTransferRequest: AppTransferRequest + wasInstantlyTransferred: Boolean! clientMutationId: String } -input RevokeAPITokenInput { - """The API token ID""" - tokenId: ID! +input RequestPackageTransferInput { + packageId: ID! + newOwnerId: ID! clientMutationId: String } -type CheckUserExistsPayload { - exists: Boolean! - - """The user is only returned if the user input was the username""" - user: User +type RequestPackageTransferPayload { + package: Package! + wasInstantlyTransferred: Boolean! + packageTransferRequest: PackageTransferRequest clientMutationId: String } -input CheckUserExistsInput { - """The user""" - user: String! +input RequestPasswordResetInput { + email: String! clientMutationId: String } -type ReadNotificationPayload { - notification: UserNotification +type RequestPasswordResetPayload { + email: String! + errors: [ErrorType] clientMutationId: String } -input ReadNotificationInput { - notificationId: ID! +input RequestValidationEmailInput { + """The user id""" + userId: ID clientMutationId: String } -type SeePendingNotificationsPayload { - success: Boolean +type RequestValidationEmailPayload { + user: User + success: Boolean! clientMutationId: String } -input SeePendingNotificationsInput { - clientMutationId: String +type Revoke { + revoked: Int! } -type NewNoncePayload { - nonce: Nonce! +input RevokeAPITokenInput { + """The API token ID""" + tokenId: ID! clientMutationId: String } -input NewNonceInput { - name: String! - callbackUrl: String! +type RevokeAPITokenPayload { + token: APIToken + success: Boolean clientMutationId: String } -type ValidateNoncePayload { - nonce: Nonce! - clientMutationId: String +"""Run a webassembly file.""" +input RunnerWCGIV1 { + source: WorkloadRunnerWasmSourceV1! + dialect: String } -input ValidateNonceInput { - id: ID! - secret: String! - clientMutationId: String +input RunnerWebProxyV1 { + source: WorkloadRunnerWasmSourceV1! } -type MFATOTPTokenType { - qr: String - secretKey: String -} +type SchemaInfo { + """Download link for graphql schema""" + downloadUrl: String! -input MFATOTPGetTokenInput { - clientMutationId: String + """SHA256 hash of the schema data""" + SHA256Hash: String! + + """Timestamp when the schema was last updated""" + lastUpdated: DateTime! } -type MFATOTPVerifyPayload { - status: MFATOTPVerifyStatus - clientMutationId: String +type SearchConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! + + """Contains the nodes in this connection.""" + edges: [SearchEdge]! + totalCount: Int } -enum MFATOTPVerifyStatus { - SUCCESS - RECOVERY +"""A Relay edge containing a `Search` and its cursor.""" +type SearchEdge { + """The item at the end of the edge""" + node: SearchResult + + """A cursor for use in pagination""" + cursor: String! } -input MFATOTPVerifyInput { - answer: String! - secretKey: String! - clientMutationId: String +enum SearchKind { + PACKAGE + NAMESPACE + USER } -"""Response object for MFAAuth mutation.""" -type MFAAuthResponse { - success: Boolean! - token: String - refreshToken: String - username: String - refreshTokenExpiresIn: Int +enum SearchOrderSort { + ASC + DESC } -input MFATOTPAuthInput { - username: String! - otp: String! - clientMutationId: String +enum SearchPublishDate { + LAST_DAY + LAST_WEEK + LAST_MONTH + LAST_YEAR } -type MFARecoveryCodes { - codes: [String]! -} +union SearchResult = PackageVersion | User | Namespace | DeployApp | BlogPost | AppTemplate -input MFAGenerateRecoveryTokenInput { +input SeePendingNotificationsInput { clientMutationId: String } -input MFARecoveryAuthInput { - username: String! - otp: String! +type SeePendingNotificationsPayload { + success: Boolean clientMutationId: String } -input MFAEmailAuthInput { - username: String! - otp: String! +input SetDefaultPaymentMethodInput { + paymentMethod: ID! clientMutationId: String } -type MFAEmailGenerationResponse { +"""Set a payment method as default for the user.""" +type SetDefaultPaymentMethodPayload { success: Boolean! -} - -input MFAGenerateEmailOTPInput { + billing: Billing! clientMutationId: String } -type PublishPublicKeyPayload { - success: Boolean! +type Signature { + id: ID! publicKey: PublicKey! - clientMutationId: String + data: String! + createdAt: DateTime! } -input PublishPublicKeyInput { - keyId: String! - key: String! - verifyingSignatureId: String - clientMutationId: String +type SignedUrl { + url: String! } -type PublishPackagePayload { - success: Boolean! - packageVersion: PackageVersion! - clientMutationId: String -} +type SOARecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime -input PublishPackageInput { - name: String! - version: String! - description: String! - manifest: String! - license: String - licenseFile: String - readme: String - repository: String - homepage: String - file: String - signedUrl: String - signature: InputSignature + """Primary master name server for this zone.""" + mname: String! - """The package icon""" - icon: String + """Email address of the administrator responsible for this zone.""" + rname: String! - """Whether the package is private""" - private: Boolean = false + """ + A slave name server will initiate a zone transfer if this serial is incremented. + """ + serial: BigInt! - """The upload format of the package""" - uploadFormat: UploadFormat = targz + """ + Number of seconds after which secondary name servers should query the master to detect zone changes. + """ + refresh: BigInt! - """Whether to wait for webc generation to finish""" - wait: Boolean = false - clientMutationId: String -} + """ + Number of seconds after which secondary name servers should retry to request + the serial number from the master if the master does not respond. + """ + retry: BigInt! -input InputSignature { - publicKeyKeyId: String! - data: String! -} + """ + Number of seconds after which secondary name servers should stop answering + request for this zone if the master does not respond. + """ + expire: BigInt! -enum UploadFormat { - targz - webcv2 -} + """Time to live for purposes of negative caching.""" + minimum: BigInt! -type UpdatePackagePayload { - package: Package! - clientMutationId: String + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -input UpdatePackageInput { - packageId: ID! +type SocialAuth implements Node { + """The ID of the object""" + id: ID! + user: User! + provider: String! + uid: String! + extraData: JSONString! + created: DateTime! + modified: DateTime! + username: String! +} - """The package icon""" - icon: String +input SocialAuthJWTInput { + provider: String! + accessToken: String! + register: Boolean = false clientMutationId: String } -type LikePackagePayload { - package: Package! +type SocialAuthJWTPayload { + social: SocialAuth + token: String clientMutationId: String } -input LikePackageInput { - packageId: ID! - clientMutationId: String +type SRVRecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + + """The symbolic name of the desired service.""" + service: String! + + """ + The transport protocol of the desired service, usually either TCP or UDP. + """ + protocol: String! + + """The priority of the target host, lower value means more preferred.""" + priority: Int! + + """ + A relative weight for records with the same priority, higher value means higher chance of getting picked. + """ + weight: Int! + port: Int! + + """ + The canonical hostname of the machine providing the service, ending in a dot. + """ + target: String! + + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -type UnlikePackagePayload { - package: Package! - clientMutationId: String +type SSHFPRecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + algorithm: DnsmanagerSshFingerprintRecordAlgorithmChoices! + type: DnsmanagerSshFingerprintRecordTypeChoices! + fingerprint: String! + + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -input UnlikePackageInput { - packageId: ID! - clientMutationId: String +type StripeCustomer { + id: ID! } -type WatchPackagePayload { - package: Package! - clientMutationId: String +type Subscription { + streamLogs( + appVersionId: ID! + + """ + Get logs starting from this timestamp. Takes ISO timestamp in UTC timezone. + """ + startingFromISO: DateTime + + """ + Fetch logs until this timestamp. Takes ISO timestamp in UTC timezone. If specified, the subscription will at this time. + """ + untilISO: DateTime + + """Filter logs by stream""" + streams: [LogStream] + + """Filter logs by instance ids""" + instanceIds: [String] + + """Search logs for this term""" + searchTerm: String + ): Log! + waitOnRepoCreation(repoId: ID!): Boolean! + appIsPublishedFromRepo(repoId: ID!): DeployAppVersion! + packageVersionCreated(publishedBy: ID, ownerId: ID): PackageVersion! + + """Subscribe to package version ready""" + packageVersionReady(packageVersionId: ID!): PackageVersionReadyResponse! + userNotificationCreated(userId: ID!): UserNotificationCreated! } -input WatchPackageInput { - packageId: ID! - clientMutationId: String +type TermsOfService implements Node { + """The ID of the object""" + id: ID! + content: String! + createdAt: DateTime! + viewerHasAccepted: Boolean! } -type UnwatchPackagePayload { - package: Package! - clientMutationId: String +type TXTRecord implements Node & DNSRecordInterface { + createdAt: DateTime! + updatedAt: DateTime! + deletedAt: DateTime + data: String! + + """The ID of the object""" + id: ID! + name: String! + ttl: Int! + dnsClass: String + text: String! + domain: DNSDomain! } -input UnwatchPackageInput { +input UnlikePackageInput { packageId: ID! clientMutationId: String } -type ArchivePackagePayload { +type UnlikePackagePayload { package: Package! clientMutationId: String } -input ArchivePackageInput { +input UnwatchPackageInput { packageId: ID! clientMutationId: String } -type RenamePackagePayload { +type UnwatchPackagePayload { package: Package! clientMutationId: String } -input RenamePackageInput { - packageId: ID! - newName: String! +input UpdateNamespaceCollaboratorInviteRoleInput { + namespaceCollaboratorInviteId: ID! + role: GrapheneRole! clientMutationId: String } -type ChangePackageVersionArchivedStatusPayload { - packageVersion: PackageVersion! +type UpdateNamespaceCollaboratorInviteRolePayload { + collaboratorInvite: NamespaceCollaboratorInvite! clientMutationId: String } -input ChangePackageVersionArchivedStatusInput { - packageVersionId: ID! - isArchived: Boolean +input UpdateNamespaceCollaboratorRoleInput { + namespaceCollaboratorId: ID! + role: GrapheneRole! clientMutationId: String } -type CreateNamespacePayload { - namespace: Namespace! - user: User! +type UpdateNamespaceCollaboratorRolePayload { + collaborator: NamespaceCollaborator! clientMutationId: String } -input CreateNamespaceInput { - name: String! +input UpdateNamespaceInput { + namespaceId: ID! + + """The namespace slug name""" + name: String """The namespace display name""" displayName: String @@ -3634,6 +3540,19 @@ input CreateNamespaceInput { """The namespace avatar""" avatar: String + + """ + The user Twitter (it can be the url, or the handle with or without the @) + """ + twitter: String + + """ + The user Github (it can be the url, or the handle with or without the @) + """ + github: String + + """The user website (it must be a valid url)""" + websiteUrl: String clientMutationId: String } @@ -3642,19 +3561,52 @@ type UpdateNamespacePayload { clientMutationId: String } -input UpdateNamespaceInput { - namespaceId: ID! +input UpdatePackageCollaboratorInviteRoleInput { + packageCollaboratorInviteId: ID! + role: GrapheneRole! + clientMutationId: String +} - """The namespace slug name""" - name: String +type UpdatePackageCollaboratorInviteRolePayload { + collaboratorInvite: PackageCollaboratorInvite! + clientMutationId: String +} - """The namespace display name""" - displayName: String +input UpdatePackageCollaboratorRoleInput { + packageCollaboratorId: ID! + role: GrapheneRole! + clientMutationId: String +} - """The namespace description""" - description: String +type UpdatePackageCollaboratorRolePayload { + collaborator: PackageCollaborator! + clientMutationId: String +} - """The namespace avatar""" +input UpdatePackageInput { + packageId: ID! + + """The package icon""" + icon: String + clientMutationId: String +} + +type UpdatePackagePayload { + package: Package! + clientMutationId: String +} + +input UpdateUserInfoInput { + """The user id""" + userId: ID + + """The user full name""" + fullName: String + + """The user bio""" + bio: String + + """The user avatar""" avatar: String """ @@ -3669,252 +3621,357 @@ input UpdateNamespaceInput { """The user website (it must be a valid url)""" websiteUrl: String + + """The user location""" + location: String clientMutationId: String } -type DeleteNamespacePayload { - success: Boolean! +type UpdateUserInfoPayload { + user: User clientMutationId: String } -input DeleteNamespaceInput { - namespaceId: ID! - clientMutationId: String +enum UploadFormat { + targz + webcv2 + webcv3 } -type InviteNamespaceCollaboratorPayload { - invite: NamespaceCollaboratorInvite! - namespace: Namespace! +input UpsertDNSRecordInput { + kind: RecordKind! + domainId: String! + name: String! + value: String! + ttl: Int + recordId: String + mx: DNSMXExtraInput clientMutationId: String } -input InviteNamespaceCollaboratorInput { - namespaceId: ID! - role: GrapheneRole! - username: String - email: String +type UpsertDNSRecordPayload { + success: Boolean! + record: DNSRecord! clientMutationId: String } -type AcceptNamespaceCollaboratorInvitePayload { - namespaceCollaboratorInvite: NamespaceCollaboratorInvite! +input UpsertDomainFromZoneFileInput { + zoneFile: String! + deleteMissingRecords: Boolean clientMutationId: String } -input AcceptNamespaceCollaboratorInviteInput { - inviteId: ID! +type UpsertDomainFromZoneFilePayload { + success: Boolean! + domain: DNSDomain! clientMutationId: String } -type RemoveNamespaceCollaboratorInvitePayload { - namespace: Namespace! - clientMutationId: String +""" +The `URL` scalar type represents a URL as text, represented as UTF-8 +character sequences. +""" +scalar URL + +type UsageMetric { + variant: MetricType! + value: Float! + unit: MetricUnit! + timestamp: DateTime! +} + +type User implements Node & PackageOwner & Owner { + firstName: String! + lastName: String! + email: String! + dateJoined: DateTime! + + """Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.""" + username: String! + isEmailValidated: Boolean! + bio: String + location: String + websiteUrl: String + + """The ID of the object""" + id: ID! + globalName: String! + globalId: ID! + avatar(size: Int = 80): String! + isViewer: Boolean! + hasUsablePassword: Boolean + fullName: String! + githubUrl: String + twitterUrl: String + companyRole: String + companyDescription: String + publicActivity(offset: Int, before: String, after: String, first: Int, last: Int): ActivityEventConnection! + billing: Billing + waitlist(name: String!): WaitlistMember + namespaces(role: GrapheneRole, offset: Int, before: String, after: String, first: Int, last: Int): NamespaceConnection! + packages(collaborating: Boolean = false, offset: Int, before: String, after: String, first: Int, last: Int): PackageConnection! + apps(collaborating: Boolean = false, sortBy: DeployAppsSortBy, offset: Int, before: String, after: String, first: Int, last: Int): DeployAppConnection! + usageMetrics(forRange: MetricRange!, variant: MetricType!): [UsageMetric]! + domains(offset: Int, before: String, after: String, first: Int, last: Int): DNSDomainConnection! + isStaff: Boolean + packageVersions(offset: Int, before: String, after: String, first: Int, last: Int): PackageVersionConnection! + packageTransfersIncoming(offset: Int, before: String, after: String, first: Int, last: Int): PackageTransferRequestConnection! + packageInvitesIncoming(offset: Int, before: String, after: String, first: Int, last: Int): PackageCollaboratorInviteConnection! + namespaceInvitesIncoming(offset: Int, before: String, after: String, first: Int, last: Int): NamespaceCollaboratorInviteConnection! + apiTokens(before: String, after: String, first: Int, last: Int): APITokenConnection! + notifications(before: String, after: String, first: Int, last: Int): UserNotificationConnection! + dashboardActivity(offset: Int, before: String, after: String, first: Int, last: Int): ActivityEventConnection! + loginMethods: [LoginMethod!]! + githubUser: SocialAuth + githubScopes: [String]! +} + +type UserConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! + + """Contains the nodes in this connection.""" + edges: [UserEdge]! + + """Total number of items in the connection.""" + totalCount: Int +} + +"""A Relay edge containing a `User` and its cursor.""" +type UserEdge { + """The item at the end of the edge""" + node: User + + """A cursor for use in pagination""" + cursor: String! +} + +type UserNotification implements Node { + """The ID of the object""" + id: ID! + icon: String + body: EventBody! + seenState: UserNotificationSeenState! + kind: UserNotificationKind + createdAt: DateTime! +} + +type UserNotificationConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! + + """Contains the nodes in this connection.""" + edges: [UserNotificationEdge]! + hasPendingNotifications: Boolean! + pendingNotificationsCount: Int! +} + +type UserNotificationCreated { + notification: UserNotification + notificationDeletedId: ID } -input RemoveNamespaceCollaboratorInviteInput { - inviteId: ID! - clientMutationId: String +"""A Relay edge containing a `UserNotification` and its cursor.""" +type UserNotificationEdge { + """The item at the end of the edge""" + node: UserNotification + + """A cursor for use in pagination""" + cursor: String! } -type RemoveNamespaceCollaboratorPayload { - namespace: Namespace! - clientMutationId: String -} +union UserNotificationKind = UserNotificationKindPublishedPackageVersion | UserNotificationKindIncomingPackageTransfer | UserNotificationKindIncomingPackageInvite | UserNotificationKindIncomingNamespaceInvite | UserNotificationKindValidateEmail -input RemoveNamespaceCollaboratorInput { - namespaceCollaboratorId: ID! - clientMutationId: String +type UserNotificationKindIncomingNamespaceInvite { + namespaceInvite: NamespaceCollaboratorInvite! } -type UpdateNamespaceCollaboratorRolePayload { - collaborator: NamespaceCollaborator! - clientMutationId: String +type UserNotificationKindIncomingPackageInvite { + packageInvite: PackageCollaboratorInvite! } -input UpdateNamespaceCollaboratorRoleInput { - namespaceCollaboratorId: ID! - role: GrapheneRole! - clientMutationId: String +type UserNotificationKindIncomingPackageTransfer { + packageTransferRequest: PackageTransferRequest! } -type UpdateNamespaceCollaboratorInviteRolePayload { - collaboratorInvite: NamespaceCollaboratorInvite! - clientMutationId: String +type UserNotificationKindPublishedPackageVersion { + packageVersion: PackageVersion! } -input UpdateNamespaceCollaboratorInviteRoleInput { - namespaceCollaboratorInviteId: ID! - role: GrapheneRole! - clientMutationId: String +type UserNotificationKindValidateEmail { + user: User! } -type InvitePackageCollaboratorPayload { - invite: PackageCollaboratorInvite! - package: Package! - clientMutationId: String +enum UserNotificationSeenState { + UNSEEN + SEEN + SEEN_AND_READ } -input InvitePackageCollaboratorInput { - packageName: String! - role: GrapheneRole! - username: String - email: String - clientMutationId: String +enum UserOrderBy { + PACKAGE_COUNT + APP_COUNT + CREATED_DATE } -type AcceptPackageCollaboratorInvitePayload { - packageCollaboratorInvite: PackageCollaboratorInvite! - clientMutationId: String -} +input UsersFilter { + count: Int = 1000 + sortBy: SearchOrderSort = ASC -input AcceptPackageCollaboratorInviteInput { - inviteId: ID! - clientMutationId: String -} + """Filter users by package count.""" + packageCount: CountFilter -type RemovePackageCollaboratorInvitePayload { - package: Package! - clientMutationId: String -} + """Filter users by namespace count.""" + namespaceCount: CountFilter -input RemovePackageCollaboratorInviteInput { - inviteId: ID! - clientMutationId: String -} + """Filter users joined after this date.""" + joinedAfter: DateTime -type UpdatePackageCollaboratorRolePayload { - collaborator: PackageCollaborator! - clientMutationId: String -} + """Filter users joined before this date.""" + joinedBefore: DateTime -input UpdatePackageCollaboratorRoleInput { - packageCollaboratorId: ID! - role: GrapheneRole! - clientMutationId: String + """Order users by field.""" + orderBy: UserOrderBy = CREATED_DATE } -type UpdatePackageCollaboratorInviteRolePayload { - collaboratorInvite: PackageCollaboratorInvite! +input ValidateNonceInput { + id: ID! + secret: String! clientMutationId: String } -input UpdatePackageCollaboratorInviteRoleInput { - packageCollaboratorInviteId: ID! - role: GrapheneRole! +type ValidateNoncePayload { + nonce: Nonce! clientMutationId: String } -type RemovePackageCollaboratorPayload { - package: Package! +input ValidateUserEmailInput { + """The user id""" + userId: ID + challenge: String! clientMutationId: String } -input RemovePackageCollaboratorInput { - packageCollaboratorId: ID! +type ValidateUserEmailPayload { + user: User clientMutationId: String } -type RequestPackageTransferPayload { - package: Package! - wasInstantlyTransferred: Boolean! - packageTransferRequest: PackageTransferRequest +input ValidateUserPasswordInput { + password: String! clientMutationId: String } -input RequestPackageTransferInput { - packageId: ID! - newOwnerId: ID! +type ValidateUserPasswordPayload { + success: Boolean clientMutationId: String } -type AcceptPackageTransferRequestPayload { - package: Package! - packageTransferRequest: PackageTransferRequest! - clientMutationId: String +type Verify { + payload: GenericScalar! } -input AcceptPackageTransferRequestInput { - packageTransferRequestId: ID! - clientMutationId: String -} +type Waitlist implements Node { + name: String! + createdAt: DateTime! + updatedAt: DateTime! -type RemovePackageTransferRequestPayload { - package: Package! - clientMutationId: String + """The ID of the object""" + id: ID! } -input RemovePackageTransferRequestInput { - packageTransferRequestId: ID! - clientMutationId: String -} +type WaitlistMember implements Node { + waitlist: Waitlist! + joinedAt: DateTime! + approvedAt: DateTime -type GenerateBindingsForAllPackagesPayload { - message: String! - clientMutationId: String + """The ID of the object""" + id: ID! + member: Owner! + approved: Boolean! } -input GenerateBindingsForAllPackagesInput { - bindingsGeneratorId: ID - bindingsGeneratorCommand: String +input WatchPackageInput { + packageId: ID! clientMutationId: String } -type MakePackagePublicPayload { +type WatchPackagePayload { package: Package! clientMutationId: String } -input MakePackagePublicInput { - """The ID of the package to make public""" +type WEBCFilesystemItem { + name: String! + checksum: String! + size: Int! + offset: Int! +} + +type WebcImage implements Node { + """The ID of the object""" id: ID! - clientMutationId: String + version: RegistryWebcImageVersionChoices! + fileSize: BigInt! + manifest: JSONString! + volumes: JSONString! + offsets: JSONString! + webcSha256: String! + targzSha256: String + createdAt: DateTime! + updatedAt: DateTime! + webcUrl: String! } -type Subscription { - streamLogs( - appVersionId: ID! +type WebcImageConnection { + """Pagination data for this connection.""" + pageInfo: PageInfo! - """ - Get logs starting from this timestamp. Takes ISO timestamp in UTC timezone. - """ - startingFromISO: DateTime + """Contains the nodes in this connection.""" + edges: [WebcImageEdge]! - """ - Fetch logs until this timestamp. Takes ISO timestamp in UTC timezone. If specified, the subscription will at this time. - """ - untilISO: DateTime + """Total number of items in the connection.""" + totalCount: Int +} - """Filter logs by stream""" - streams: [LogStream] +"""A Relay edge containing a `WebcImage` and its cursor.""" +type WebcImageEdge { + """The item at the end of the edge""" + node: WebcImage - """Filter logs by instance ids""" - instanceIds: [String] + """A cursor for use in pagination""" + cursor: String! +} - """Search logs for this term""" - searchTerm: String - ): Log! - waitOnRepoCreation(repoId: ID!): Boolean! - appIsPublishedFromRepo(repoId: ID!): DeployAppVersion! - packageVersionCreated(publishedBy: ID, ownerId: ID): PackageVersion! +input WebcSourceV1 { + name: String! + namespace: String! + repository: String! = "https://registry.wasmer.wtf" + tag: String + authToken: String +} - """Subscribe to package version ready""" - packageVersionReady(packageVersionId: ID!): PackageVersionReadyResponse! - userNotificationCreated(userId: ID!): UserNotificationCreated! +enum WebcVersion { + V2 + V3 } -type PackageVersionReadyResponse { - state: PackageVersionState! - packageVersion: PackageVersion! - success: Boolean! +input WorkloadRunnerV1 { + webProxy: RunnerWebProxyV1 + wcgi: RunnerWCGIV1 } -enum PackageVersionState { - WEBC_GENERATED - BINDINGS_GENERATED - NATIVE_EXES_GENERATED +input WorkloadRunnerWasmSourceV1 { + webc: WebcSourceV1! } -type UserNotificationCreated { - notification: UserNotification - notificationDeletedId: ID +input WorkloadV1 { + capability: CapabilityMapV1 + name: String = null + runner: WorkloadRunnerV1! +} + +input WorkloadV2 { + source: String! } + diff --git a/lib/backend-api/src/types.rs b/lib/backend-api/src/types.rs index bd481e85272..526a7b133be 100644 --- a/lib/backend-api/src/types.rs +++ b/lib/backend-api/src/types.rs @@ -440,6 +440,7 @@ mod queries { #[derive(cynic::QueryFragment, Serialize, Debug, Clone)] pub struct AppAlias { pub name: String, + pub hostname: String, } #[derive(cynic::QueryVariables, Debug, Clone)]