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
}