Skip to main content

Schema

GraphQL Schema

type ChangeRequest {
id: String!
parentPath: String!
projectId: String!
name: String!
rules: [ChangeRequestRule!]!
state: ChangeRequestState!
stateReason: String
results: [BoundaryResult!]
createdAt: String!
createdBy: String!
updatedAt: String!
updatedBy: String!
}

type BoundaryResult {
boundaryAction: BoundaryAction!
boundaryId: String!
boundaryName: String!
isMatch: Boolean!
score: Int
state: ChangeRequestState
message: String
matchingRuleIds: [String!]
}

type ChangeRequestRule {
id: String
action: FirewallAction!
sources: [NetworkObject!]!
destinations: [NetworkObject!]!
services: [ServiceObject!]!
justification: String
comment: String
owner: String
expiration: String
}

enum ChangeRequestState {
Pass
Pending
Fail
Review
}

type ChangeRequestPage {
items: [ChangeRequest!]!
pageInfo: PageInfo!
}

enum BoundaryAction {
Pass
Fail
Score
}

enum FirewallAction {
Allow
Deny
}

type InventoryItemKey {
accountId: String!
region: String!
type: String!
id: String!
}

enum NetworkObjectType {
Any
Cidr
ConnectGroup
InventoryItem
}

interface NetworkObject {
type: NetworkObjectType!
}

type NetworkObjectAny implements NetworkObject {
"@codegen-enum-value: NetworkObjectType.Any"
type: NetworkObjectType!
}

type NetworkObjectCidr implements NetworkObject {
"@codegen-enum-value: NetworkObjectType.Cidr"
type: NetworkObjectType!
cidr: String!
}

type NetworkObjectConnectGroup implements NetworkObject {
"@codegen-enum-value: NetworkObjectType.ConnectGroup"
type: NetworkObjectType!
groupId: String!
}

type NetworkObjectInventoryItem implements NetworkObject {
"@codegen-enum-value: NetworkObjectType.InventoryItem"
type: NetworkObjectType!
itemKey: InventoryItemKey!
}

enum ServiceObjectType {
AllICMPv4
AllICMPv6
AllTCP
AllTraffic
AllUDP
CustomProtocol
ICMPv4
ICMPv6
TCP
UDP
PortRangeSize
}

interface ServiceObject {
type: ServiceObjectType!
}

type ServiceObjectBase implements ServiceObject {
type: ServiceObjectType!
}

type ServiceObjectCustomProtocol implements ServiceObject {
"@codegen-enum-value: ServiceObjectType.CustomProtocol"
type: ServiceObjectType!
protocol: Int!
}

type ServiceObjectIcmpV4 implements ServiceObject {
"@codegen-enum-value: ServiceObjectType.IcmPv4"
type: ServiceObjectType!
icmpType: Int!
icmpCode: Int!
}

type ServiceObjectIcmpV6 implements ServiceObject {
"@codegen-enum-value: ServiceObjectType.IcmPv6"
type: ServiceObjectType!
icmpType: Int!
icmpCode: Int!
}

type ServiceObjectTcp implements ServiceObject {
"@codegen-enum-value: ServiceObjectType.Tcp"
type: ServiceObjectType!
portStart: Int!
portEnd: Int!
}

type ServiceObjectUdp implements ServiceObject {
"@codegen-enum-value: ServiceObjectType.Udp"
type: ServiceObjectType!
portStart: Int!
portEnd: Int!
}

type ServiceObjectPortRangeSize implements ServiceObject {
"@codegen-enum-value: ServiceObjectType.PortRangeSize"
type: ServiceObjectType!
maxSize: Int!
}

type PageInfo {
nextPageKey: String
}

input ChangeRequestInput {
id: String!
name: String!
projectId: String!
rules: [ChangeRequestRuleInput!]!
}

input ChangeRequestRuleInput {
id: String
action: FirewallAction!
sources: [NetworkObjectInput!]!
destinations: [NetworkObjectInput!]!
services: [ServiceObjectInput!]!
justification: String
comment: String
owner: String
expiration: String
}

input InventoryItemKeyInput {
accountId: String!
region: String!
type: String!
id: String!
}

input NetworkObjectInput {
type: NetworkObjectType!
cidr: String
groupId: String
itemKey: InventoryItemKeyInput
}

input ServiceObjectInput {
type: ServiceObjectType!

"CustomProtocol"
protocol: Int

"IcmPv4 & IcmPv6"
icmpType: Int
"IcmPv4 & IcmPv6"
icmpCode: Int

"Tcp & Udp"
portStart: Int
"Tcp & Udp"
portEnd: Int

"PortRangeSize"
maxSize: Int
}

type Query {
changeRequest(id: String!): ChangeRequest
changeRequests(nextPageKey: String, limit: Int): ChangeRequestPage!
}

type Mutation {
deleteChangeRequest(id: String!): String!
saveChangeRequest(input: ChangeRequestInput!): ChangeRequest!
}