GraphQL Schema Reference

In addition to using the Vendia Share CLI, developers can also access all the same functionality directly through the Vendia Share API, a GraphQL-based HTTPS API with the URL https://share.services.vendia.net/share. A copy of the schema is documented below, but developers are encouraged to dynamically retrieve the schema through introspection queries to ensure its up to date.

Note that calls made to the Vendia Share API must be sigv4 signed with AWS credentials assigned to the Vendia user making the request. Other calls will failed authorization.

Vendia Share GraphQL Schema Reference

enum CSPEnum {AWS AZURE GCP IBM ORACLE TENCENT ALICLOUD}
enum StatusEnum {PENDING_REGISTRATION, DEPLOYING, RUNNING, ERROR, UNKNOWN, DESTROYING, DESTROYED, STOPPED}
type Query {
    getUser(userId: String!): User!
    getUni(uni: String!): Uni!
    getNode(uniId: String!, node: String!): Node!
    listUnis(limit: Int, nextToken: String, filter:StatusEnum): ListConnection!
}
type Mutation {
  register(input: UniInput!): String!
  destroy(uni: String!): String!
  reset(uni: String!, logs:Boolean): String!
}
schema {
  query: Query
  mutation: Mutation
}
type User {
    userId: String!
    email: String
    accounts: [Account!]
    domains: [String!]
}
type Account {
    csp: CSPEnum!
    accountId: String!
    userId: String
    org: String
}
type ListConnection {
    unis: [Uni!]
    nextToken: String
    error: String
}
type Uni {
    name: String!
    status: StatusEnum!
    nodes: [Node!]
    # 'schema' is JSON type (must be v.7+ JSON Schema format)
    schema: String!
    # 'initState' is JSON type
    initState: String
    # 'created' is datetime type
    created: String
    error: String # Set iff status == ERROR to report async errors
}
type Node {
    name: String!
    userId: String!
    description: String
    status: StatusEnum!
    userAccount: Account
    region: String
    vendiaAccount: Account
    resources: NodeResources!
}
type NodeResources {
    clientgraphqlurl: String!
    clientgraphqlapikey: String!
    graphqlurl: String!
    graphqlapikey: String!
    sqs: String!
    s3bucketarn: String!
    cognitouserpoolid: String
    cognitouserpoolclientid: String
    cognitoidentitypoolid: String
}
input UniInput {
    name: String!
    # 'schema' is JSON type
    schema: String
    # 'initState' is JSON type
    initState: String
    nodes: [NodeInput!]!
}
input NodeInput {
    name: String!
    description: String
    userId: String!
    region: String
    settings: SettingsInput
}
input SettingsInput {
    # EGRESS - ALL NODE TYPES
    # List of webhook URLs to notify when a block is constructed
    blockReportWebhooks: [String!]
    # List of email addresses to notify when a block is constructed
    blockReportEmails: [String!]

    # EGRESS - AWS NODES ONLY
    # List of SQS queue URLs to notify when a block is constructed
    aws_blockReportSQSQueues: [String!]
    # List of AWS Lambda ARNs to notify when a block is constructed
    aws_blockReportLambdas: [String!]
    # List of Amazon Firehose ARNs to notify when a block is constructed
    aws_blockReportFirehoses: [String!]
    # List of AWS accounts authorized to download Files from the S3 Bucket
    aws_S3ReadAccounts: [String!]

    # INGRESS - AWS NODES ONLY
    aws_SQSIngressAccounts: [String!]
    aws_LambdaIngressAccounts: [String!]

    # SETTINGS
    graphqlAuth: GraphQLAuth
}
input GraphQLAuth {
    authorizerType: String
    authorizerArn: String
}